- Aug 27, 2007
-
-
Duncan Sands authored
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
-
- Jul 14, 2007
-
-
Anton Korobeynikov authored
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
-
- Jul 05, 2007
-
-
Duncan Sands authored
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
-
- Jun 02, 2007
-
-
Duncan Sands authored
(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
-
Duncan Sands authored
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
-
- May 23, 2007
-
-
Anton Korobeynikov authored
Mark all calls as "could throw", when exceptions are enabled. Emit necessary LP info too. This fixes PR1439 llvm-svn: 37311
-
- May 13, 2007
-
-
Anton Korobeynikov authored
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
-
Anton Korobeynikov authored
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
-
- May 12, 2007
-
-
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20070507/049516.htmlDevang Patel authored
llvm-svn: 36998
-
- May 11, 2007
-
-
Anton Korobeynikov authored
llvm-svn: 36978
-
Anton Korobeynikov authored
llvm-svn: 36977
-
- May 03, 2007
-
-
Devang Patel authored
llvm-svn: 36662
-
- May 02, 2007
-
-
Devang Patel authored
Due to darwin gcc bug, one version of darwin linker coalesces static const int, which defauts PassID based pass identification. llvm-svn: 36652
-
Lauro Ramos Venancio authored
llvm-svn: 36648
-
- May 01, 2007
-
-
Devang Patel authored
llvm-svn: 36632
-
- Mar 01, 2007
-
-
Jim Laskey authored
llvm-svn: 34804
-
- Feb 21, 2007
-
-
Jim Laskey authored
llvm-svn: 34473
-
- Feb 01, 2007
-
-
Jim Laskey authored
llvm-svn: 33755
-
- Jan 30, 2007
-
-
Jim Laskey authored
llvm-svn: 33641
-
- Jan 26, 2007
-
-
Jim Laskey authored
llvm-svn: 33552
-
Jim Laskey authored
llvm-svn: 33537
-
- Jan 24, 2007
-
-
Jim Laskey authored
by value so that clean up is less confusing (these vectors tend to be small.) llvm-svn: 33488
-
- Jan 12, 2007
-
-
Reid Spencer authored
recommended that getBoolValue be replaced with getZExtValue and that get(bool) be replaced by get(const Type*, uint64_t). This implements those changes. llvm-svn: 33110
-
- Jan 11, 2007
-
-
Reid Spencer authored
llvm-svn: 33076
-
Zhou Sheng authored
Merge ConstantIntegral and ConstantBool into ConstantInt. Remove ConstantIntegral and ConstantBool from LLVM. llvm-svn: 33073
-
- Jan 03, 2007
-
-
Jim Laskey authored
llvm-svn: 32835
-
- Dec 31, 2006
-
-
Reid Spencer authored
Three changes: 1. Convert signed integer types to signless versions. 2. Implement the @sext and @zext parameter attributes. Previously the type of an function parameter was used to determine whether it should be sign extended or zero extended before the call. This information is now communicated via the function type's parameter attributes. 3. The interface to LowerCallTo had to be changed in order to accommodate the parameter attribute information. Although it would have been convenient to pass in the FunctionType itself, there isn't always one present in the caller. Consequently, a signedness indication for the result type and for each parameter was provided for in the interface to this method. All implementations were changed to make the adjustment necessary. llvm-svn: 32788
-
- Dec 12, 2006
-
-
Reid Spencer authored
llvm-svn: 32460
-
- Dec 07, 2006
-
-
Bill Wendling authored
llvm-svn: 32320
-
- Nov 30, 2006
-
-
Jim Laskey authored
llvm-svn: 32045
-
Jim Laskey authored
llvm-svn: 32036
-
- Nov 27, 2006
-
-
Reid Spencer authored
The long awaited CAST patch. This introduces 12 new instructions into LLVM to replace the cast instruction. Corresponding changes throughout LLVM are provided. This passes llvm-test, llvm/test, and SPEC CPUINT2000 with the exception of 175.vpr which fails only on a slight floating point output difference. llvm-svn: 31931
-
- Nov 08, 2006
-
-
Jim Laskey authored
llvm-svn: 31549
-
- Nov 07, 2006
-
-
Jim Laskey authored
llvm-svn: 31516
-
Jim Laskey authored
llvm-svn: 31514
-
Jim Laskey authored
llvm-svn: 31512
-
Jim Laskey authored
empty ranges. 2. Reorg how MachineDebugInfo maintains changes to debug labels. 3. Have dwarf writer use debug label info to simplify scopes and source line coorespondence. 4. Revert the merging of compile units until I can get the bugs ironed out. llvm-svn: 31507
-
- Nov 06, 2006
-
-
Jim Laskey authored
llvm-svn: 31474
-
- Oct 24, 2006
-
-
Jim Laskey authored
llvm-svn: 31152
-
- Oct 23, 2006
-
-
Jim Laskey authored
llvm-svn: 31129
-