mirror of git://gcc.gnu.org/git/gcc.git
re PR fortran/59706 (ICE with do concurrent and internal subprogram)
PR middle-end/59706 * gimplify.c (gimplify_expr): Use create_tmp_var instead of create_tmp_var_raw. If cond doesn't have integral type, don't add the IFN_ANNOTATE builtin at all. * gfortran.dg/pr59706.f90: New test. * g++.dg/ext/pr59706.C: New test. From-SVN: r206732
This commit is contained in:
parent
a95aef3c12
commit
664ceb1e2c
|
|
@ -1,3 +1,10 @@
|
|||
2014-01-17 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR middle-end/59706
|
||||
* gimplify.c (gimplify_expr): Use create_tmp_var
|
||||
instead of create_tmp_var_raw. If cond doesn't have
|
||||
integral type, don't add the IFN_ANNOTATE builtin at all.
|
||||
|
||||
2014-01-17 Martin Jambor <mjambor@suse.cz>
|
||||
|
||||
PR ipa/59736
|
||||
|
|
|
|||
|
|
@ -7491,7 +7491,14 @@ gimplify_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p,
|
|||
{
|
||||
tree cond = TREE_OPERAND (*expr_p, 0);
|
||||
tree id = TREE_OPERAND (*expr_p, 1);
|
||||
tree tmp = create_tmp_var_raw (TREE_TYPE(cond), NULL);
|
||||
tree type = TREE_TYPE (cond);
|
||||
if (!INTEGRAL_TYPE_P (type))
|
||||
{
|
||||
*expr_p = cond;
|
||||
ret = GS_OK;
|
||||
break;
|
||||
}
|
||||
tree tmp = create_tmp_var (type, NULL);
|
||||
gimplify_arg (&cond, pre_p, EXPR_LOCATION (*expr_p));
|
||||
gimple call = gimple_build_call_internal (IFN_ANNOTATE, 2,
|
||||
cond, id);
|
||||
|
|
|
|||
|
|
@ -1,3 +1,9 @@
|
|||
2014-01-17 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR middle-end/59706
|
||||
* gfortran.dg/pr59706.f90: New test.
|
||||
* g++.dg/ext/pr59706.C: New test.
|
||||
|
||||
2014-01-17 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/59270
|
||||
|
|
|
|||
|
|
@ -0,0 +1,21 @@
|
|||
// PR middle-end/59706
|
||||
// { dg-do compile }
|
||||
|
||||
extern struct S s;
|
||||
struct T { T (); ~T (); int t; } t;
|
||||
|
||||
void
|
||||
foo ()
|
||||
{
|
||||
#pragma GCC ivdep
|
||||
while (s) // { dg-error "could not convert" }
|
||||
;
|
||||
}
|
||||
|
||||
void
|
||||
bar ()
|
||||
{
|
||||
#pragma GCC ivdep
|
||||
while (t) // { dg-error "could not convert" }
|
||||
;
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
! PR middle-end/59706
|
||||
! { dg-do compile }
|
||||
|
||||
integer i
|
||||
do concurrent (i=1:2)
|
||||
end do
|
||||
contains
|
||||
subroutine foo
|
||||
end
|
||||
end
|
||||
Loading…
Reference in New Issue