re PR middle-end/82145 (i386/pr38988.c, i386/pr46254.c, i386/pr55154.c, i386/pr81766...
authorJakub Jelinek <jakub@redhat.com>
Fri, 15 Sep 2017 08:30:28 +0000 (10:30 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Fri, 15 Sep 2017 08:30:28 +0000 (10:30 +0200)
PR target/82145
* postreload.c (reload_cse_simplify_operands): Skip
NOTE_INSN_DELETED_LABEL similarly to skipping CODE_LABEL.

* gcc.target/i386/pr82145.c: New test.

From-SVN: r252791

gcc/ChangeLog
gcc/postreload.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr82145.c [new file with mode: 0644]

index 4ff9f79..4711d4e 100644 (file)
@@ -1,3 +1,9 @@
+2017-09-15  Jakub Jelinek  <jakub@redhat.com>
+
+       PR target/82145
+       * postreload.c (reload_cse_simplify_operands): Skip
+       NOTE_INSN_DELETED_LABEL similarly to skipping CODE_LABEL.
+
 2017-09-15  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/68823
index 4660df2..6026e21 100644 (file)
@@ -409,9 +409,12 @@ reload_cse_simplify_operands (rtx_insn *insn, rtx testreg)
       CLEAR_HARD_REG_SET (equiv_regs[i]);
 
       /* cselib blows up on CODE_LABELs.  Trying to fix that doesn't seem
-        right, so avoid the problem here.  Likewise if we have a constant
-         and the insn pattern doesn't tell us the mode we need.  */
+        right, so avoid the problem here.  Similarly NOTE_INSN_DELETED_LABEL.
+        Likewise if we have a constant and the insn pattern doesn't tell us
+        the mode we need.  */
       if (LABEL_P (recog_data.operand[i])
+         || (NOTE_P (recog_data.operand[i])
+             && NOTE_KIND (recog_data.operand[i]) == NOTE_INSN_DELETED_LABEL)
          || (CONSTANT_P (recog_data.operand[i])
              && recog_data.operand_mode[i] == VOIDmode))
        continue;
index d98cdbf..b47923b 100644 (file)
@@ -1,3 +1,8 @@
+2017-09-15  Jakub Jelinek  <jakub@redhat.com>
+
+       PR target/82145
+       * gcc.target/i386/pr82145.c: New test.
+
 2017-09-15  Paul Thomas  <pault@gcc.gnu.org>
 
        PR fortran/82184
diff --git a/gcc/testsuite/gcc.target/i386/pr82145.c b/gcc/testsuite/gcc.target/i386/pr82145.c
new file mode 100644 (file)
index 0000000..99945da
--- /dev/null
@@ -0,0 +1,12 @@
+/* PR target/82145 */
+/* { dg-do compile { target { pie && lp64 } } } */
+/* { dg-options "-O2 -fpie -mcmodel=large -march=haswell" } */
+
+int l;
+
+int
+main ()
+{
+  l++;
+  return 0;
+}