| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
the start of each of those functions. This makes assemblers unhappy
llvm-svn: 49176
|
|
|
|
| |
llvm-svn: 49096
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
review feedback.
-enable-eh is still accepted but doesn't do anything.
EH intrinsics use Dwarf EH if the target supports that,
and are handled by LowerInvoke otherwise.
The separation of the EH table and frame move data is,
I think, logically figured out, but either one still
causes full EH info to be generated (not sure how to
split the metadata correctly).
MachineModuleInfo::needsFrameInfo is no longer used and
is removed.
llvm-svn: 49064
|
|
|
|
| |
llvm-svn: 49046
|
|
|
|
|
|
|
|
|
|
|
| |
not marked nounwind, or for all functions when -enable-eh
is set, provided the target supports Dwarf EH.
llvm-gcc generates nounwind in the right places; other FEs
will need to do so also. Given such a FE, -enable-eh should
no longer be needed.
llvm-svn: 49006
|
|
|
|
|
|
| |
be relocatable. Describe why .set is needed better.
llvm-svn: 48848
|
|
|
|
| |
llvm-svn: 47765
|
|
|
|
| |
llvm-svn: 46930
|
|
|
|
|
|
| |
llvm.dbg.func.start implies a stoppoint is set. SelectionDAGISel records a new source line but does not create a ISD::LABEL node for this special stoppoint. Asm printer will magically print this label. This ensures nothing is emitted before.
llvm-svn: 46635
|
|
|
|
|
|
|
|
| |
calculate the offset from frame pointer to a stack slot and then storing the delta in a MachineLocation object. The name is bad (it implies a getter), and MRegisterInfo doesn't need to know about MachineLocation.
Replace getLocation() with getFrameIndexOffset() which returns the delta from frame pointer to stack slot. Dwarf writer can then use the information for whatever it wants.
llvm-svn: 46597
|
|
|
|
|
|
| |
associated function is so marked.
llvm-svn: 46088
|
|
|
|
|
|
|
|
|
| |
ShortenEHDataFor64Bits as a not-very-accurate
abstraction to cover all the changes in DwarfWriter.
Some cosmetic changes to Darwin assembly code for
gcc testsuite compatibility.
llvm-svn: 46029
|
|
|
|
|
|
|
| |
because assembler/linker can't cope with weak absolutes.
PR 1880.
llvm-svn: 45811
|
|
|
|
|
|
|
| |
Make MachineInstr::getDesc return a reference instead
of a pointer, since it can never be null.
llvm-svn: 45695
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
that it is cheap and efficient to get.
Move a variety of predicates from TargetInstrInfo into
TargetInstrDescriptor, which makes it much easier to query a predicate
when you don't have TII around. Now you can use MI->getDesc()->isBranch()
instead of going through TII, and this is much more efficient anyway. Not
all of the predicates have been moved over yet.
Update old code that used MI->getInstrDescriptor()->Flags to use the
new predicates in many places.
llvm-svn: 45674
|
|
|
|
| |
llvm-svn: 45454
|
|
|
|
| |
llvm-svn: 45418
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
to know about calls that cannot throw ('nounwind'):
if such a call does throw for some reason then the
personality will terminate the program. The distinction
between an ordinary call and a nounwind call is that
an ordinary call gets an entry in the exception table
but a nounwind call does not. This patch sets up the
exception table appropriately. One oddity is that
I've chosen to bracket nounwind calls with labels (like
invokes) - the other choice would have been to bracket
ordinary calls with labels. While bracketing
ordinary calls is more natural (because bracketing
by labels would then correspond exactly to getting an
entry in the exception table), I didn't do it because
introducing labels impedes some optimizations and I'm
guessing that ordinary calls occur more often than
nounwind calls. This fixes the gcc filter2 eh test,
at least at -O0 (the inliner needs some tweaking at
higher optimization levels).
llvm-svn: 45197
|
|
|
|
|
|
| |
for Darwin PPC, but it's not fully working yet.
llvm-svn: 44258
|
|
|
|
|
|
|
|
| |
to use different mappings for EH and debug info;
no functional change yet.
Fix warning in X86CodeEmitter.
llvm-svn: 44056
|
|
|
|
|
|
| |
SourceFiles list is fully filled in so that it sees all of the files.
llvm-svn: 42506
|
|
|
|
|
|
| |
add more such code for DIEDwarfLabel::SizeOf and DIEObjectLabel::SizeOf.
llvm-svn: 42435
|
|
|
|
|
|
| |
targets with 64-bit addresses.
llvm-svn: 42434
|
|
|
|
|
|
|
|
| |
other than PPC64. Instead of fixing it, just remove it and fix all the
places that use it to use TargetData::getPointerSize() instead, as there
aren't very many. Most of the references were in DwarfWriter.cpp.
llvm-svn: 42419
|
|
|
|
|
|
| |
such as will happen when .loc directives are used.
llvm-svn: 42277
|
|
|
|
|
|
| |
consistency with the other currently empty sections.
llvm-svn: 42276
|
|
|
|
|
|
| |
use with .loc directives.
llvm-svn: 42275
|
|
|
|
| |
llvm-svn: 42257
|
|
|
|
| |
llvm-svn: 42204
|
|
|
|
|
|
|
|
|
| |
"_-[NSString(local) isNullOrNil]".eh = 0
.no_dead_strip "_-[NSString(local) isNullOrNil]".eh
The ".eh" should be inside the quotes.
llvm-svn: 42074
|
|
|
|
|
|
|
| |
Add a new DenseMapInfo::isEqual method to allow clients to redefine
the equality predicate used when probing the hash table.
llvm-svn: 42042
|
|
|
|
|
|
| |
information for EH.
llvm-svn: 41852
|
|
|
|
|
|
| |
that global stub instead of doing the ".set" thingy we were doing before.
llvm-svn: 41838
|
|
|
|
|
|
|
|
| |
may be the same as the first label for the following
invoke. Remove a micro-optimization which was wrong
in this case.
llvm-svn: 41720
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
labels are generated bracketing each call (not just
invokes). This is used to generate entries in
the exception table required by the C++ personality.
However it gets in the way of tail-merging. This
patch solves the problem by no longer placing labels
around ordinary calls. Instead we generate entries
in the exception table that cover every instruction
in the function that wasn't covered by an invoke
range (the range given by the labels around the invoke).
As an optimization, such entries are only generated for
parts of the function that contain a call, since for
the moment those are the only instructions that can
throw an exception [1]. As a happy consequence, we
now get a smaller exception table, since the same
region can cover many calls. While there, I also
implemented folding of invoke ranges - successive
ranges are merged when safe to do so. Finally, if
a selector contains only a cleanup, there's a special
shorthand for it - place a 0 in the call-site entry.
I implemented this while there. As a result, the
exception table output (excluding filters) is now
optimal - it cannot be made smaller [2]. The
problem with throw filters is that folding them
optimally is hard, and the benefit of folding them is
minimal.
[1] I tested that having trapping instructions (eg
divide by zero) in such a region doesn't cause trouble.
[2] It could be made smaller with the help of higher
layers, eg by having branch folding reorder basic blocks
ending in invokes with the same landing pad so they
follow each other. I don't know if this is worth doing.
llvm-svn: 41718
|
|
|
|
|
|
|
|
| |
syntax of debug info on mingw32. Also, cleanup
some stuff.
llvm-svn: 41675
|
|
|
|
| |
llvm-svn: 41482
|
|
|
|
|
|
|
|
|
| |
.set Lset0,___gxx_personality_v0-.
.long Lset0
on some targets. Make it so!
llvm-svn: 41385
|
|
|
|
| |
llvm-svn: 40854
|
|
|
|
|
|
|
| |
- Split EH and debug infiormation
- Make DwarfWriter more verbose in some cases
llvm-svn: 40481
|
|
|
|
| |
llvm-svn: 40443
|
|
|
|
|
|
|
| |
should be output as unsigned values. Checked against
gcc.
llvm-svn: 39775
|
|
|
|
|
|
|
|
| |
directly: they need to be turned into byte offsets
(often the same, but may not be if there are many
type infos).
llvm-svn: 37942
|
|
|
|
|
|
| |
how much will be used.
llvm-svn: 37515
|
|
|
|
|
|
| |
same, only output one copy of the common part.
llvm-svn: 37470
|
|
|
|
|
|
|
|
| |
simplifies the code in DwarfWriter, allows for multiple filters and
makes it trivial to specify filters accompanied by cleanups or catch-all
specifications (see next patch). What a deal! Patch blessed by Anton.
llvm-svn: 37398
|
|
|
|
|
|
| |
LP info too. This fixes PR1439
llvm-svn: 37311
|
|
|
|
| |
llvm-svn: 37288
|
|
|
|
|
|
| |
it occurs for multiple landing pads.
llvm-svn: 37267
|
|
|
|
|
|
| |
runtime.
llvm-svn: 37104
|