http://llvm.org/bugs/show_bug.cgi?id=15932

            Bug ID: 15932
           Summary: For large sized parameters ARM compilation crashes
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: Windows NT
            Status: NEW
          Severity: normal
          Priority: P
         Component: Common Code Generator Code
          Assignee: [email protected]
          Reporter: [email protected]
                CC: [email protected]
    Classification: Unclassified

Created attachment 10481
  --> http://llvm.org/bugs/attachment.cgi?id=10481&action=edit
Reduced TC for reproducing the crash

This crash is visible for parameters exceeding the size ((1 << 12) - 1) / 2)
bytes (Ref: ARMFrameLowering::hasReservedCallFrame )

In PEI::replaceFrameIndices
Crash is happening because the assert condition in place checks only for block
level balancing of stack, whereas in current TC's case the balancing is at the
function level.

Going forward the assert condition should be placed at function level, rather
than block level.

Pasting the stack for quick ref:

clang version 3.3 (trunk 181290)
Target: arm--linux-gnueabi
Thread model: posix
 "/home/naveen/svn/build/Release+Asserts/bin/clang" -cc1 -triple
armv4t--linux-gnueabi -S -disable-free -main-file-name arm-crash.c
-mrelocation-model static -mdisable-fp-elim -fmath-errno -mconstructor-aliases
-target-abi aapcs-linux -target-cpu arm7tdmi -mfloat-abi soft -target-feature
+soft-float-abi -target-linker-version 2.22.90.20120924 -v -coverage-file
/home/naveen/temp/arm-crash/t003/arm-crash.s -resource-dir
/home/naveen/svn/build/Release+Asserts/bin/../lib/clang/3.3 -internal-isystem
/usr/local/include -internal-isystem
/home/naveen/svn/build/Release+Asserts/bin/../lib/clang/3.3/include
-internal-externc-isystem /include -internal-externc-isystem /usr/include
-fno-dwarf-directory-asm -fdebug-compilation-dir
/home/naveen/temp/arm-crash/t003 -ferror-limit 19 -fmessage-length 229
-mstackrealign -fno-signed-char -fobjc-runtime=gcc
-fobjc-default-synthesize-properties -fdiagnostics-show-option
-fcolor-diagnostics -backend-option -vectorize-loops -o arm-crash.s -x c
arm-crash.c
clang -cc1 version 3.3 based upon LLVM 3.3svn default target i386-pc-linux-gnu
ignoring nonexistent directory "/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/include
 /home/naveen/svn/build/Release+Asserts/bin/../lib/clang/3.3/include
 /usr/include
End of search list.
clang: /home/naveen/svn/llvm/lib/CodeGen/PrologEpilogInserter.cpp:805: void
llvm::PEI::replaceFrameIndices(llvm::MachineFunction&): Assertion `(SPAdjCount
|| SPAdj == 0) && "Unbalanced call frame setup / destroy pairs?"' failed.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs

Reply via email to