llvm-6502/include/llvm
Duncan Sands 6590b0457c There is an impedance matching problem between LLVM and
gcc exception handling: if an exception unwinds through
an invoke, then execution must branch to the invoke's
unwind target.  We previously tried to enforce this by
appending a cleanup action to every selector, however
this does not always work correctly due to an optimization
in the C++ unwinding runtime: if only cleanups would be
run while unwinding an exception, then the program just
terminates without actually executing the cleanups, as
invoke semantics would require.  I was hoping this
wouldn't be a problem, but in fact it turns out to be the
cause of all the remaining failures in the LLVM testsuite
(these also fail with -enable-correct-eh-support, so turning
on -enable-eh didn't make things worse!).  Instead we need
to append a full-blown catch-all to the end of each
selector.  The correct way of doing this depends on the
personality function, i.e. it is language dependent, so
can only be done by gcc.  Thus this patch which generalizes
the eh.selector intrinsic so that it can handle all possible
kinds of action table entries (before it didn't accomodate
cleanups): now 0 indicates a cleanup, and filters have to be
specified using the number of type infos plus one rather than
the number of type infos.  Related gcc patches will cause
Ada to pass a cleanup (0) to force the selector to always
fire, while C++ will use a C++ catch-all (null).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41484 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-27 15:47:50 +00:00
..
ADT Add explicit keywords and remove spurious trailing semicolons. 2007-08-27 14:50:10 +00:00
Analysis No need to hardcode SmallVector size. 2007-08-21 16:39:43 +00:00
Assembly Change casts from old style to new style. This helps document the details 2007-08-12 08:12:35 +00:00
Bitcode Fix minor doxygen nits. 2007-08-05 20:06:04 +00:00
CodeGen There is an impedance matching problem between LLVM and 2007-08-27 15:47:50 +00:00
Config Fix PR1606: 2007-08-17 05:44:59 +00:00
Debugger
ExecutionEngine
Support Add explicit keywords and remove spurious trailing semicolons. 2007-08-27 14:50:10 +00:00
System Fix minor doxygen nits. 2007-08-05 20:06:04 +00:00
Target Add explicit keywords and remove spurious trailing semicolons. 2007-08-27 14:50:10 +00:00
Transforms Add utility to clone loops. 2007-08-10 17:59:47 +00:00
AbstractTypeUser.h
Argument.h
AutoUpgrade.h This is the patch to provide clean intrinsic function overloading support in LLVM. It cleans up the intrinsic definitions and generally smooths the process for more complicated intrinsic writing. It will be used by the upcoming atomic intrinsics as well as vector and float intrinsics in the future. 2007-08-04 01:51:18 +00:00
BasicBlock.h
CallGraphSCCPass.h
CallingConv.h
Constant.h
Constants.h Change internal representation of ConstantFP to use APFloat. 2007-08-24 00:56:33 +00:00
DerivedTypes.h Fix comments about vectors to use the current wording. 2007-07-16 14:29:03 +00:00
Function.h clarify precedence, no functionality change. 2007-08-20 21:31:08 +00:00
GlobalAlias.h
GlobalValue.h Change casts from old style to new style. This helps document the details 2007-08-12 08:12:35 +00:00
GlobalVariable.h
InlineAsm.h
InstrTypes.h sink clone() down the class hierarchy from CmpInst into ICmpInst/FCmpInst. 2007-08-24 20:48:18 +00:00
Instruction.def
Instruction.h
Instructions.h sink clone() down the class hierarchy from CmpInst into ICmpInst/FCmpInst. 2007-08-24 20:48:18 +00:00
IntrinsicInst.h
Intrinsics.h
Intrinsics.td Add MVT::fAny for overloading intrinsics on floating-point types. 2007-08-16 21:57:19 +00:00
IntrinsicsPowerPC.td
IntrinsicsX86.td Adding SSSE3 intrinsics. 2007-08-10 06:22:27 +00:00
LinkAllPasses.h Begin loop index split pass. 2007-08-07 00:25:56 +00:00
LinkAllVMCore.h
Linker.h Fix minor doxygen nits. 2007-08-05 20:06:04 +00:00
LinkTimeOptimizer.h
Module.h
ModuleProvider.h
ParameterAttributes.h Support for trampolines, except for X86 codegen which is 2007-07-27 12:58:54 +00:00
Pass.h Change casts from old style to new style. This helps document the details 2007-08-12 08:12:35 +00:00
PassAnalysisSupport.h
PassManager.h Fix pastos in comments for doFinalization functions. 2007-07-30 14:51:13 +00:00
PassManagers.h Change casts from old style to new style. This helps document the details 2007-08-12 08:12:35 +00:00
PassSupport.h Change casts from old style to new style. This helps document the details 2007-08-12 08:12:35 +00:00
SymbolTableListTraits.h Change casts from old style to new style. This helps document the details 2007-08-12 08:12:35 +00:00
Type.h Add Type::isIntOrIntVector, like Type::isFPOrFPVector. 2007-08-20 19:25:59 +00:00
TypeSymbolTable.h Properly initialize value :) 2007-07-19 15:32:47 +00:00
Use.h
User.h
Value.h add Value::getNameStart/getNameLen() accessors. 2007-08-10 15:34:35 +00:00
ValueSymbolTable.h