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>
|
2014-01-17 Martin Jambor <mjambor@suse.cz>
|
||||||
|
|
||||||
PR ipa/59736
|
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 cond = TREE_OPERAND (*expr_p, 0);
|
||||||
tree id = TREE_OPERAND (*expr_p, 1);
|
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));
|
gimplify_arg (&cond, pre_p, EXPR_LOCATION (*expr_p));
|
||||||
gimple call = gimple_build_call_internal (IFN_ANNOTATE, 2,
|
gimple call = gimple_build_call_internal (IFN_ANNOTATE, 2,
|
||||||
cond, id);
|
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>
|
2014-01-17 Paolo Carlini <paolo.carlini@oracle.com>
|
||||||
|
|
||||||
PR c++/59270
|
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