[llvm-commits] [llvm] r79039 - in /llvm/trunk: lib/Target/ARM/ARMBaseRegisterInfo.cpp lib/Target/ARM/ARMBaseRegisterInfo.h test/CodeGen/Thumb2/frameless.ll
Evan Cheng
evan.cheng at apple.com
Fri Aug 14 18:30:31 PDT 2009
Yeah sorry, I am fixing it now. Can you manually patch your tree first?
Evan
On Aug 14, 2009, at 6:22 PM, Jim Grosbach wrote:
> Hi Evan,
>
> I'm seeing regressions with this patch applied. For example, the
> eh10.C test in the gcc testsuite (llvm-gcc/gcc/testsuite/g++.old-
> deja/g++.mike/eh10.C) passes before this patch and fails after. The
> stack pointer is being restored improperly, leading to a crash. Not
> sure why.
>
> -Jim
>
> On Aug 14, 2009, at 1:48 PM, Evan Cheng wrote:
>
>> Author: evancheng
>> Date: Fri Aug 14 15:48:13 2009
>> New Revision: 79039
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=79039&view=rev
>> Log:
>> Leaf functions which do not save CSRs can be frameless even with -
>> disable-fp-elim.
>>
>> Added:
>> llvm/trunk/test/CodeGen/Thumb2/frameless.ll
>> Modified:
>> llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.cpp
>> llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.h
>>
>> Modified: llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.cpp?rev=79039&r1=79038&r2=79039&view=diff
>>
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =====================================================================
>> --- llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.cpp (original)
>> +++ llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.cpp Fri Aug 14
>> 15:48:13 2009
>> @@ -440,6 +440,13 @@
>> MFI->isFrameAddressTaken());
>> }
>>
>> +bool ARMBaseRegisterInfo::hasStackFrame(const MachineFunction &MF)
>> const {
>> + const MachineFrameInfo *MFI = MF.getFrameInfo();
>> + if (NoFramePointerElim && MFI->hasCalls())
>> + return true;
>> + return MFI->hasVarSizedObjects() || MFI->isFrameAddressTaken();
>> +}
>> +
>> /// estimateStackSize - Estimate and return the size of the frame.
>> static unsigned estimateStackSize(MachineFunction &MF,
>> MachineFrameInfo *MFI) {
>> const MachineFrameInfo *FFI = MF.getFrameInfo();
>> @@ -589,7 +596,7 @@
>> }
>>
>> bool ExtraCSSpill = false;
>> - if (!CanEliminateFrame || hasFP(MF)) {
>> + if (!CanEliminateFrame || hasStackFrame(MF)) {
>> AFI->setHasStackFrame(true);
>>
>> // If LR is not spilled, but at least one of R4, R5, R6, and R7
>> is spilled.
>>
>> Modified: llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.h
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.h?rev=79039&r1=79038&r2=79039&view=diff
>>
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =====================================================================
>> --- llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.h (original)
>> +++ llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.h Fri Aug 14
>> 15:48:13 2009
>> @@ -89,6 +89,8 @@
>>
>> bool hasFP(const MachineFunction &MF) const;
>>
>> + bool hasStackFrame(const MachineFunction &MF) const;
>> +
>> void processFunctionBeforeCalleeSavedScan(MachineFunction &MF,
>> RegScavenger *RS = NULL)
>> const;
>>
>>
>> Added: llvm/trunk/test/CodeGen/Thumb2/frameless.ll
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Thumb2/frameless.ll?rev=79039&view=auto
>>
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =====================================================================
>> --- llvm/trunk/test/CodeGen/Thumb2/frameless.ll (added)
>> +++ llvm/trunk/test/CodeGen/Thumb2/frameless.ll Fri Aug 14 15:48:13
>> 2009
>> @@ -0,0 +1,6 @@
>> +; RUN: llvm-as < %s | llc -mtriple=thumbv7-apple-darwin -disable-
>> fp-elim | not grep mov
>> +; RUN: llvm-as < %s | llc -mtriple=thumbv7-linux -disable-fp-elim
>> | not grep mov
>> +
>> +define arm_apcscc void @t() nounwind readnone {
>> + ret void
>> +}
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
More information about the llvm-commits
mailing list