Comments
Patch
===================================================================
@@ -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);
})
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 <ubizjak@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.