Fix PR8201: Update the code to call via X86::CALL64pcrel32 in the 64-bit case.
authorCameron Esfahani <dirty@apple.com>
Wed, 22 Sep 2010 22:35:21 +0000 (22:35 +0000)
committerCameron Esfahani <dirty@apple.com>
Wed, 22 Sep 2010 22:35:21 +0000 (22:35 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114597 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86RegisterInfo.cpp
test/CodeGen/X86/win_chkstk.ll

index 3654f4e5091a495d411755be0ec6878691e27428..94aadd11f79ce3cf1f2f5e6823d3c65dc9bbaa96 100644 (file)
@@ -1086,10 +1086,11 @@ void X86RegisterInfo::emitPrologue(MachineFunction &MF) const {
 
     const char *StackProbeSymbol =
       Subtarget->isTargetWindows() ? "_chkstk" : "_alloca";
+    unsigned CallOp = Is64Bit ? X86::CALL64pcrel32 : X86::CALLpcrel32;
     if (!isEAXAlive) {
       BuildMI(MBB, MBBI, DL, TII.get(X86::MOV32ri), X86::EAX)
         .addImm(NumBytes);
-      BuildMI(MBB, MBBI, DL, TII.get(X86::CALLpcrel32))
+      BuildMI(MBB, MBBI, DL, TII.get(CallOp))
         .addExternalSymbol(StackProbeSymbol)
         .addReg(StackPtr,    RegState::Define | RegState::Implicit)
         .addReg(X86::EFLAGS, RegState::Define | RegState::Implicit);
@@ -1102,7 +1103,7 @@ void X86RegisterInfo::emitPrologue(MachineFunction &MF) const {
       // allocated bytes for EAX.
       BuildMI(MBB, MBBI, DL, TII.get(X86::MOV32ri), X86::EAX)
         .addImm(NumBytes - 4);
-      BuildMI(MBB, MBBI, DL, TII.get(X86::CALLpcrel32))
+      BuildMI(MBB, MBBI, DL, TII.get(CallOp))
         .addExternalSymbol(StackProbeSymbol)
         .addReg(StackPtr,    RegState::Define | RegState::Implicit)
         .addReg(X86::EFLAGS, RegState::Define | RegState::Implicit);
index 2933eeb5404b04111dece2232d92214da2aa46c5..c05b85c16f928a98b86df00058fc22c8635b260e 100644 (file)
@@ -15,7 +15,7 @@ entry:
 ; WIN_X32:    calll __chkstk
 ; WIN_X64:    call __chkstk
 ; MINGW_X32:  calll __alloca
-; MINGW_X64:  calll _alloca
+; MINGW_X64:  callq _alloca
 ; LINUX-NOT:  call __chkstk
   %array4096 = alloca [4096 x i8], align 16       ; <[4096 x i8]*> [#uses=0]
   ret i32 0
@@ -34,7 +34,7 @@ entry:
 ; WIN_X64:       ret
 
 ; MINGW_X64:     # BB#0:
-; MINGW_X64-NOT: call _alloca
+; MINGW_X64-NOT: callq _alloca
 ; MINGW_X64:     ret
 
 ; LINUX:         # BB#0: