Fix PR1761 by not printing (rip) suffix when in -static mode.
authorChris Lattner <sabre@nondot.org>
Sun, 4 Nov 2007 19:23:28 +0000 (19:23 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 4 Nov 2007 19:23:28 +0000 (19:23 +0000)
Evan, please review this.

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

lib/Target/X86/X86ATTAsmPrinter.cpp
test/CodeGen/X86/2007-11-04-rip-immediate-constant.ll [new file with mode: 0644]

index cc4252fc47c23aeda7873a3fe7bdc4f33f7641eb..d8046edc89cd8d2d1a873ee23957c51e6f3f678f 100644 (file)
@@ -361,7 +361,8 @@ void X86ATTAsmPrinter::printOperand(const MachineInstr *MI, unsigned OpNo,
           O << "@GOT";
         else
           O << "@GOTOFF";
-      } else if (Subtarget->isPICStyleRIPRel() && !NotRIPRel) {
+      } else if (Subtarget->isPICStyleRIPRel() && !NotRIPRel &&
+                 TM.getRelocationModel() != Reloc::Static) {
         if ((GV->isDeclaration() ||
              GV->hasWeakLinkage() ||
              GV->hasLinkOnceLinkage()) &&
diff --git a/test/CodeGen/X86/2007-11-04-rip-immediate-constant.ll b/test/CodeGen/X86/2007-11-04-rip-immediate-constant.ll
new file mode 100644 (file)
index 0000000..de33c61
--- /dev/null
@@ -0,0 +1,11 @@
+; RUN: llvm-as < %s | llc -relocation-model=static | grep {foo _str$}
+; PR1761
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"
+target triple = "x86_64-apple-darwin8"
+@str = internal constant [12 x i8] c"init/main.c\00"           ; <[12 x i8]*> [#uses=1]
+
+define i32 @unknown_bootoption() {
+entry:
+       tail call void asm sideeffect "foo ${0:c}\0A", "i,~{dirflag},~{fpsr},~{flags}"( i8* getelementptr ([12 x i8]* @str, i32 0, i64 0) )
+       ret i32 undef
+}