llvm-6502/include/llvm/CodeGen
Duncan Sands 09085fe63d The semantics of invoke require that we always jump to the unwind block
(landing pad) when an exception unwinds through the call.  This doesn't
quite match the way the dwarf unwinder works: by default it only jumps to
the landing pad if the catch or filter specification matches, and otherwise
it keeps on unwinding.  There are two ways of specifying to the unwinder
that it should "always" (more on why there are quotes here later) jump to
the landing pad: follow the specification by a 0 typeid, or follow it by
the typeid for the NULL typeinfo.  GCC does the first, and this patch makes
LLVM do the same as gcc.  However there is a problem: the unwinder performs
optimizations based on C++ semantics (it only expects destructors to be
run if the 0 typeid fires - known as "cleanups"), meaning it assumes that no
exceptions will be raised and that the raised exception will be reraised
at the end of the cleanup code.  So if someone writes their own LLVM code
using the exception intrinsics they will get a nasty surprise if they don't
follow these rules.  The other possibility of using the typeid corresponding
to NULL (catch-all) causes the unwinder to make no assumptions, so this is
probably what we should use in the long-run.  However since we are still
having trouble getting exception handling working properly, for the moment
it seems best to closely imitate GCC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37399 91177308-0d34-0410-b5e6-96231b3b80d8
2007-06-02 17:16:06 +00:00
..
AsmPrinter.h Fix the asmprinter so that a globalvalue can specify an explicit alignment 2007-05-31 18:57:45 +00:00
CallingConvLower.h add methods for analysis of call results and return nodes. 2007-02-28 07:09:40 +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
InstrScheduling.h Remove trailing whitespace 2005-04-21 20:39:54 +00:00
IntrinsicLowering.h IntrinsicLowering now requires TargetData. 2007-01-29 17:39:50 +00:00
LinkAllCodegenComponents.h Accidental submission. 2006-12-17 11:13:13 +00:00
LiveInterval.h Add a register allocation preference field; add a method to compute size of a live interval. 2007-04-17 20:25:11 +00:00
LiveIntervalAnalysis.h Fix for PR1406: 2007-05-14 21:10:05 +00:00
LiveVariables.h Eliminate MarkVirtRegAliveInBlock recursion. 2007-05-08 19:00:00 +00:00
MachineBasicBlock.h Move isSuccessor() offline, change it to use std::find. 2007-05-17 23:58:53 +00:00
MachineCodeEmitter.h Allow target to specify alignment for function stub. 2006-11-16 20:04:54 +00:00
MachineConstantPool.h Add the 'explicit' keyword to several constructors that accept one 2007-03-23 18:44:11 +00:00
MachineFrameInfo.h Fix prolific source of 'possible loss of data' warnings. 2007-04-27 14:43:05 +00:00
MachineFunction.h Change UsedPhysRegs from array bool to BitVector to save some space. Setting / getting its states now go through MachineFunction. 2007-04-25 22:10:09 +00:00
MachineFunctionPass.h Do not use typeinfo to identify pass in pass manager. 2007-05-01 21:15:47 +00:00
MachineInstr.h Add missing const qualifiers. 2007-05-29 18:35:22 +00:00
MachineInstrBuilder.h Add the 'explicit' keyword to several constructors that accept one 2007-03-23 18:44:11 +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 The semantics of invoke require that we always jump to the unwind block 2007-06-02 17:16:06 +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 Make tail merging the default, except on powerPC. There was no prior art 2007-05-22 17:14:46 +00:00
RegAllocRegistry.h Breaking out specialized classes. 2006-08-02 12:27:50 +00:00
RegisterScavenging.h Pass call frame setup SP adjustment along to eliminateFrameIndex(). 2007-05-01 08:59:18 +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 switch the VRBaseMap in the scheduler from an std::map to a DenseMap. This 2007-02-04 08:47:20 +00:00
SchedulerRegistry.h Breaking out specialized classes. 2006-08-02 12:27:50 +00:00
SelectionDAG.h PR400 phase 2. Propagate attributed load/store information through DAGs. 2007-04-22 23:15:30 +00:00
SelectionDAGISel.h Drop 'const' 2007-05-03 01:11:54 +00:00
SelectionDAGNodes.h Minor comment cleanups. 2007-05-24 14:36:04 +00:00
SSARegMap.h rename DenseMap to IndexedMap. 2007-02-01 05:32:05 +00:00
ValueTypes.h add a way to make this less brittle 2007-04-28 05:38:52 +00:00
ValueTypes.td For PR1297: 2007-04-01 07:17:45 +00:00