Hi Dale, yes it's just stack alignment. Unfortunately your patch doesn't make any difference. Thanks for thinking about this, Duncan. On Friday 27 June 2008 19:51:00 Dale Johannesen wrote:> On Jun 27, 2008, at 3:11 AMPDT, Duncan Sands wrote: > > FAIL: test/CodeGen/X86/vec_shuffle-10.ll > > Failed with exit(1) at line 3 > > while running: llvm-as < test/CodeGen/X86/vec_shuffle-10.ll | llc - > > march=x86 -mattr=+sse2 | not grep {sub.*esp} > > subl $16, %esp > > subl $16, %esp > > child process exited abnormally > > Is the code actually loading and storing to the stack, or just > allocating space? > If the latter it is probably this patch: > http://llvm.org/viewvc/llvm-project?view=rev&revision=52750 > > Rounding up the stack size does not have to be done if there are no > stack > objects, so that would be the preferred way to fix this. See if this > works for you. > It will be something close to this. > > Index: CodeGen/PrologEpilogInserter.cpp > ==================================================================> --- CodeGen/PrologEpilogInserter.cpp (revision 52829) > +++ CodeGen/PrologEpilogInserter.cpp (working copy) > @@ -464,7 +464,8 @@ > // works. > if (!RegInfo->targetHandlesStackFrameRounding() && > (FFI->hasCalls() || FFI->hasVarSizedObjects() || > - RegInfo->needsStackRealignment(Fn))) { > + (RegInfo->needsStackRealignment(Fn) && > + Offset > std::abs(TFI.getOffsetOfLocalArea())))) { > // If we have reserved argument space for call sites in the > function > // immediately on entry to the current function, count it as > part of the > // overall stack size. > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >
On Jun 30, 2008, at 9:25 AMPDT, Duncan Sands wrote:> Hi Dale, yes it's just stack alignment. Unfortunately > your patch doesn't make any difference. > > Thanks for thinking about this, > > Duncan.OK, the test is not quite right then. This doesn't happen on Darwin so I'm afraid you'll have to debug it. Perhaps testing for (RegInfo->needsStackRealignment(Fn) && FFI->getObjectIndexEnd()!=0) ?> On Friday 27 June 2008 19:51:00 Dale Johannesen wrote: >> On Jun 27, 2008, at 3:11 AMPDT, Duncan Sands wrote: >>> FAIL: test/CodeGen/X86/vec_shuffle-10.ll >>> Failed with exit(1) at line 3 >>> while running: llvm-as < test/CodeGen/X86/vec_shuffle-10.ll | llc - >>> march=x86 -mattr=+sse2 | not grep {sub.*esp} >>> subl $16, %esp >>> subl $16, %esp >>> child process exited abnormally >> >> Is the code actually loading and storing to the stack, or just >> allocating space? >> If the latter it is probably this patch: >> http://llvm.org/viewvc/llvm-project?view=rev&revision=52750 >> >> Rounding up the stack size does not have to be done if there are no >> stack >> objects, so that would be the preferred way to fix this. See if this >> works for you. >> It will be something close to this. >> >> Index: CodeGen/PrologEpilogInserter.cpp >> ==================================================================>> --- CodeGen/PrologEpilogInserter.cpp (revision 52829) >> +++ CodeGen/PrologEpilogInserter.cpp (working copy) >> @@ -464,7 +464,8 @@ >> // works. >> if (!RegInfo->targetHandlesStackFrameRounding() && >> (FFI->hasCalls() || FFI->hasVarSizedObjects() || >> - RegInfo->needsStackRealignment(Fn))) { >> + (RegInfo->needsStackRealignment(Fn) && >> + Offset > std::abs(TFI.getOffsetOfLocalArea())))) { >> // If we have reserved argument space for call sites in the >> function >> // immediately on entry to the current function, count it as >> part of the >> // overall stack size. >> >> _______________________________________________ >> LLVM Developers mailing list >> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >> > >
Hi Dale,> OK, the test is not quite right then. This doesn't happen on Darwin > so I'm > afraid you'll have to debug it. Perhaps testing for > (RegInfo->needsStackRealignment(Fn) && > FFI->getObjectIndexEnd()!=0) > ?yes, that works - thanks! Since I have no idea what this is doing, is it ok if I leave it to you to commit it? Thanks again, Duncan.> > On Friday 27 June 2008 19:51:00 Dale Johannesen wrote: > >> On Jun 27, 2008, at 3:11 AMPDT, Duncan Sands wrote: > >>> FAIL: test/CodeGen/X86/vec_shuffle-10.ll > >>> Failed with exit(1) at line 3 > >>> while running: llvm-as < test/CodeGen/X86/vec_shuffle-10.ll | llc - > >>> march=x86 -mattr=+sse2 | not grep {sub.*esp} > >>> subl $16, %esp > >>> subl $16, %esp > >>> child process exited abnormally > >> > >> Is the code actually loading and storing to the stack, or just > >> allocating space? > >> If the latter it is probably this patch: > >> http://llvm.org/viewvc/llvm-project?view=rev&revision=52750 > >> > >> Rounding up the stack size does not have to be done if there are no > >> stack > >> objects, so that would be the preferred way to fix this. See if this > >> works for you. > >> It will be something close to this. > >> > >> Index: CodeGen/PrologEpilogInserter.cpp > >> ==================================================================> >> --- CodeGen/PrologEpilogInserter.cpp (revision 52829) > >> +++ CodeGen/PrologEpilogInserter.cpp (working copy) > >> @@ -464,7 +464,8 @@ > >> // works. > >> if (!RegInfo->targetHandlesStackFrameRounding() && > >> (FFI->hasCalls() || FFI->hasVarSizedObjects() || > >> - RegInfo->needsStackRealignment(Fn))) { > >> + (RegInfo->needsStackRealignment(Fn) && > >> + Offset > std::abs(TFI.getOffsetOfLocalArea())))) { > >> // If we have reserved argument space for call sites in the > >> function > >> // immediately on entry to the current function, count it as > >> part of the > >> // overall stack size. > >> > >> _______________________________________________ > >> LLVM Developers mailing list > >> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > >> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > >> > > > > > >