llvm-6502/include/llvm
Reid Kleckner ec4d326aad Fix miscompile of MS inline assembly with stack realignment
For stack frames requiring realignment, three pointers may be needed:
- ebp to address incoming arguments
- esi (could be any callee-saved register) to address locals
- esp to address outgoing arguments

We would use esi unconditionally without verifying that it did not
conflict with inline assembly.

This change doesn't do the verification, it simply emits a fatal error
on functions that use stack realignment, dynamic SP adjustments, and
inline assembly.

Because stack realignment is common on Windows, we also no longer assume
that MS inline assembly clobbers esp.  Instead, we analyze the inline
instructions for implicit definitions and check if esp is there.  If so,
we require the use of a base pointer and consider it in the condition
above.

Mostly fixes PR16830, but we could try harder to find a non-conflicting
base pointer.

Reviewers: sunfish

Differential Revision: http://llvm-reviews.chandlerc.com/D1317

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196876 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-10 05:12:23 +00:00
..
ADT ADT: Implement MutableArrayRef::reverse_iterator 2013-12-09 09:04:00 +00:00
Analysis Don't #include heavy Dominators.h file in LoopInfo.h. This change reduces 2013-12-07 21:20:17 +00:00
Assembly
Bitcode Add addrspacecast instruction. 2013-11-15 01:34:59 +00:00
CodeGen Fix miscompile of MS inline assembly with stack realignment 2013-12-10 05:12:23 +00:00
Config Update to reflect the next release. 2013-11-20 10:10:50 +00:00
DebugInfo DWARF parser: Use ArrayRef to represent form sizes and simplify DWARFDIE::extractFast() interface. No functionality change. 2013-10-28 23:41:49 +00:00
ExecutionEngine Whitespace cleanups. 2013-12-07 11:21:42 +00:00
IR [AArch64] Refactor the NEON scalar reduce pairwise intrinsics, so that they use 2013-12-09 22:47:38 +00:00
IRReader
LTO Use a more direct check for finding out the file type. 2013-12-09 20:26:40 +00:00
MC Fix a crash that occurs when PWD is invalid. 2013-12-10 04:39:09 +00:00
Object Object/COFF: Add export table entry structs. 2013-12-06 01:06:04 +00:00
Option Option parsing: support case-insensitive option matching. 2013-08-28 20:04:31 +00:00
Support llvm-cov: Added -a option for block data. 2013-12-10 01:02:07 +00:00
TableGen Speling fixes. 2013-10-22 15:18:03 +00:00
Target Add a RequireStructuredCFG Field to TargetMachine. 2013-12-07 01:49:19 +00:00
Transforms Fix a narrowing warning due to a type mismatch (size_t vs uint64). 2013-12-06 23:09:24 +00:00
AutoUpgrade.h Debug Info: drop debug info via upgrading path if version number does not match. 2013-12-02 21:29:56 +00:00
CMakeLists.txt
DebugInfo.h Debug Info: rename getDebugInfoVersionFromModule to getDebugMetadataVersionFromModule. 2013-12-03 00:12:14 +00:00
DIBuilder.h DebugInfo: Simplify a few more explicit constructions, underconstrained types, and make DIType(MDNode*) explicit like all the other DI* node ctors. 2013-11-18 23:33:32 +00:00
GVMaterializer.h Use error_code in GVMaterializer. 2013-11-05 19:36:34 +00:00
InitializePasses.h [PM] Split the CallGraph out from the ModulePass which creates the 2013-11-26 04:19:30 +00:00
InstVisitor.h Add addrspacecast instruction. 2013-11-15 01:34:59 +00:00
LinkAllIR.h
LinkAllPasses.h Add a Scalarizer pass. 2013-11-22 16:58:05 +00:00
Linker.h Add a 'deleteModule' method to the Linker class. 2013-10-16 08:59:57 +00:00
Pass.h
PassAnalysisSupport.h
PassManager.h Move the old pass manager infrastructure into a legacy namespace and 2013-11-09 12:26:54 +00:00
PassRegistry.h
PassSupport.h