Displaying 20 results from an estimated 4000 matches similar to: "[LLVMdev] RFC: Exception Handling Rewrite"
2011 Jul 23
0
[LLVMdev] RFC: Exception Handling Rewrite
Hi Bill,
Thanks for working on this.
Is there a reference for the function attribute uwtable, or is it to be defined as
part of this effort?
Thanks in advance
Garrison
On Jul 23, 2011, at 1:29, Bill Wendling wrote:
> What? Yet another EH proposal?! This one is different from the others in that
> I'm planning to start implementing this shortly. But I want your feedback! I've
2011 Aug 02
2
[LLVMdev] RFC: Exception Handling Rewrite
On Jul 31, 2011, at 11:06 AM, Duncan Sands wrote:
>> //===--------------------------
>> // The 'landingpad' Instruction
>> //
>>
>> The 'landingpad' instruction replaces the current 'llvm.eh.exception' and
>> 'llvm.eh.selector' intrinsics.
>>
>> // Syntax:
>>
>> %res = landingpad<somety>
2011 Aug 02
0
[LLVMdev] RFC: Exception Handling Rewrite
On Aug 1, 2011, at 11:13 PM, Bill Wendling wrote:
>>> The 'landingpad' instruction replaces the current 'llvm.eh.exception' and
>>> 'llvm.eh.selector' intrinsics.
>>>
>>> // Syntax:
>>>
>>> %res = landingpad<somety> personality<ty> <pers_fn> <clause>+
>>>
>>> where
2011 Aug 02
2
[LLVMdev] RFC: Exception Handling Rewrite
Hi Chris,
>>> Is it intended that "cleanup ty_1, ty_2" potentially be different to
>>> "cleanup ty_1 cleanup ty_2"? Perhaps this is useful for funky personality
>>> functions.
>>>
>> Yeah. One can basically interleave the catches and filters. But having two catch or two filter clauses in a row should be semantically the same as the
2011 Aug 02
0
[LLVMdev] RFC: Exception Handling Rewrite
On Aug 2, 2011, at 10:28 AM, Duncan Sands wrote:
>>>> Is it intended that "cleanup ty_1, ty_2" potentially be different to
>>>> "cleanup ty_1 cleanup ty_2"? Perhaps this is useful for funky personality
>>>> functions.
>>>>
>>> Yeah. One can basically interleave the catches and filters. But having two catch or two filter
2011 Jul 31
0
[LLVMdev] RFC: Exception Handling Rewrite
Hi Bill,
> Please read this proposal and send me your comments, suggestions, and concerns.
this proposal looks great to me. Thanks for working on it. I have a few minor
comments, see below.
> //===--------------------------
> // The 'landingpad' Instruction
> //
>
> The 'landingpad' instruction replaces the current 'llvm.eh.exception' and
>
2011 Jul 23
0
[LLVMdev] RFC: Exception Handling Rewrite
On Fri, Jul 22, 2011 at 10:29 PM, Bill Wendling <wendling at apple.com> wrote:
[...]
> //===--------------------------
> // The 'landingpad' Instruction
> //
>
> The 'landingpad' instruction replaces the current 'llvm.eh.exception' and
> 'llvm.eh.selector' intrinsics.
>
> // Syntax:
>
> %res = landingpad <somety>
2011 Jul 25
0
[LLVMdev] RFC: Exception Handling Rewrite
> %exn.val = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0
> catch i8** @_ZTIi, i8** @_ZTId
> filter i8** @_ZTIPKc
> br label %lpad.split
What is the semantics of filter? Is it undefined reference if an
exception not matching ZTIi, ZTId or ZTIPKc passes by?
Cheers,
Rafael
2010 Dec 01
10
[LLVMdev] RFC: Exception Handling Proposal Revised
This is a revision of the second exception handling proposal I sent out. You can see it here:
http://lists.cs.uiuc.edu/pipermail/llvmdev/2010-November/036484.html
After much discussion, there are some changes to the proposal – some significant and some minor. One major point, this proposal does not address the issue of catching an exception thrown from a non-invoke instruction. However if done
2010 Dec 07
0
[LLVMdev] RFC: Exception Handling Proposal Revised
Hi Bill, there are a couple of things I didn't understand about your proposal,
for example how it interacts with inlining, whether it is feasible to do the
"turn invoke-of-Unwind_Resume into a branch" optimization and also whether in
"resumedest" you still plan to use _Unwind_Resume to continue unwinding up the
stack. Could you please show what the LLVM IR would look like
2015 Apr 16
2
[LLVMdev] Exception filter IR model
Hi,
I have a question about the IR model for SEH filters (as I want to use the same model for CLR filters). In particular, when an outer filter is invoked before entering an inner finally, which piece of IR reflects the filter's side-effects? To take a concrete example, consider this C code:
void foo() {
int x;
__try {
x = 0;
__try {
x = 2;
may_throw();
}
2014 Nov 24
1
[LLVMdev] RFC: How to represent SEH (__try / __except) in LLVM IR
Hi Reid,
I've been working on the outlining code and have a prototype that produces what I want for a simple case.
Now I'm thinking about the heuristics for recognizing the various logical pieces for C++ exception handling code and removing them once they’ve been cloned. I've been working from various comments you've made earlier in this thread, and I'd like to run something
2014 Nov 14
2
[LLVMdev] RFC: How to represent SEH (__try / __except) in LLVM IR
I don’t really have a good enough feeling for the landingpad syntax yet to comment on the most natural way to extend it yet, but creating a synthetic cleanup function to call from the personality function is what I was thinking.
With the current (trunk +/- a couple of weeks) clang, compiling for an “x86_64-pc-windows-msvc” target, I’m seeing a landingpad that looks like this:
lpad:
2011 Sep 27
3
[LLVMdev] How to code catch-all in the new exception handling scheme?
On Sep 25, 2011, at 1:02 AM, Duncan Sands wrote:
> Hi Talin,
>
>> I'm looking at the docs, and while it refers to a "catch-all" clause,
>
> hopefully Bill will get rid of the first reference to "catch-all" since
> that section is inaccurate.
>
I *think* this is now correct. Please check. :)
> it doesn't
>> describe how to construct
2015 Mar 25
2
[LLVMdev] Instruction::mayThrow not handling invoke's?
While improving ADCE, i notice that for
declare i32 @strlen(i8*) readnone
define i32 @test() {
; invoke of pure function should not be deleted!
invoke i32 @strlen( i8* null ) readnone
to label %Cont unwind label %Other ; <i32>:1 [#uses=0]
Cont: ; preds = %0
ret i32 0
Other: ; preds = %0
%exn = landingpad {i8*, i32} personality i32 (...)*
@__gxx_personality_v0
2010 Dec 01
0
[LLVMdev] RFC: Exception Handling Proposal Revised
Hi Bill, this proposal seems strangely complicated. I don't see the advantage
of the dispatch instruction over just attaching the information to each invoke.
Right now you have
invoke void @_Z3foov()
to label %invcont unwind label %catch.handlers
catch.handlers: landingpad
dispatch resume to label %...
catches [
%struct.__fundamental_type_info_pseudo* @_ZTIi, label
2015 Jan 27
2
[LLVMdev] RFC: Native Windows C++ exception handling
I was thinking about this last night, and I came up with a third alternative which I think looks very promising. It’s basically a re-working of the previous alternative to use the landingpad concept rather than arbitrary fake logic, but it uses a single landing pad for the entire function that mimics the logic of the personality function to dispatch unwinding calls and catch handlers.
I believe
2014 May 23
2
[LLVMdev] Personality function for llvm.gcroot
Hello,
Why does LLVM use __gcc_personality_v0 instead of __gxx_personality_v0
function when it lowers llvm.gcroot intrinsic? For my try-catch codegen I
use last one (so does clang) and it conflicts with __gcc_personality_v0
produced by LLVM? I know how to solve it with my own GC plug-in, just
wondering.
And what's the difference between these two functions anyway?
Thanks,
2011 Sep 27
0
[LLVMdev] How to code catch-all in the new exception handling scheme?
Hi Bill,
>>> I'm looking at the docs, and while it refers to a "catch-all" clause,
>>
>> hopefully Bill will get rid of the first reference to "catch-all" since
>> that section is inaccurate.
>>
> I *think* this is now correct. Please check. :)
I still have some niggles:
The unwinder delegates the decision of whether to stop in a
2015 Jan 27
2
[LLVMdev] RFC: Native Windows C++ exception handling
Hi Reid,
Thanks for the input.
You wrote:
> The @_Z4testv.unwind.1 helper just calls ~Inner(), but not ~Outer.
That’s actually intentional. The thing to keep in mind is that all of the landing pads are going to be effectively removed by the time the final object image is generated. They are just there to facilitate the table generation, and in the __CxxFrameHandler3 case they don’t mean