i386.c (legitimate_pic_address_disp_p): Allow interger-constant displacement for...
authorKai Tietz <ktietz@redhat.com>
Thu, 16 Feb 2012 18:18:03 +0000 (19:18 +0100)
committerKai Tietz <ktietz@gcc.gnu.org>
Thu, 16 Feb 2012 18:18:03 +0000 (19:18 +0100)
        * config/i386/i386.c (legitimate_pic_address_disp_p): Allow
        interger-constant displacement for UNSPEC_PCREL.

From-SVN: r184313

gcc/ChangeLog
gcc/config/i386/i386.c

index 4ba6cbf9b6dda0764f9b2c3b1d339df0e6c1caa6..a75204cd69a12a59189de3ec7b3e3f1b724033d7 100644 (file)
@@ -1,3 +1,8 @@
+2012-02-16  Kai Tietz  <ktietz@redhat.com>
+
+       * config/i386/i386.c (legitimate_pic_address_disp_p): Allow
+       interger-constant displacement for UNSPEC_PCREL.
+
 2012-02-16  Jakub Jelinek  <jakub@redhat.com>
 
        PR rtl-optimization/52208
index fad5e66d9c91bad0fe07d7351db7f3c559fc66bc..7c5ed4da5790d791d4eff07ca8096139a0ead9fd 100644 (file)
@@ -11823,6 +11823,13 @@ legitimate_pic_address_disp_p (rtx disp)
             break;
          if (GET_CODE (op0) == LABEL_REF)
            return true;
+         if (GET_CODE (op0) == CONST
+             && GET_CODE (XEXP (op0, 0)) == UNSPEC
+             && XINT (XEXP (op0, 0), 1) == UNSPEC_PCREL)
+           return true;
+         if (GET_CODE (op0) == UNSPEC
+             && XINT (op0, 1) == UNSPEC_PCREL)
+           return true;
          if (GET_CODE (op0) != SYMBOL_REF)
            break;
          /* FALLTHRU */