mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-12 02:33:33 +00:00
Don't track max alignment during stack object allocations since they can be deleted later. Let PEI compute it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47668 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
e90a615f37
commit
be680dcea6
@ -305,9 +305,6 @@ public:
|
||||
/// a postive identifier to represent it.
|
||||
///
|
||||
int CreateStackObject(uint64_t Size, unsigned Alignment) {
|
||||
// Keep track of the maximum alignment.
|
||||
if (MaxAlignment < Alignment) MaxAlignment = Alignment;
|
||||
|
||||
assert(Size != 0 && "Cannot allocate zero size stack objects!");
|
||||
Objects.push_back(StackObject(Size, Alignment, -1));
|
||||
return Objects.size()-NumFixedObjects-1;
|
||||
@ -331,7 +328,6 @@ public:
|
||||
///
|
||||
int CreateVariableSizedObject() {
|
||||
HasVarSizedObjects = true;
|
||||
if (MaxAlignment < 1) MaxAlignment = 1;
|
||||
Objects.push_back(StackObject(0, 1, -1));
|
||||
return Objects.size()-NumFixedObjects-1;
|
||||
}
|
||||
|
@ -475,8 +475,7 @@ void PEI::calculateFrameObjectOffsets(MachineFunction &Fn) {
|
||||
|
||||
// Remember the required stack alignment in case targets need it to perform
|
||||
// dynamic stack alignment.
|
||||
assert(FFI->getMaxAlignment() == MaxAlign &&
|
||||
"Stack alignment calculation broken!");
|
||||
FFI->setMaxAlignment(MaxAlign);
|
||||
}
|
||||
|
||||
|
||||
|
33
test/CodeGen/X86/2008-02-27-PEICrash.ll
Normal file
33
test/CodeGen/X86/2008-02-27-PEICrash.ll
Normal file
@ -0,0 +1,33 @@
|
||||
; RUN: llvm-as < %s | llc -march=x86 -mattr=+sse2
|
||||
|
||||
define i64 @__divsc3(float %a, float %b, float %c, float %d) nounwind readnone {
|
||||
entry:
|
||||
br i1 false, label %bb56, label %bb33
|
||||
|
||||
bb33: ; preds = %entry
|
||||
br label %bb56
|
||||
|
||||
bb56: ; preds = %bb33, %entry
|
||||
%tmp36.pn = phi float [ 0.000000e+00, %bb33 ], [ 0.000000e+00, %entry ] ; <float> [#uses=1]
|
||||
%b.pn509 = phi float [ %b, %bb33 ], [ %a, %entry ] ; <float> [#uses=1]
|
||||
%a.pn = phi float [ %a, %bb33 ], [ %b, %entry ] ; <float> [#uses=1]
|
||||
%tmp41.pn508 = phi float [ 0.000000e+00, %bb33 ], [ 0.000000e+00, %entry ] ; <float> [#uses=1]
|
||||
%tmp51.pn = phi float [ 0.000000e+00, %bb33 ], [ %a, %entry ] ; <float> [#uses=1]
|
||||
%tmp44.pn = mul float %tmp36.pn, %b.pn509 ; <float> [#uses=1]
|
||||
%tmp46.pn = add float %tmp44.pn, %a.pn ; <float> [#uses=1]
|
||||
%tmp53.pn = sub float 0.000000e+00, %tmp51.pn ; <float> [#uses=1]
|
||||
%x.0 = fdiv float %tmp46.pn, %tmp41.pn508 ; <float> [#uses=1]
|
||||
%y.0 = fdiv float %tmp53.pn, 0.000000e+00 ; <float> [#uses=1]
|
||||
br i1 false, label %bb433, label %bb98
|
||||
|
||||
bb98: ; preds = %bb56
|
||||
%tmp102 = mul float 0.000000e+00, %a ; <float> [#uses=1]
|
||||
%tmp106 = mul float 0.000000e+00, %b ; <float> [#uses=1]
|
||||
br label %bb433
|
||||
|
||||
bb433: ; preds = %bb98, %bb56
|
||||
%x.1 = phi float [ %tmp102, %bb98 ], [ %x.0, %bb56 ] ; <float> [#uses=0]
|
||||
%y.1 = phi float [ %tmp106, %bb98 ], [ %y.0, %bb56 ] ; <float> [#uses=1]
|
||||
%tmp460 = add float %y.1, 0.000000e+00 ; <float> [#uses=0]
|
||||
ret i64 0
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user