Displaying 6 results from an estimated 6 matches for "thunk_item_m_new_i".
2012 Mar 23
0
[LLVMdev] Catching C++ exceptions, cleaning up, rethrowing
...x i8] }
define void @program(void* %result) {
entry:
; alloc raw space for x on the stack
%x = alloca %item, align 8
; alloc raw space for y on the stack
%y = alloca %item, align 8
; call item::item(1) constructor for x as new(%0) item(1);
%0 = bitcast %item* %x to void*
call void @thunk_item_M_new_i(void* %0, i32 1)
; call item::item(2) constructor for y as new(%1) item(2);
%1 = bitcast %item* %y to void*
call void @thunk_item_M_new_i(void* %1, i32 2)
; Do something with x & y via another thunk_ function that MIGHT throw an exception.
; If an exception is thrown, the code below...
2012 Apr 08
0
[LLVMdev] Catching C++ exceptions, cleaning up, rethrowing
...%item, align 8
> %exception_caught_flag = alloca i8, align 1
> store i8 0, i8* %exception_caught_flag, align 1
> %caught_result_storage = alloca %0, align 8
> store %0 zeroinitializer, %0* %caught_result_storage, align 8
> %0 = bitcast %item* %x to void*
> invoke void @thunk_item_M_new_i(void* %0, i32 1)
> to label %normal unwind label %unwind
>
> exit: ; preds = %unwind, %dtor
> %1 = phi %0 [ %5, %unwind ], [ %6, %dtor ]
> %2 = phi i8 [ 1, %unwind ], [ %7, %dtor ]
> %3 = icmp eq i8 %2, 0
> br i1 %3...
2012 Apr 08
2
[LLVMdev] Catching C++ exceptions, cleaning up, rethrowing
On Apr 4, 2012, at 9:32 PM, Paul J. Lucas wrote:
> On Mar 23, 2012, at 4:46 PM, Bill Wendling wrote:
[...]
> This all seems to work just fine. I can throw a C++ exception either in a C++ object's constructor or in an ordinary member function and the stack unwinds correctly (the object's destructors are called) and the exception is propagated back up the C++ code that called the
2012 Mar 23
2
[LLVMdev] Catching C++ exceptions, cleaning up, rethrowing
On Mar 23, 2012, at 6:27 AM, Paul J. Lucas wrote:
> On Mar 22, 2012, at 5:29 PM, Bill Wendling wrote:
>
>> On Mar 22, 2012, at 11:40 AM, Paul J. Lucas <paul at lucasmail.org> wrote:
>>
>>> Unfortunately, I'm not following. How is having the code that catches all exceptions in a separate function different from what I proposed (putting the try/catch in the
2012 Mar 23
2
[LLVMdev] Catching C++ exceptions, cleaning up, rethrowing
...) {
> entry:
> ; alloc raw space for x on the stack
> %x = alloca %item, align 8
>
> ; alloc raw space for y on the stack
> %y = alloca %item, align 8
>
> ; call item::item(1) constructor for x as new(%0) item(1);
> %0 = bitcast %item* %x to void*
> call void @thunk_item_M_new_i(void* %0, i32 1)
>
> ; call item::item(2) constructor for y as new(%1) item(2);
> %1 = bitcast %item* %y to void*
> call void @thunk_item_M_new_i(void* %1, i32 2)
>
> ; Do something with x & y via another thunk_ function that MIGHT throw an exception.
> ; If an excep...
2012 Apr 09
5
[LLVMdev] Catching C++ exceptions, cleaning up, rethrowing
...;> %exception_caught_flag = alloca i8, align 1
>> store i8 0, i8* %exception_caught_flag, align 1
>> %caught_result_storage = alloca %0, align 8
>> store %0 zeroinitializer, %0* %caught_result_storage, align 8
>> %0 = bitcast %item* %x to void*
>> invoke void @thunk_item_M_new_i(void* %0, i32 1)
>> to label %normal unwind label %unwind
>>
>> exit: ; preds = %unwind, %dtor
>> %1 = phi %0 [ %5, %unwind ], [ %6, %dtor ]
>> %2 = phi i8 [ 1, %unwind ], [ %7, %dtor ]
>> %3 = icmp eq i8 %...