OSDN Git Service

one important bugfix: PPC32 didn't have both elf and macho support for
authorChris Lattner <sabre@nondot.org>
Sun, 25 Feb 2007 19:20:53 +0000 (19:20 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 25 Feb 2007 19:20:53 +0000 (19:20 +0000)
external symbols and global addresses.  Add the missing ones.

one important workaround: PPCISD::CALL is matched by both PPCcall_ELF
and PPCcall_Macho, disable the _ELF patterns for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34601 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/PowerPC/PPCInstr64Bit.td
lib/Target/PowerPC/PPCInstrInfo.td

index 89e883a..57bb9da 100644 (file)
@@ -102,7 +102,7 @@ let isCall = 1, noResults = 1, PPC970_Unit = 7,
                             
   def BLA8_ELF : IForm<18, 1, 1,
                        (ops aaddr:$func, variable_ops),
-                       "bla $func", BrB, [(PPCcall_ELF (i64 imm:$func))]>;
+                       "bla $func", BrB, [/*(PPCcall_ELF (i64 imm:$func))*/]>;
 }
 
 
@@ -111,12 +111,12 @@ def : Pat<(PPCcall_Macho (i64 tglobaladdr:$dst)),
           (BL8_Macho tglobaladdr:$dst)>;
 def : Pat<(PPCcall_Macho (i64 texternalsym:$dst)),
           (BL8_Macho texternalsym:$dst)>;
-
+/*
 def : Pat<(PPCcall_ELF (i64 tglobaladdr:$dst)),
           (BL8_ELF tglobaladdr:$dst)>;
 def : Pat<(PPCcall_ELF (i64 texternalsym:$dst)),
           (BL8_ELF texternalsym:$dst)>;
-
+*/
 
 //===----------------------------------------------------------------------===//
 // 64-bit SPR manipulation instrs.
index 0f9e9bd..1b96116 100644 (file)
@@ -407,11 +407,11 @@ let isCall = 1, noResults = 1, PPC970_Unit = 7,
   def BLA_ELF : IForm<18, 1, 1,
                       (ops aaddr:$func, variable_ops),
                       "bla $func", BrB,
-                      [(PPCcall_ELF (i32 imm:$func))]>;
+                      [/*(PPCcall_ELF (i32 imm:$func))*/]>;
   def BCTRL_ELF : XLForm_2_ext<19, 528, 20, 0, 1,
                                (ops variable_ops),
                                "bctrl", BrB,
-                               [(PPCbctrl_ELF)]>;
+                               [/*(PPCbctrl_ELF)*/]>;
 }
 
 // DCB* instructions.
@@ -1102,8 +1102,12 @@ def : Pat<(and (rotl GPRC:$in, GPRC:$sh), maskimm32:$imm),
 // Calls
 def : Pat<(PPCcall_Macho (i32 tglobaladdr:$dst)),
           (BL_Macho tglobaladdr:$dst)>;
+def : Pat<(PPCcall_Macho (i32 texternalsym:$dst)),
+          (BL_Macho texternalsym:$dst)>;
+/*def : Pat<(PPCcall_ELF (i32 tglobaladdr:$dst)),
+          (BL_ELF tglobaladdr:$dst)>;
 def : Pat<(PPCcall_ELF (i32 texternalsym:$dst)),
-          (BL_ELF texternalsym:$dst)>;
+          (BL_ELF texternalsym:$dst)>;*/
 
 // Hi and Lo for Darwin Global Addresses.
 def : Pat<(PPChi tglobaladdr:$in, 0), (LIS tglobaladdr:$in)>;