llvm-mirror/lib/IR
Mark Seaborn 76b70ff14a 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.

llvm-svn: 199180
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 Revert "Give internal classes hidden visibility." 2013-09-11 18:05:11 +00:00
AttributeImpl.h [weak vtables] Remove a bunch of weak vtables 2013-11-19 00:57:56 +00:00
Attributes.cpp Begin adding docs and IR-level support for the inalloca attribute 2013-12-19 02:14:12 +00:00
AutoUpgrade.cpp Debug Info: rename getDebugInfoVersionFromModule to getDebugMetadataVersionFromModule. 2013-12-03 00:12:14 +00:00
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 Add getBitCastOrAddrSpaceCast 2013-12-07 02:58:41 +00:00
ConstantsContext.h Revert "Give internal classes hidden visibility." 2013-09-11 18:05:11 +00:00
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 [DiagnosticPrinter] Use the appropriate method to print a Twine object in a 2013-12-17 22:35:07 +00:00
DIBuilder.cpp Debug info: Implement (rvalue) reference qualifiers for C++11 non-static 2013-12-18 21:48:19 +00:00
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 Add static cast to unsigned char whenever a character classification function is called with a signed char argument, in order to avoid assertions in Windows Debug configuration. 2013-02-12 21:21:59 +00:00
Instruction.cpp Add addrspacecast instruction. 2013-11-15 01:34:59 +00:00
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 Revert "Give internal classes hidden visibility." 2013-09-11 18:05:11 +00:00
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 Add warning capabilities in LLVM. 2013-12-17 17:47:22 +00:00
LLVMContextImpl.h Add warning capabilities in LLVM. 2013-12-17 17:47:22 +00:00
Makefile Actually update the CMake and Makefile builds correctly, and update the 2013-01-02 12:09:16 +00:00
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 [weak vtables] Remove a bunch of weak vtables 2013-11-19 00:57:56 +00:00
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 Use an RWMutex instead of a Mutex in PassRegistry. 2013-07-03 18:38:08 +00:00
SymbolTableListTraitsImpl.h
Type.cpp Mark some Type and EVT methods as LLVM_READONLY. 2013-12-28 16:17:26 +00:00
TypeFinder.cpp TypeFinder: prefer iterative algorithm to keep stack usage low. 2013-10-16 04:10:06 +00:00
Use.cpp Fix Casting 2013-01-14 21:04:37 +00:00
User.cpp
Value.cpp Make it explicit that nulls are not allowed in names. 2013-11-19 21:12:39 +00:00
ValueSymbolTable.cpp
ValueTypes.cpp Add v4f16 to supported value types. 2013-10-03 03:29:21 +00:00
Verifier.cpp [PM] Split DominatorTree into a concrete analysis result object which 2014-01-13 13:07:17 +00:00