llvm-6502/include/llvm/CodeGen
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
..
AsmPrinter.h Fix minor doxygen nits. 2007-08-05 20:06:04 +00:00
CallingConvLower.h propagate struct size and alignment of byval arguments to the DAG 2007-08-10 14:44:42 +00:00
DwarfWriter.h Landing pad-less eh for PPC. 2007-01-29 18:51:14 +00:00
ELFRelocation.h Implement review feedback. 2007-04-30 23:54:10 +00:00
FileWriters.h Fixed comments. 2007-02-08 06:05:08 +00:00
IntrinsicLowering.h Add explicit keywords. 2007-07-05 20:40:15 +00:00
LinkAllCodegenComponents.h check in the BigBlock local register allocator 2007-06-22 08:27:12 +00:00
LiveInterval.h Add explicit keywords and remove spurious trailing semicolons. 2007-08-27 14:50:10 +00:00
LiveIntervalAnalysis.h Re-implement trivial rematerialization. This allows def MIs whose live intervals that are coalesced to be rematerialized. 2007-08-13 23:45:17 +00:00
LiveVariables.h Don't assume that only Uses can be kills. Defs are marked as kills initially 2007-07-20 23:17:34 +00:00
MachineBasicBlock.h Fix misue of iterator pointing to erased object. Uncovered by 2007-06-29 02:45:24 +00:00
MachineCodeEmitter.h Allow target to specify alignment for function stub. 2006-11-16 20:04:54 +00:00
MachineConstantPool.h Add explicit keywords and remove spurious trailing semicolons. 2007-08-27 14:50:10 +00:00
MachineFrameInfo.h Fix prolific source of 'possible loss of data' warnings. 2007-04-27 14:43:05 +00:00
MachineFunction.h Add explicit keywords and remove spurious trailing semicolons. 2007-08-27 14:50:10 +00:00
MachineFunctionPass.h Make MachineFunctionPass::runOnFunction non-virtual. Subclasses override 2007-07-05 20:39:35 +00:00
MachineInstr.h Remove subreg index from MachineInstr's and also keep vregs as unsigned when adding operands. 2007-07-26 07:00:46 +00:00
MachineInstrBuilder.h Fix 80 col violation. 2007-07-26 07:03:08 +00:00
MachineJumpTableInfo.h Add the 'explicit' keyword to several constructors that accept one 2007-03-23 18:44:11 +00:00
MachineLocation.h Add the 'explicit' keyword to several constructors that accept one 2007-03-23 18:44:11 +00:00
MachineModuleInfo.h There is an impedance matching problem between LLVM and 2007-08-27 15:47:50 +00:00
MachinePassRegistry.h switch the sched unit map over to use a DenseMap instead of std::map. This 2007-02-03 01:34:13 +00:00
MachineRelocation.h Make enum-valued bitfield large enough to avoid interpretation as negative values in VC++. 2007-04-21 16:29:37 +00:00
MachORelocation.h New file for the MachORelocation structure. It doesn't have to be tied to the 2007-02-03 02:36:17 +00:00
Passes.h Implement review feedback. No functionality change. 2007-08-06 16:33:56 +00:00
RegAllocRegistry.h Breaking out specialized classes. 2006-08-02 12:27:50 +00:00
RegisterScavenging.h Add explicit keywords and remove spurious trailing semicolons. 2007-08-27 14:50:10 +00:00
RuntimeLibcalls.h Added O_F32 and O_64 in addition to UO_F32 and UO_64 even though by 2007-01-31 09:26:31 +00:00
SchedGraphCommon.h Added an automatic cast to "std::ostream*" etc. from OStream. We then can 2006-12-17 05:15:13 +00:00
ScheduleDAG.h Instead of adding copyfromreg's to handle physical definitions. Now isel can 2007-08-02 00:28:15 +00:00
SchedulerRegistry.h Breaking out specialized classes. 2006-08-02 12:27:50 +00:00
SelectionDAG.h Generalize MVT::ValueType and associated functions to be able to represent 2007-06-25 16:23:39 +00:00
SelectionDAGISel.h Add explicit keywords and remove spurious trailing semicolons. 2007-08-27 14:50:10 +00:00
SelectionDAGNodes.h Revise per review comments. 2007-08-26 01:18:27 +00:00
SimpleRegisterCoalescing.h Add explicit keywords and remove spurious trailing semicolons. 2007-08-27 14:50:10 +00:00
SSARegMap.h rename DenseMap to IndexedMap. 2007-02-01 05:32:05 +00:00
ValueTypes.h Add MVT::fAny for overloading intrinsics on floating-point types. 2007-08-16 21:57:19 +00:00
ValueTypes.td Add MVT::fAny for overloading intrinsics on floating-point types. 2007-08-16 21:57:19 +00:00