search for: succ0

Displaying 7 results from an estimated 7 matches for "succ0".

Did you mean: sicc0
2011 Aug 02
0
[LLVMdev] Multiple successors, single dynamic successor
...express such relationships in LLVM IR ("best" in the sense of allowing > other optimizations to run effectively)? Bear in mind that in this > example N=2, but it may be way bigger than that. Just to clarify: I already figured out two ways to do it, i.e.: %0 = phi i8* [blockaddr(%succ0), %pred0], [blockaddr(%succ1), %pred1], ... ... indirectbr %0, [%succ0, %succ1, ...] or %0 = phi i8 [0, %pred0], [1, %pred1], ... ... switch %0, undef, [0, %succ0], [1, %succ1], ... what I'd like to know is which one do you think is better (and why) or if there are better ways I didn't...
2010 Nov 24
2
[LLVMdev] RFC: Exception Handling Proposal II
...on. So in my model, there is also one dispatch per region, but there are more regions. So, in this example: A { A(); ~A() throw(); }; void foo() throw() { A x; b(); } Your model has this as follows, modulo syntax: entry: %x = alloca %A invoke void @A::A(%A* %x) to label %succ0 unwind label %lp0 region 0 succ0: invoke void @b() to label %succ1 unwind label %lp1 region 0 succ1: call void @A::~A(%A* %x) nounwind ret void lp0: call void @A::~A(%A* %x) nounwind br label %lp1 lp1: dispatch region 0 [filter i8* null] # no resume edge Whereas...
2010 Nov 25
0
[LLVMdev] RFC: Exception Handling Proposal II
...region, but there are more regions. > > So, in this example: > A { A(); ~A() throw(); }; > void foo() throw() { > A x; > b(); > } > > Your model has this as follows, modulo syntax: > entry: > %x = alloca %A > invoke void @A::A(%A* %x) to label %succ0 unwind label %lp0 region 0 > succ0: > invoke void @b() to label %succ1 unwind label %lp1 region 0 > succ1: > call void @A::~A(%A* %x) nounwind > ret void > lp0: > call void @A::~A(%A* %x) nounwind > br label %lp1 > lp1: > dispatch region 0 [filter...
2011 Aug 02
3
[LLVMdev] Multiple successors, single dynamic successor
Nella citazione martedì 2 agosto 2011 20:02:08, Michael Ilseman ha scritto: > I'm assuming that you're talking about a situation where this can't be > determined statically in the existing LLVM IR, but you know it's true > and want to put it in (e.g. you're the one generating LLVM IR). Correct. Or, more precisely, I'd like to investigate macro compression, i.e.
2010 Nov 24
0
[LLVMdev] RFC: Exception Handling Proposal II
On Nov 24, 2010, at 4:58 AM, John McCall wrote: >> If that's so, how do you encode which which landing pad is to be >> followed per region? >> >> Consider the following code: >> >> try { >> Foo f(); >> f.run(); // can throw exception >> Bar b(); >> b.run(); // can throw exception >> Baz z(); >> z.run(); // can throw
2010 Nov 24
3
[LLVMdev] RFC: Exception Handling Proposal II
On Nov 24, 2010, at 2:59 AM, Renato Golin wrote: > If I got it right, the dispatch instruction will tell the > instructions/calls to unwind to specific landing pads (cleanup areas, > terminate), but the region number will encode try/catch areas, so that > all those cleanup landing pads should ultimately end up in the catch > area for that region. Caveat: I'm speaking from what
2010 Nov 25
3
[LLVMdev] RFC: Exception Handling Proposal II
...> >> So, in this example: >> A { A(); ~A() throw(); }; >> void foo() throw() { >> A x; >> b(); >> } >> >> Your model has this as follows, modulo syntax: >> entry: >> %x = alloca %A >> invoke void @A::A(%A* %x) to label %succ0 unwind label %lp0 region 0 >> succ0: >> invoke void @b() to label %succ1 unwind label %lp1 region 0 >> succ1: >> call void @A::~A(%A* %x) nounwind >> ret void >> lp0: >> call void @A::~A(%A* %x) nounwind >> br label %lp1 >> lp1: >&g...