Hello!

With recent developments, there is no need for pic_32bit_operand to be
defined as special predicate with explicit mode checks anymore.
Implicit mode checks (including VIODmode bypass) of normal predicates
work OK now.

2011-07-28  Uros Bizjak  <ubiz...@gmail.com>

        * config/i386/predicates.md (pic_32bit_opreand): Do not define as
        special predicate.  Remove explicit mode checks.

Tested on x86_64-pc-linux-gnu {,-m32}. There is remote chance this
patch breaks x32, so let's alert H.J.

Committed to mainline SVN.

Uros.
Index: predicates.md
===================================================================
--- predicates.md       (revision 176870)
+++ predicates.md       (working copy)
@@ -366,15 +366,12 @@
 
 ;; Return true when operand is PIC expression that can be computed by lea
 ;; operation.
-(define_special_predicate "pic_32bit_operand"
+(define_predicate "pic_32bit_operand"
   (match_code "const,symbol_ref,label_ref")
 {
-  if (GET_MODE (op) != SImode
-      && GET_MODE (op) != DImode)
-    return false;
-
   if (!flag_pic)
     return false;
+
   /* Rule out relocations that translate into 64bit constants.  */
   if (TARGET_64BIT && GET_CODE (op) == CONST)
     {
@@ -386,6 +383,7 @@
              || XINT (op, 1) == UNSPEC_GOT))
        return false;
     }
+
   return symbolic_operand (op, mode);
 })
 

Reply via email to