diff options
| author | Anton Korobeynikov <asl@math.spbu.ru> | 2010-03-06 19:32:29 +0000 | 
|---|---|---|
| committer | Anton Korobeynikov <asl@math.spbu.ru> | 2010-03-06 19:32:29 +0000 | 
| commit | d5e3fd6dc84d0c703875efd541a61a6636985c4a (patch) | |
| tree | e2ed0b48bd4727e9e2ddf47e6ca2487fcb48aba6 /llvm/lib/Target/X86/X86RegisterInfo.cpp | |
| parent | 4c1e4db3ff06417fe01efc8ab659a63c95818f93 (diff) | |
| download | bcm5719-llvm-d5e3fd6dc84d0c703875efd541a61a6636985c4a.tar.gz bcm5719-llvm-d5e3fd6dc84d0c703875efd541a61a6636985c4a.zip | |
Lower dynamic stack allocation on mingw32 to separate instruction.
We cannot use a normal call here since it has extra unmodelled side
effects (it changes stack pointer). This should fix PR5292.
llvm-svn: 97884
Diffstat (limited to 'llvm/lib/Target/X86/X86RegisterInfo.cpp')
| -rw-r--r-- | llvm/lib/Target/X86/X86RegisterInfo.cpp | 6 | 
1 files changed, 4 insertions, 2 deletions
| diff --git a/llvm/lib/Target/X86/X86RegisterInfo.cpp b/llvm/lib/Target/X86/X86RegisterInfo.cpp index 946d6b23c6b..0f4ce37649a 100644 --- a/llvm/lib/Target/X86/X86RegisterInfo.cpp +++ b/llvm/lib/Target/X86/X86RegisterInfo.cpp @@ -1057,7 +1057,8 @@ void X86RegisterInfo::emitPrologue(MachineFunction &MF) const {        BuildMI(MBB, MBBI, DL, TII.get(X86::MOV32ri), X86::EAX)          .addImm(NumBytes);        BuildMI(MBB, MBBI, DL, TII.get(X86::CALLpcrel32)) -        .addExternalSymbol("_alloca"); +        .addExternalSymbol("_alloca") +        .addReg(StackPtr, RegState::Define | RegState::Implicit);      } else {        // Save EAX        BuildMI(MBB, MBBI, DL, TII.get(X86::PUSH32r)) @@ -1068,7 +1069,8 @@ void X86RegisterInfo::emitPrologue(MachineFunction &MF) const {        BuildMI(MBB, MBBI, DL, TII.get(X86::MOV32ri), X86::EAX)          .addImm(NumBytes - 4);        BuildMI(MBB, MBBI, DL, TII.get(X86::CALLpcrel32)) -        .addExternalSymbol("_alloca"); +        .addExternalSymbol("_alloca") +        .addReg(StackPtr, RegState::Define | RegState::Implicit);        // Restore EAX        MachineInstr *MI = addRegOffset(BuildMI(MF, DL, TII.get(X86::MOV32rm), | 

