Commit 664ceb1e by Jakub Jelinek Committed by Jakub Jelinek

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
parent a95aef3c
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);
......
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
......
// 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" }
;
}
! PR middle-end/59706
! { dg-do compile }
integer i
do concurrent (i=1:2)
end do
contains
subroutine foo
end
end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment