diff options
Diffstat (limited to 'tests')
54 files changed, 8789 insertions, 151 deletions
diff --git a/tests/aniso.c b/tests/aniso.c index e673e228..e02c20ac 100644 --- a/tests/aniso.c +++ b/tests/aniso.c @@ -145,6 +145,11 @@ int main(int argc, char *argv[]) glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, aniso); } + { + assert(!glGetError()); + glBindFramebuffer(GL_RENDERBUFFER, 0); + assert(glGetError()); + } // Prepare and Render diff --git a/tests/aniso.png b/tests/aniso.png Binary files differindex 5f5812d2..2bcb2f5f 100644 --- a/tests/aniso.png +++ b/tests/aniso.png diff --git a/tests/bullet/output3.txt b/tests/bullet/output3.txt new file mode 100644 index 00000000..78f27f9f --- /dev/null +++ b/tests/bullet/output3.txt @@ -0,0 +1,270 @@ +world pos = 2.00,10.00,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.99,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.98,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.97,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.96,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.94,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.92,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.90,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.88,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.85,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.82,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.78,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.75,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.71,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.67,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.62,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.57,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.52,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.47,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.42,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.36,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.30,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.23,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.17,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.10,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.02,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,8.95,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,8.87,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,8.79,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,8.71,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,8.62,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,8.53,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,8.44,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,8.35,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,8.25,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,8.15,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,8.05,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,7.94,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,7.83,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,7.72,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,7.61,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,7.49,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,7.37,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,7.25,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,7.13,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,7.00,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,6.87,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,6.73,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,6.60,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,6.46,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,6.32,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,6.17,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,6.03,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,5.88,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,5.72,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,5.57,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,5.41,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,5.25,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,5.08,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,4.92,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,4.75,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,4.58,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,4.40,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,4.22,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,4.04,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,3.86,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,3.67,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,3.48,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,3.29,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,3.10,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,2.90,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,2.70,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,2.50,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,2.29,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,2.08,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,1.87,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,1.66,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,1.44,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,1.22,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,1.00,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,0.77,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,0.55,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,0.32,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,0.08,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-0.15,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-0.39,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-0.63,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-0.88,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-1.13,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-1.38,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-1.63,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-1.88,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-2.14,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-2.40,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-2.67,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-2.93,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-3.20,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-3.48,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-3.75,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-4.03,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-4.31,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-4.59,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-4.88,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.17,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.13,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.10,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.08,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.05,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.03,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.01,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-4.99,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-4.98,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-4.97,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-4.96,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-4.95,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-4.95,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-4.95,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-4.95,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-4.96,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-4.97,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-4.98,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-4.99,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.00,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.00,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.00,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.00,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.00,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.00,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.00,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.00,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.00,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.00,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.00,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.00,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.00,-0.00 +world pos = 0.00,-56.00,0.00 diff --git a/tests/cases/atomicrmw.ll b/tests/cases/atomicrmw.ll index 2f5a4224..fe479dce 100644 --- a/tests/cases/atomicrmw.ll +++ b/tests/cases/atomicrmw.ll @@ -13,6 +13,7 @@ entry: %1 = atomicrmw add i32* %t, i32 3 seq_cst, ; [#uses=0 type=i32] [debug line = 21:12] %2 = load i32* %t %call = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([15 x i8]* @.str, i32 0, i32 0), i32 %0, i32 %2) ; [#uses=0 type=i32] + %3 = atomicrmw volatile add i32* %t, i32 3 seq_cst, ; [#uses=0 type=i32] [debug line = 21:12] ret i32 1 } diff --git a/tests/cases/breakinthemiddle2.ll b/tests/cases/breakinthemiddle2.ll new file mode 100644 index 00000000..318b49dc --- /dev/null +++ b/tests/cases/breakinthemiddle2.ll @@ -0,0 +1,35 @@ +@.str = private constant [15 x i8] c"hello, world!\0A\00", align 1 ; [#uses=1] + +define linkonce_odr i32 @main() align 2 { + %333 = call i32 @printf(i8* getelementptr inbounds ([15 x i8]* @.str, i32 0, i32 0)) ; [#uses=0] + %199 = trunc i8 1 to i1 ; [#uses=1] + br i1 %199, label %label555, label %label569 + +label555: ; preds = %0 + br label %label569 ; branch should ignore all code after it in the block + ; No predecessors! + %a472 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) + cleanup + %a473 = extractvalue { i8*, i32 } %a472, 0 + %a474 = extractvalue { i8*, i32 } %a472, 1 + br label %label569 + +label569: ; preds = %0 + br i1 %199, label %label990, label %label999 + +label990: + ret i32 0 ; ret should ignore all code after it in the block + ; No predecessors! + %a472 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) + cleanup + %a473 = extractvalue { i8*, i32 } %a472, 0 + %a474 = extractvalue { i8*, i32 } %a472, 1 + br label %label569 + +label999: ; preds = %555 + ret i32 0 +} + +declare i32 @printf(i8*) +declare i32 @__gxx_personality_v0(...) + diff --git a/tests/cases/callalias.ll b/tests/cases/callalias.ll new file mode 100644 index 00000000..9bc1ffd0 --- /dev/null +++ b/tests/cases/callalias.ll @@ -0,0 +1,21 @@ +; ModuleID = 'tests/hello_world.bc' +target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S128" +target triple = "i386-pc-linux-gnu" + +@.str = private unnamed_addr constant [15 x i8] c"hello, world!\0A\00", align 1 ; [#uses=1 type=[15 x i8]*] + +@othername = alias internal void ()* @doit + +define internal void @doit() unnamed_addr nounwind align 2 { + %call = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([15 x i8]* @.str, i32 0, i32 0)) ; [#uses=0 type=i32] + ret void +} + +define i32 @main() { +entry: + tail call void ()* @othername() nounwind + ret i32 1 +} + +declare i32 @printf(i8*, ...) + diff --git a/tests/cases/callalias2.ll b/tests/cases/callalias2.ll new file mode 100644 index 00000000..abdbe4e6 --- /dev/null +++ b/tests/cases/callalias2.ll @@ -0,0 +1,22 @@ +; ModuleID = 'tests/hello_world.bc' +target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S128" +target triple = "i386-pc-linux-gnu" + +@.str = private unnamed_addr constant [15 x i8] c"hello, world!\0A\00", align 1 ; [#uses=1 type=[15 x i8]*] + +@othername = alias internal void ()* @doit +@othername2 = alias internal void ()* @othername + +define internal void @doit() unnamed_addr nounwind align 2 { + %call = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([15 x i8]* @.str, i32 0, i32 0)) ; [#uses=0 type=i32] + ret void +} + +define i32 @main() { +entry: + tail call void ()* @othername2() nounwind + ret i32 1 +} + +declare i32 @printf(i8*, ...) + diff --git a/tests/cases/cmpxchg_volatile.ll b/tests/cases/cmpxchg_volatile.ll new file mode 100644 index 00000000..019fd833 --- /dev/null +++ b/tests/cases/cmpxchg_volatile.ll @@ -0,0 +1,548 @@ +; ModuleID = 'ta2.bc' +target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S128" +target triple = "i386-pc-linux-gnu" + +%"struct.std::__1::__atomic_base.0" = type { i8 } +%"struct.std::__1::__atomic_base" = type { %"struct.std::__1::__atomic_base.0" } +%"struct.std::__1::atomic" = type { %"struct.std::__1::__atomic_base" } + +@.str = private unnamed_addr constant [8 x i8] c"ta2.cpp\00", align 1 +@__PRETTY_FUNCTION__._Z7do_testIVNSt3__16atomicIcEEcEvv = private unnamed_addr constant [63 x i8] c"void do_test() [A = volatile std::__1::atomic<char>, T = char]\00", align 1 +@.str1 = private unnamed_addr constant [43 x i8] c"obj.compare_exchange_weak(x, T(2)) == true\00", align 1 +@.str2 = private unnamed_addr constant [12 x i8] c"obj == T(2)\00", align 1 +@.str3 = private unnamed_addr constant [10 x i8] c"x == T(3)\00", align 1 +@.str4 = private unnamed_addr constant [44 x i8] c"obj.compare_exchange_weak(x, T(1)) == false\00", align 1 +@.str5 = private unnamed_addr constant [10 x i8] c"x == T(2)\00", align 1 +@.str6 = private unnamed_addr constant [45 x i8] c"obj.compare_exchange_strong(x, T(1)) == true\00", align 1 +@.str7 = private unnamed_addr constant [12 x i8] c"obj == T(1)\00", align 1 +@.str8 = private unnamed_addr constant [15 x i8] c"hello, world!\0A\00", align 1 ; [#uses=1 type=[15 x i8]*] + +define i32 @main() ssp { +entry: + %call = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([15 x i8]* @.str8, i32 0, i32 0)) ; [#uses=0 type=i32] + call void @_Z4testIVNSt3__16atomicIcEEcEvv() + ret i32 0 +} + +define linkonce_odr void @_Z4testIVNSt3__16atomicIcEEcEvv() ssp { +entry: + call void @_Z7do_testIVNSt3__16atomicIcEEcEvv() + call void @_Z7do_testIVNSt3__16atomicIcEEcEvv() + ret void +} + +define linkonce_odr void @_Z7do_testIVNSt3__16atomicIcEEcEvv() ssp { +entry: + %this.addr.i.i110 = alloca %"struct.std::__1::__atomic_base.0"*, align 4 + %__m.addr.i.i111 = alloca i32, align 4 + %.atomicdst.i.i112 = alloca i8, align 1 + %this.addr.i113 = alloca %"struct.std::__1::__atomic_base.0"*, align 4 + %this.addr.i90 = alloca %"struct.std::__1::__atomic_base.0"*, align 4 + %__e.addr.i91 = alloca i8*, align 4 + %__d.addr.i92 = alloca i8, align 1 + %__m.addr.i93 = alloca i32, align 4 + %.atomictmp.i94 = alloca i8, align 1 + %.atomicdst.i95 = alloca i8, align 1 + %this.addr.i.i79 = alloca %"struct.std::__1::__atomic_base.0"*, align 4 + %__m.addr.i.i80 = alloca i32, align 4 + %.atomicdst.i.i81 = alloca i8, align 1 + %this.addr.i82 = alloca %"struct.std::__1::__atomic_base.0"*, align 4 + %this.addr.i60 = alloca %"struct.std::__1::__atomic_base.0"*, align 4 + %__e.addr.i61 = alloca i8*, align 4 + %__d.addr.i62 = alloca i8, align 1 + %__m.addr.i63 = alloca i32, align 4 + %.atomictmp.i64 = alloca i8, align 1 + %.atomicdst.i65 = alloca i8, align 1 + %this.addr.i.i49 = alloca %"struct.std::__1::__atomic_base.0"*, align 4 + %__m.addr.i.i50 = alloca i32, align 4 + %.atomicdst.i.i51 = alloca i8, align 1 + %this.addr.i52 = alloca %"struct.std::__1::__atomic_base.0"*, align 4 + %this.addr.i46 = alloca %"struct.std::__1::__atomic_base.0"*, align 4 + %__e.addr.i = alloca i8*, align 4 + %__d.addr.i47 = alloca i8, align 1 + %__m.addr.i = alloca i32, align 4 + %.atomictmp.i = alloca i8, align 1 + %.atomicdst.i = alloca i8, align 1 + %this.addr.i.i42 = alloca %"struct.std::__1::__atomic_base.0"*, align 4 + %__m.addr.i.i = alloca i32, align 4 + %.atomicdst.i.i = alloca i8, align 1 + %this.addr.i43 = alloca %"struct.std::__1::__atomic_base.0"*, align 4 + %this.addr.i.i.i.i = alloca %"struct.std::__1::__atomic_base.0"*, align 4 + %__d.addr.i.i.i.i = alloca i8, align 1 + %this.addr.i.i.i = alloca %"struct.std::__1::__atomic_base"*, align 4 + %__d.addr.i.i.i = alloca i8, align 1 + %this.addr.i.i = alloca %"struct.std::__1::atomic"*, align 4 + %__d.addr.i.i = alloca i8, align 1 + %this.addr.i = alloca %"struct.std::__1::atomic"*, align 4 + %__d.addr.i = alloca i8, align 1 + %obj = alloca %"struct.std::__1::atomic", align 1 + %x = alloca i8, align 1 + store %"struct.std::__1::atomic"* %obj, %"struct.std::__1::atomic"** %this.addr.i, align 4 + store i8 0, i8* %__d.addr.i, align 1 + %this1.i = load %"struct.std::__1::atomic"** %this.addr.i + %0 = load i8* %__d.addr.i, align 1 + store %"struct.std::__1::atomic"* %this1.i, %"struct.std::__1::atomic"** %this.addr.i.i, align 4 + store i8 %0, i8* %__d.addr.i.i, align 1 + %this1.i.i = load %"struct.std::__1::atomic"** %this.addr.i.i + %1 = bitcast %"struct.std::__1::atomic"* %this1.i.i to %"struct.std::__1::__atomic_base"* + %2 = load i8* %__d.addr.i.i, align 1 + store %"struct.std::__1::__atomic_base"* %1, %"struct.std::__1::__atomic_base"** %this.addr.i.i.i, align 4 + store i8 %2, i8* %__d.addr.i.i.i, align 1 + %this1.i.i.i = load %"struct.std::__1::__atomic_base"** %this.addr.i.i.i + %3 = bitcast %"struct.std::__1::__atomic_base"* %this1.i.i.i to %"struct.std::__1::__atomic_base.0"* + %4 = load i8* %__d.addr.i.i.i, align 1 + store %"struct.std::__1::__atomic_base.0"* %3, %"struct.std::__1::__atomic_base.0"** %this.addr.i.i.i.i, align 4 + store i8 %4, i8* %__d.addr.i.i.i.i, align 1 + %this1.i.i.i.i = load %"struct.std::__1::__atomic_base.0"** %this.addr.i.i.i.i + %__a_.i.i.i.i = getelementptr inbounds %"struct.std::__1::__atomic_base.0"* %this1.i.i.i.i, i32 0, i32 0 + %5 = load i8* %__d.addr.i.i.i.i, align 1 + store i8 %5, i8* %__a_.i.i.i.i, align 1 + %6 = bitcast %"struct.std::__1::atomic"* %obj to %"struct.std::__1::__atomic_base.0"* + store %"struct.std::__1::__atomic_base.0"* %6, %"struct.std::__1::__atomic_base.0"** %this.addr.i113, align 4 + %this1.i114 = load %"struct.std::__1::__atomic_base.0"** %this.addr.i113 + store %"struct.std::__1::__atomic_base.0"* %this1.i114, %"struct.std::__1::__atomic_base.0"** %this.addr.i.i110, align 4 + store i32 5, i32* %__m.addr.i.i111, align 4 + %this1.i.i115 = load %"struct.std::__1::__atomic_base.0"** %this.addr.i.i110 + %__a_.i.i116 = getelementptr inbounds %"struct.std::__1::__atomic_base.0"* %this1.i.i115, i32 0, i32 0 + %7 = load i32* %__m.addr.i.i111, align 4 + switch i32 %7, label %monotonic.i.i117 [ + i32 1, label %acquire.i.i118 + i32 2, label %acquire.i.i118 + i32 5, label %seqcst.i.i119 + ] + +monotonic.i.i117: ; preds = %entry + %8 = load atomic volatile i8* %__a_.i.i116 monotonic, align 1 + store i8 %8, i8* %.atomicdst.i.i112, align 1 + br label %_ZNVKSt3__113__atomic_baseIcLb0EEcvcEv.exit120 + +acquire.i.i118: ; preds = %entry, %entry + %9 = load atomic volatile i8* %__a_.i.i116 acquire, align 1 + store i8 %9, i8* %.atomicdst.i.i112, align 1 + br label %_ZNVKSt3__113__atomic_baseIcLb0EEcvcEv.exit120 + +seqcst.i.i119: ; preds = %entry + %10 = load atomic volatile i8* %__a_.i.i116 seq_cst, align 1 + store i8 %10, i8* %.atomicdst.i.i112, align 1 + br label %_ZNVKSt3__113__atomic_baseIcLb0EEcvcEv.exit120 + +_ZNVKSt3__113__atomic_baseIcLb0EEcvcEv.exit120: ; preds = %seqcst.i.i119, %acquire.i.i118, %monotonic.i.i117 + %11 = load i8* %.atomicdst.i.i112 + store i8 %11, i8* %x, align 1 + %12 = bitcast %"struct.std::__1::atomic"* %obj to %"struct.std::__1::__atomic_base.0"* + store %"struct.std::__1::__atomic_base.0"* %12, %"struct.std::__1::__atomic_base.0"** %this.addr.i90, align 4 + store i8* %x, i8** %__e.addr.i91, align 4 + store i8 2, i8* %__d.addr.i92, align 1 + store i32 5, i32* %__m.addr.i93, align 4 + %this1.i96 = load %"struct.std::__1::__atomic_base.0"** %this.addr.i90 + %__a_.i97 = getelementptr inbounds %"struct.std::__1::__atomic_base.0"* %this1.i96, i32 0, i32 0 + %13 = load i32* %__m.addr.i93, align 4 + %14 = load i8** %__e.addr.i91, align 4 + %15 = load i8* %__d.addr.i92, align 1 + store i8 %15, i8* %.atomictmp.i94 + %16 = load i32* %__m.addr.i93, align 4 + switch i32 %13, label %monotonic.i99 [ + i32 1, label %acquire.i101 + i32 2, label %acquire.i101 + i32 3, label %release.i103 + i32 4, label %acqrel.i105 + i32 5, label %seqcst.i107 + ] + +monotonic.i99: ; preds = %_ZNVKSt3__113__atomic_baseIcLb0EEcvcEv.exit120 + %17 = load i8* %14, align 1 + %18 = load i8* %.atomictmp.i94, align 1 + %19 = cmpxchg volatile i8* %__a_.i97, i8 %17, i8 %18 monotonic + store i8 %19, i8* %14, align 1 + %20 = icmp eq i8 %19, %17 + %frombool.i98 = zext i1 %20 to i8 + store i8 %frombool.i98, i8* %.atomicdst.i95 + br label %_ZNVSt3__113__atomic_baseIcLb0EE21compare_exchange_weakERccNS_12memory_orderE.exit109 + +acquire.i101: ; preds = %_ZNVKSt3__113__atomic_baseIcLb0EEcvcEv.exit120, %_ZNVKSt3__113__atomic_baseIcLb0EEcvcEv.exit120 + %21 = load i8* %14, align 1 + %22 = load i8* %.atomictmp.i94, align 1 + %23 = cmpxchg volatile i8* %__a_.i97, i8 %21, i8 %22 acquire + store i8 %23, i8* %14, align 1 + %24 = icmp eq i8 %23, %21 + %frombool2.i100 = zext i1 %24 to i8 + store i8 %frombool2.i100, i8* %.atomicdst.i95 + br label %_ZNVSt3__113__atomic_baseIcLb0EE21compare_exchange_weakERccNS_12memory_orderE.exit109 + +release.i103: ; preds = %_ZNVKSt3__113__atomic_baseIcLb0EEcvcEv.exit120 + %25 = load i8* %14, align 1 + %26 = load i8* %.atomictmp.i94, align 1 + %27 = cmpxchg volatile i8* %__a_.i97, i8 %25, i8 %26 release + store i8 %27, i8* %14, align 1 + %28 = icmp eq i8 %27, %25 + %frombool3.i102 = zext i1 %28 to i8 + store i8 %frombool3.i102, i8* %.atomicdst.i95 + br label %_ZNVSt3__113__atomic_baseIcLb0EE21compare_exchange_weakERccNS_12memory_orderE.exit109 + +acqrel.i105: ; preds = %_ZNVKSt3__113__atomic_baseIcLb0EEcvcEv.exit |