History log of /llvm-project/llvm/lib/CodeGen/MachineModuleInfo.cpp (Results 226 – 250 of 252)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# ed203667 16-Jan-2008 Dale Johannesen <dalej@apple.com>

Do not mark EH tables no-dead-strip unless the
associated function is so marked.

llvm-svn: 46088


# f3efadcb 07-Jan-2008 Chris Lattner <sabre@nondot.org>

remove #includage

llvm-svn: 45697


# f3ebc3f3 29-Dec-2007 Chris Lattner <sabre@nondot.org>

Remove attribution from file headers, per discussion on llvmdev.

llvm-svn: 45418


# 030bce7b 19-Dec-2007 Duncan Sands <baldrick@free.fr>

The C++ exception handling personality function wants
to know about calls that cannot throw ('nounwind'):
if such a call does throw for some reason then the
personality will terminate the program. T

The C++ exception handling personality function wants
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

show more ...


# edf07887 17-Dec-2007 Christopher Lamb <christopher.lamb@gmail.com>

Change the PointerType api for creating pointer types. The old functionality of PointerType::get() has become PointerType::getUnqual(), which returns a pointer in the generic address space. The new p

Change the PointerType api for creating pointer types. The old functionality of PointerType::get() has become PointerType::getUnqual(), which returns a pointer in the generic address space. The new prototype of PointerType::get() requires both a type and an address space.

llvm-svn: 45082

show more ...


# cc45c338 30-Nov-2007 Devang Patel <dpatel@apple.com>

Provide a way to update DescGlobals cache directly.

llvm-svn: 44446


Revision tags: llvmorg-2.1.0
# 3c1b7fc0 05-Sep-2007 Duncan Sands <baldrick@free.fr>

Fix PR1628. When exception handling is turned on,
labels are generated bracketing each call (not just
invokes). This is used to generate entries in
the exception table required by the C++ personali

Fix PR1628. When exception handling is turned on,
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

show more ...


# ef5a6542 27-Aug-2007 Duncan Sands <baldrick@free.fr>

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 tri

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).

llvm-svn: 41484

show more ...


# 383a3247 14-Jul-2007 Anton Korobeynikov <asl@math.spbu.ru>

Long live the exception handling!

This patch fills the last necessary bits to enable exceptions
handling in LLVM. Currently only on x86-32/linux.

In fact, this patch adds necessary intrinsics (and

Long live the exception handling!

This patch fills the last necessary bits to enable exceptions
handling in LLVM. Currently only on x86-32/linux.

In fact, this patch adds necessary intrinsics (and their lowering) which
represent really weird target-specific gcc builtins used inside unwinder.

After corresponding llvm-gcc patch will land (easy) exceptions should be
more or less workable. However, exceptions handling support should not be
thought as 'finished': I expect many small and not so small glitches
everywhere.

llvm-svn: 39855

show more ...


# 4836e3a6 05-Jul-2007 Duncan Sands <baldrick@free.fr>

Make sure only one copy of a filter is placed in the
exception handling table if we encounter it multiple
times. Filters could be folded harder than this, but
that would mean a lot more work for not

Make sure only one copy of a filter is placed in the
exception handling table if we encounter it multiple
times. Filters could be folded harder than this, but
that would mean a lot more work for not much gain.

llvm-svn: 37908

show more ...


# f708f73a 02-Jun-2007 Duncan Sands <baldrick@free.fr>

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 defaul

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.

llvm-svn: 37399

show more ...


# c063f5f3 02-Jun-2007 Duncan Sands <baldrick@free.fr>

Integrate exception filter support and exception catch support. This
simplifies the code in DwarfWriter, allows for multiple filters and
makes it trivial to specify filters accompanied by cleanups o

Integrate exception filter support and exception catch support. This
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

show more ...


Revision tags: llvmorg-2.0.0
# 3b327826 23-May-2007 Anton Korobeynikov <asl@math.spbu.ru>

Mark all calls as "could throw", when exceptions are enabled. Emit necessary LP info too. This fixes PR1439

llvm-svn: 37311


# bbaf5544 13-May-2007 Anton Korobeynikov <asl@math.spbu.ru>

Emit multiple common EH frames for multiple (including blank) personality
functions. This partly fixes PR1414: now we're restricted only to one
personality function per eh frame, not per module. Furt

Emit multiple common EH frames for multiple (including blank) personality
functions. This partly fixes PR1414: now we're restricted only to one
personality function per eh frame, not per module. Further work on
"multiple personalities" topic needs representative example.

llvm-svn: 37018

show more ...


# 13da1784 12-May-2007 Anton Korobeynikov <asl@math.spbu.ru>

More DWARF-related things cleanup:
1. Fix PR1380
2. Apply Duncan's patch from PR1410
3. Insert workaround for "one personality function per module" as noted in PR1414
4. Emit correct debug frames for

More DWARF-related things cleanup:
1. Fix PR1380
2. Apply Duncan's patch from PR1410
3. Insert workaround for "one personality function per module" as noted in PR1414
4. Emit correct debug frames for x86/linux. This partly fixes DebugInfo/2006-11-06-StackTrace.cpp: stack trace is
shown correctly, but arguments for function on top of stack are displayed incorrectly.

llvm-svn: 37015

show more ...


# 79a71ec3 11-May-2007 Devang Patel <dpatel@apple.com>

Fix http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20070507/049516.html

llvm-svn: 36998


# ee02c7d2 10-May-2007 Anton Korobeynikov <asl@math.spbu.ru>

Ooops. Some debugging stuff :)

llvm-svn: 36978


# 96142de3 10-May-2007 Anton Korobeynikov <asl@math.spbu.ru>

Allow multiple invokes per landing pad. This (probably) fixes PR1410.

llvm-svn: 36977


# 8c78a0bf 03-May-2007 Devang Patel <dpatel@apple.com>

Drop 'const'

llvm-svn: 36662


# e95c6ad8 02-May-2007 Devang Patel <dpatel@apple.com>

Use 'static const char' instead of 'static const int'.
Due to darwin gcc bug, one version of darwin linker coalesces
static const int, which defauts PassID based pass identification.

llvm-svn: 36652


# 41223586 02-May-2007 Lauro Ramos Venancio <lauro.venancio@gmail.com>

Fix build error.

llvm-svn: 36648


# 09f162ca 01-May-2007 Devang Patel <dpatel@apple.com>

Do not use typeinfo to identify pass in pass manager.

llvm-svn: 36632


# 6458e6ac 01-Mar-2007 Jim Laskey <jlaskey@mac.com>

Collect eh filter info.

llvm-svn: 34804


# 88dd2fd3 21-Feb-2007 Jim Laskey <jlaskey@mac.com>

Add structures used for collecting eh information.

llvm-svn: 34473


# c3de9b4b 01-Feb-2007 Jim Laskey <jlaskey@mac.com>

Support for non-landing pad exception handling.

llvm-svn: 33755


1234567891011