llvm-6502/lib/IR
Mark Seaborn dfa550a176 Fix llc to not reuse spill slots in functions that invoke setjmp()
We need to ensure that StackSlotColoring.cpp does not reuse stack
spill slots in functions that call "returns_twice" functions such as
setjmp(), otherwise this can lead to miscompiled code, because a stack
slot would be clobbered when it's still live.

This was already handled correctly for functions that call setjmp()
(though this wasn't covered by a test), but not for functions that
invoke setjmp().

We fix this by changing callsFunctionThatReturnsTwice() to check for
invoke instructions.

This fixes PR18244.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@199180 91177308-0d34-0410-b5e6-96231b3b80d8
2014-01-14 04:20:01 +00:00
..
AsmWriter.cpp [PM] Rename the IR printing pass header to a more generic and correct 2014-01-12 11:10:32 +00:00
AsmWriter.h
AttributeImpl.h
Attributes.cpp
AutoUpgrade.cpp
BasicBlock.cpp
CMakeLists.txt [PM] Rename this source file to something a bit more generic before 2014-01-09 02:39:45 +00:00
ConstantFold.cpp Fold vector selects with undef elements in the condition. Fixes PR18319. 2013-12-31 19:30:47 +00:00
ConstantFold.h
Constants.cpp
ConstantsContext.h
Core.cpp [PM] Split DominatorTree into a concrete analysis result object which 2014-01-13 13:07:17 +00:00
DataLayout.cpp Fix uninitialized warning in llvm/lib/IR/DataLayout.cpp. 2014-01-13 22:04:55 +00:00
DebugInfo.cpp DebugInfo: Remove dead code, DICompositeType::addMember(DIDescriptor D) 2013-12-27 19:11:52 +00:00
DebugLoc.cpp
DiagnosticInfo.cpp Re-sort all of the includes with ./utils/sort_includes.py so that 2014-01-07 11:48:04 +00:00
DiagnosticPrinter.cpp
DIBuilder.cpp
Dominators.cpp [PM] Split DominatorTree into a concrete analysis result object which 2014-01-13 13:07:17 +00:00
Function.cpp Fix llc to not reuse spill slots in functions that invoke setjmp() 2014-01-14 04:20:01 +00:00
GCOV.cpp Re-sort all of the includes with ./utils/sort_includes.py so that 2014-01-07 11:48:04 +00:00
Globals.cpp Allow addrspacecast in global aliases 2014-01-02 20:55:01 +00:00
GVMaterializer.cpp
InlineAsm.cpp
Instruction.cpp
Instructions.cpp Fix typo in assert message: s/load/store 2013-12-21 00:00:49 +00:00
IntrinsicInst.cpp
IRBuilder.cpp
IRPrintingPasses.cpp [PM] Add module and function printing passes for the new pass manager. 2014-01-12 12:15:39 +00:00
LeakDetector.cpp
LeaksContext.h
LegacyPassManager.cpp [PM] Simplify the interface exposed for IR printing passes. 2014-01-12 11:30:46 +00:00
LLVMBuild.txt
LLVMContext.cpp Add warning capabilities in LLVM. 2013-12-17 17:47:22 +00:00
LLVMContextImpl.cpp
LLVMContextImpl.h
Makefile
Mangler.cpp Remove vestigal bits of MC from the mangler. It no longer uses this, and 2014-01-08 21:59:22 +00:00
Metadata.cpp
Module.cpp Re-remove dead code. 2014-01-09 19:22:07 +00:00
Pass.cpp [PM] Simplify the interface exposed for IR printing passes. 2014-01-12 11:30:46 +00:00
PassManager.cpp [PM] Add names to passes under the new pass manager, and a debug output 2014-01-11 11:52:05 +00:00
PassRegistry.cpp
SymbolTableListTraitsImpl.h Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
Type.cpp Mark some Type and EVT methods as LLVM_READONLY. 2013-12-28 16:17:26 +00:00
TypeFinder.cpp
Use.cpp
User.cpp
Value.cpp
ValueSymbolTable.cpp
ValueTypes.cpp
Verifier.cpp [PM] Split DominatorTree into a concrete analysis result object which 2014-01-13 13:07:17 +00:00