Cleanup and test X86AsmPrinter::printPCRelImm.
authorRafael Espindola <rafael.espindola@gmail.com>
Wed, 27 Nov 2013 06:53:13 +0000 (06:53 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Wed, 27 Nov 2013 06:53:13 +0000 (06:53 +0000)
It is only used for asm printing.

On X86 we put basic block addresses on register before passing them to inline
asm, so the MO_MachineBasicBlock case was dead.

MO_ExternalSymbol was dead since any symbol being passed to inline asm
is represented as MO_GlobalAddress.

The MO_GlobalAddress and MO_Register cases were not tested.

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

lib/Target/X86/X86AsmPrinter.cpp
test/CodeGen/X86/inline-asm.ll

index 12584411509daea8b21bd05bbed02ad7e38517ec..8d8b3bd174aa6507f492e24c18aa7dd07ba86a6f 100644 (file)
@@ -220,11 +220,7 @@ void X86AsmPrinter::printPCRelImm(const MachineInstr *MI, unsigned OpNo,
   case MachineOperand::MO_Immediate:
     O << MO.getImm();
     return;
-  case MachineOperand::MO_MachineBasicBlock:
-    O << *MO.getMBB()->getSymbol();
-    return;
   case MachineOperand::MO_GlobalAddress:
-  case MachineOperand::MO_ExternalSymbol:
     printSymbolOperand(MO, O);
     return;
   }
index d201ebdc85d1340a6ed7470bb3117a1265b6ef70..f12c2600fff3e9ab8f9b4b0931f02a391ec185cb 100644 (file)
@@ -59,3 +59,18 @@ entry:
   %asm = tail call i32 asm sideeffect "", "={ax},i,~{eax},~{flags},~{rax}"(i64 61) nounwind
   ret i32 %asm
 }
+
+@test8_v = global i32 42
+
+define void @test8() {
+  call void asm sideeffect "${0:P}", "i"( i32* @test8_v )
+  ret void
+}
+
+define void @test9() {
+  call void asm sideeffect "${0:P}", "X"( i8* blockaddress(@test9, %bb) )
+  br label %bb
+
+bb:
+  ret void
+}