aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimplify.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2014-01-17 21:55:42 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2014-01-17 21:55:42 +0100
commit664ceb1e2c62338ceacbbc89d3e218f39965c145 (patch)
tree0175ffcfd1d2d531d5e03b3bdd4bb83bded36f60 /gcc/gimplify.c
parenta95aef3c126b193ad4f7cf6bed6c40534236bc0b (diff)
downloadgcc-664ceb1e2c62338ceacbbc89d3e218f39965c145.zip
gcc-664ceb1e2c62338ceacbbc89d3e218f39965c145.tar.gz
gcc-664ceb1e2c62338ceacbbc89d3e218f39965c145.tar.bz2
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
Diffstat (limited to 'gcc/gimplify.c')
-rw-r--r--gcc/gimplify.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/gcc/gimplify.c b/gcc/gimplify.c
index 202d084..9c9998d 100644
--- a/gcc/gimplify.c
+++ b/gcc/gimplify.c
@@ -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);