Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; ModuleID = 'Wide'
- target datalayout = "e-m:e-p:32:32-i64:64-f80:32-n8:16:32-S32"
- target triple = "i686-w64-windows-gnu-elf"
- %struct.T = type { i32* }
- @_ZTIb = external constant i8*
- define void @_Z1f1T(%struct.T* %t) #0 {
- entry:
- %exception = call i8* @__cxa_allocate_exception(i32 1) #3
- store i8 1, i8* %exception
- call void @__cxa_throw(i8* %exception, i8* bitcast (i8** @_ZTIb to i8*), i8* null) #4
- unreachable
- }
- declare i8* @__cxa_allocate_exception(i32)
- declare void @__cxa_throw(i8*, i8*, i8*)
- define i8 @ed2ee106-5aac-49ae-af0c-968c1b7216bb() {
- entry:
- %0 = alloca i32, align 4
- %1 = alloca %struct.T, align 4
- store i32 0, i32* %0
- invoke void @_ZN1TC1EPi(%struct.T* %1, i32* %0)
- to label %continue unwind label %landingpad
- catch_block: ; preds = %landingpad2, %landingpad
- %2 = phi { i8*, i32 } [ %7, %landingpad ], [ %8, %landingpad2 ]
- %3 = extractvalue { i8*, i32 } %2, 1
- %4 = extractvalue { i8*, i32 } %2, 0
- %5 = call i32 @llvm.eh.typeid.for(i8* bitcast (i8** @_ZTIb to i8*))
- %6 = icmp eq i32 %3, %5
- br i1 %6, label %catch_target, label %catch_continue
- dest_block: ; preds = %continue
- call void @_ZN1TD1Ev(%struct.T* %1)
- ret i8 0
- continue: ; preds = %entry
- invoke void @_Z1f1T(%struct.T* %1)
- to label %dest_block unwind label %landingpad2
- landingpad: ; preds = %entry
- %7 = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0
- catch i8* bitcast (i8** @_ZTIb to i8*)
- catch i8* null
- br label %catch_block
- landingpad2: ; preds = %continue
- %8 = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0
- catch i8* bitcast (i8** @_ZTIb to i8*)
- catch i8* null
- call void @_ZN1TD1Ev(%struct.T* %1)
- br label %catch_block
- catch_target: ; preds = %catch_block
- %9 = call i8* (i8*, ...)* @__cxa_begin_catch(i8* %4)
- %10 = load i32* %0
- %11 = sext i32 %10 to i64
- %12 = icmp eq i64 %11, 1
- %13 = zext i1 %12 to i8
- %14 = trunc i8 %13 to i1
- br i1 %14, label %true, label %false
- catch_continue: ; preds = %catch_block
- %15 = call i8* (i8*, ...)* @__cxa_begin_catch(i8* %4)
- invoke void @__cxa_rethrow()
- to label %unreachable unwind label %landingpad3
- true: ; preds = %catch_target
- %16 = load i8* %9
- %17 = trunc i8 %16 to i1
- br label %false
- false: ; preds = %true, %catch_target
- %18 = phi i1 [ %14, %catch_target ], [ %17, %true ]
- %19 = zext i1 %18 to i8
- call void @__cxa_end_catch()
- ret i8 %19
- landingpad3: ; preds = %catch_continue
- %20 = landingpad { i8*, i32 } personality i32 (...)* @__gxx_personality_v0
- cleanup
- call void @__cxa_end_catch()
- %exn.obj = extractvalue { i8*, i32 } %20, 0
- call void @_Unwind_Resume(i8* %exn.obj)
- unreachable
- unreachable: ; preds = %catch_continue
- unreachable
- }
- declare i32 @__gxx_personality_v0(...)
- ; Function Attrs: nounwind readnone
- declare i32 @llvm.eh.typeid.for(i8*) #1
- declare i8* @__cxa_begin_catch(i8*, ...)
- declare void @__cxa_end_catch()
- declare void @__cxa_rethrow()
- define linkonce_odr x86_thiscallcc void @_ZN1TC1EPi(%struct.T* %this, i32* %ptr) unnamed_addr #0 align 2 {
- entry:
- %this.addr = alloca %struct.T*, align 4
- %ptr.addr = alloca i32*, align 4
- store %struct.T* %this, %struct.T** %this.addr, align 4
- store i32* %ptr, i32** %ptr.addr, align 4
- %this1 = load %struct.T** %this.addr
- %0 = load i32** %ptr.addr, align 4
- call x86_thiscallcc void @_ZN1TC2EPi(%struct.T* %this1, i32* %0)
- ret void
- }
- ; Function Attrs: nounwind
- define linkonce_odr x86_thiscallcc void @_ZN1TD1Ev(%struct.T* %this) unnamed_addr #2 align 2 {
- entry:
- %this.addr = alloca %struct.T*, align 4
- store %struct.T* %this, %struct.T** %this.addr, align 4
- %this1 = load %struct.T** %this.addr
- call x86_thiscallcc void @_ZN1TD2Ev(%struct.T* %this1) #3
- ret void
- }
- ; Function Attrs: nounwind
- define linkonce_odr x86_thiscallcc void @_ZN1TD2Ev(%struct.T* %this) unnamed_addr #2 align 2 {
- entry:
- %this.addr = alloca %struct.T*, align 4
- store %struct.T* %this, %struct.T** %this.addr, align 4
- %this1 = load %struct.T** %this.addr
- %ptr1 = bitcast %struct.T* %this1 to i32**
- %0 = load i32** %ptr1, align 4
- %1 = load i32* %0, align 4
- %inc = add nsw i32 %1, 1
- store i32 %inc, i32* %0, align 4
- ret void
- }
- ; Function Attrs: nounwind
- define linkonce_odr x86_thiscallcc void @_ZN1TC2EPi(%struct.T* %this, i32* %ptr) unnamed_addr #2 align 2 {
- entry:
- %this.addr = alloca %struct.T*, align 4
- %ptr.addr = alloca i32*, align 4
- store %struct.T* %this, %struct.T** %this.addr, align 4
- store i32* %ptr, i32** %ptr.addr, align 4
- %this1 = load %struct.T** %this.addr
- %ptr21 = bitcast %struct.T* %this1 to i32**
- %0 = load i32** %ptr.addr, align 4
- store i32* %0, i32** %ptr21, align 4
- ret void
- }
- declare void @_Unwind_Resume(i8*)
- attributes #0 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="0" "unsafe-fp-math"="false" "use-soft-float"="false" }
- attributes #1 = { nounwind readnone }
- attributes #2 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="0" "unsafe-fp-math"="false" "use-soft-float"="false" }
- attributes #3 = { nounwind }
- attributes #4 = { noreturn }
- !llvm.ident = !{!0, !0}
- !0 = !{!"clang version 3.6.1 (tags/RELEASE_361/final)"}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement