]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
middle-end/93054 deal with undefs in call gimplification
authorRichard Biener <rguenther@suse.de>
Fri, 14 Feb 2020 08:19:40 +0000 (09:19 +0100)
committerRichard Biener <rguenther@suse.de>
Fri, 14 Feb 2020 10:01:50 +0000 (11:01 +0100)
2020-02-14  Richard Biener  <rguenther@suse.de>

Backport from mainline
2020-01-09  Richard Biener  <rguenther@suse.de>

PR middle-end/93054
* gimplify.c (gimplify_expr): Deal with NOP definitions.

* gcc.dg/pr93054.c: New testcase.

gcc/ChangeLog
gcc/gimplify.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr93054.c [new file with mode: 0644]

index eda6c1fb747c8af9f718ddc925fbc7efdc797bdb..e1a1dc41ac0d9e34ee471f12230a54afd781da52 100644 (file)
@@ -1,3 +1,11 @@
+2020-02-14  Richard Biener  <rguenther@suse.de>
+
+       Backport from mainline
+       2020-01-09  Richard Biener  <rguenther@suse.de>
+
+       PR middle-end/93054
+       * gimplify.c (gimplify_expr): Deal with NOP definitions.
+
 2020-02-14  Richard Biener  <rguenther@suse.de>
 
        Backport from mainline
index c57113cda1db91880fe432a97fbb36613be6d61c..f91ff3aca296404146589a6f8954dbee3c8e0eef 100644 (file)
@@ -13525,7 +13525,8 @@ gimplify_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p,
        {
          /* Avoid the extra copy if possible.  */
          *expr_p = create_tmp_reg (TREE_TYPE (name));
-         gimple_set_lhs (SSA_NAME_DEF_STMT (name), *expr_p);
+         if (!gimple_nop_p (SSA_NAME_DEF_STMT (name)))
+           gimple_set_lhs (SSA_NAME_DEF_STMT (name), *expr_p);
          release_ssa_name (name);
        }
     }
index b096a03ea907db022abd7d702bb8d21e26ea6d08..81d15a747c955e01be3df703452a8a9dac2af1ec 100644 (file)
@@ -1,3 +1,11 @@
+2020-02-14  Richard Biener  <rguenther@suse.de>
+
+       Backport from mainline
+       2020-01-09  Richard Biener  <rguenther@suse.de>
+
+       PR middle-end/93054
+       * gcc.dg/pr93054.c: New testcase.
+
 2020-02-14  Richard Biener  <rguenther@suse.de>
 
        Backport from mainline
diff --git a/gcc/testsuite/gcc.dg/pr93054.c b/gcc/testsuite/gcc.dg/pr93054.c
new file mode 100644 (file)
index 0000000..1d4680d
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+
+__attribute__ ((returns_twice)) int
+bp (int);
+
+__attribute__ ((noreturn)) int
+cb (void)
+{
+  return bp (cb ()); /* { dg-warning "declared .noreturn." } */
+}