[llvm-commits] [llvm] r47668 - in /llvm/trunk: include/llvm/CodeGen/MachineFrameInfo.h lib/CodeGen/PrologEpilogInserter.cpp test/CodeGen/X86/2008-02-27-PEICrash.ll

Evan Cheng evan.cheng at apple.com
Wed Feb 27 02:05:05 PST 2008


Author: evancheng
Date: Wed Feb 27 04:04:56 2008
New Revision: 47668

URL: http://llvm.org/viewvc/llvm-project?rev=47668&view=rev
Log:
Don't track max alignment during stack object allocations since they can be deleted later. Let PEI compute it.

Added:
    llvm/trunk/test/CodeGen/X86/2008-02-27-PEICrash.ll
Modified:
    llvm/trunk/include/llvm/CodeGen/MachineFrameInfo.h
    llvm/trunk/lib/CodeGen/PrologEpilogInserter.cpp

Modified: llvm/trunk/include/llvm/CodeGen/MachineFrameInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/MachineFrameInfo.h?rev=47668&r1=47667&r2=47668&view=diff

==============================================================================
--- llvm/trunk/include/llvm/CodeGen/MachineFrameInfo.h (original)
+++ llvm/trunk/include/llvm/CodeGen/MachineFrameInfo.h Wed Feb 27 04:04:56 2008
@@ -305,9 +305,6 @@
   /// 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 @@
   ///
   int CreateVariableSizedObject() {
     HasVarSizedObjects = true;
-    if (MaxAlignment < 1) MaxAlignment = 1;
     Objects.push_back(StackObject(0, 1, -1));
     return Objects.size()-NumFixedObjects-1;
   }

Modified: llvm/trunk/lib/CodeGen/PrologEpilogInserter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/PrologEpilogInserter.cpp?rev=47668&r1=47667&r2=47668&view=diff

==============================================================================
--- llvm/trunk/lib/CodeGen/PrologEpilogInserter.cpp (original)
+++ llvm/trunk/lib/CodeGen/PrologEpilogInserter.cpp Wed Feb 27 04:04:56 2008
@@ -475,8 +475,7 @@
 
   // 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);
 }
 
 

Added: llvm/trunk/test/CodeGen/X86/2008-02-27-PEICrash.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/2008-02-27-PEICrash.ll?rev=47668&view=auto

==============================================================================
--- llvm/trunk/test/CodeGen/X86/2008-02-27-PEICrash.ll (added)
+++ llvm/trunk/test/CodeGen/X86/2008-02-27-PEICrash.ll Wed Feb 27 04:04:56 2008
@@ -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
+}





More information about the llvm-commits mailing list