rellic
rellic copied to clipboard
Limit amount of temporary variables
See the diff generated by this PR for the tests here: https://github.com/lifting-bits/rellic/actions/runs/2832926126
fizzbuzz.bc
--- /dev/fd/63 2022-08-10 13:35:50.414589796 +0000
+++ /dev/fd/62 2022-08-10 13:35:50.414589796 +0000
@@ -7,46 +7,24 @@
unsigned int main() {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
var0 = 0U;
var1 = 0U;
- do {
- val2 = var1;
- if ((int)val2 < 30) {
- val3 = var1;
- if ((int)val3 % 3 == 0U) {
- val4 = var1;
- if ((int)val4 % 5 == 0U) {
- printf("fizzbuzz\n");
- }
- }
- if ((int)val3 % 3 != 0U || !((int)val3 % 3 != 0U || (int)val4 % 5 == 0U)) {
- val5 = var1;
- if (((int)val3 % 3 != 0U || !((int)val4 % 5 == 0U || (int)val3 % 3 != 0U)) && (int)val5 % 3 != 0U) {
- val6 = var1;
- if ((int)val6 % 5 != 0U) {
- val7 = var1;
- printf("%d\n", val7);
+ while ((int)var1 < 30)
+ {
+ if ((int)var1 % 3 != 0U || !((int)var1 % 3 != 0U || (int)var1 % 5 == 0U)) {
+ if (((int)var1 % 3 != 0U || !((int)var1 % 5 == 0U || (int)var1 % 3 != 0U)) && (int)var1 % 3 != 0U) {
+ if ((int)var1 % 5 != 0U) {
+ printf("%d\n", var1);
} else {
printf("buzz\n");
}
} else {
- if (((int)val3 % 3 != 0U || !((int)val4 % 5 == 0U || (int)val3 % 3 != 0U)) && (int)val5 % 3 == 0U) {
- printf("fizz\n");
- }
+ printf("fizz\n");
}
+ } else {
+ printf("fizzbuzz\n");
}
- val8 = var1;
- var1 = val8 + 1U;
+ var1 = var1 + 1U;
}
- } while ((int)val2 < 30);
- val9 = var0;
- return val9;
+ return var0;
}
typedefs_of_typedefs.bc
--- /dev/fd/63 2022-08-10 13:35:51.166606275 +0000
+++ /dev/fd/62 2022-08-10 13:35:51.166606275 +0000
@@ -12,44 +12,16 @@
__attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long var5;
__attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long var6;
void *var7;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val8;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val9;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val10;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val11;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val12;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val13;
- void *val14;
- unsigned int val15;
- void *val16;
- unsigned int val17;
- unsigned long val18;
- unsigned long val19;
- unsigned long val20;
- unsigned long val21;
var0 = 0U;
var4 = (__attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long){1UL, 2UL};
- val8 = var4;
- var1 = val8;
+ var1 = var4;
var5 = (__attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long){};
- val9 = var5;
- var2 = val9;
+ var2 = var5;
var6 = (__attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long){4UL, 3UL};
- val10 = var6;
- var3 = val10;
- val11 = var1;
- val12 = var2;
- val13 = var3;
- var1 = val11 * val12 + val13;
+ var3 = var6;
+ var1 = var1 * var2 + var3;
var7 = (&var1);
- val14 = var7;
- val15 = *((unsigned int *)val14);
- val16 = var7;
- val17 = ((unsigned int *)val16)[1UL];
- printf("a=[%d %d]\n", val15, val17);
- val18 = *array;
- val19 = array[1UL];
- val20 = array[2UL];
- val21 = array[3UL];
- printf("array=[%lld %lld %lld %lld]\n", val18, val19, val20, val21);
+ printf("a=[%d %d]\n", *((unsigned int *)var7), ((unsigned int *)var7)[1UL]);
+ printf("array=[%lld %lld %lld %lld]\n", *array, array[1UL], array[2UL], array[3UL]);
return 0U;
}
switch_loop.bc
--- /dev/fd/63 2022-08-10 13:35:51.282608816 +0000
+++ /dev/fd/62 2022-08-10 13:35:51.282608816 +0000
@@ -4,36 +4,25 @@
unsigned int main() {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
var0 = 0U;
var1 = 0U;
- do {
- val2 = var1;
- var1 = val2 + 1U;
- val3 = var1;
- if (!(val3 != 1U && val3 != 2U && val3 != 3U)) {
- if (val3 == 3U) {
- val6 = var1;
- printf("%d\n", val6);
+ while (1U)
+ {
+ var1 = var1 + 1U;
+ if (var1 != 1U && var1 != 2U && var1 != 3U) {
+ break;
+ } else {
+ printf("%d\n", var1);
break;
}
- if (val3 == 2U) {
- val5 = var1;
- printf("%d\n", val5);
+ if (var1 == 2U) {
+ printf("%d\n", var1);
}
- if (val3 == 1U) {
- val4 = var1;
- printf("%d\n", val4);
+ if (var1 == 1U) {
+ printf("%d\n", var1);
}
}
- } while (!(val3 != 1U && val3 != 2U && val3 != 3U));
- if (val3 == 3U || !(val3 == 2U || val3 == 3U || val3 == 1U)) {
- val7 = var0;
- return val7;
+ if (var1 == 3U || !(var1 == 2U || var1 == 3U || var1 == 1U)) {
+ return var0;
}
}
func_cond_zero_arg.bc
--- /dev/fd/63 2022-08-10 13:35:51.746618984 +0000
+++ /dev/fd/62 2022-08-10 13:35:51.746618984 +0000
@@ -8,7 +8,6 @@
unsigned int main() {
unsigned int var0;
unsigned int call1;
- unsigned int val2;
var0 = 0U;
call1 = f();
if (call1 == 0U) {
@@ -16,6 +15,5 @@
} else {
var0 = 1U;
}
- val2 = var0;
- return val2;
+ return var0;
}
conflicting_names.bc
--- /dev/fd/63 2022-08-10 13:35:51.942623279 +0000
+++ /dev/fd/62 2022-08-10 13:35:51.942623279 +0000
@@ -4,17 +4,13 @@
unsigned int atoi(void *arg0);
unsigned int foo() {
unsigned int var0;
- unsigned int val1;
var0 = 0U;
- val1 = var0;
- return val1;
+ return var0;
}
unsigned int bar() {
unsigned int var0;
- unsigned int val1;
var0 = 1U;
- val1 = var0;
- return val1;
+ return var0;
}
unsigned int main() {
unsigned int var0;
@@ -24,35 +20,21 @@
unsigned int var4;
unsigned int var5;
unsigned int var6;
- unsigned int val7;
- void *val8;
- void *val9;
- unsigned int call10;
- unsigned int val11;
- unsigned int val12;
- unsigned int val13;
- unsigned int val14;
+ unsigned int call7;
var0 = 0U;
var1 = 0U;
var2 = (void *)0U;
var3 = 0U;
- val7 = var1;
- if (1 >= (int)val7) {
+ if (1 >= (int)var1) {
var6 = 1U;
- val13 = var6;
- var3 = val13;
+ var3 = var6;
} else {
- val8 = var2;
- val9 = ((void **)val8)[1UL];
- call10 = atoi(val9);
- var4 = call10;
- val11 = var4;
- if ((int)val11 > 10) {
+ call7 = atoi(((void **)var2)[1UL]);
+ var4 = call7;
+ if ((int)var4 > 10) {
var5 = 99U;
- val12 = var5;
- var3 = val12;
+ var3 = var5;
}
}
- val14 = var3;
- return val14;
+ return var3;
}
struct.bc
--- /dev/fd/63 2022-08-10 13:35:52.194628801 +0000
+++ /dev/fd/62 2022-08-10 13:35:52.198628888 +0000
@@ -6,19 +6,11 @@
struct struct__pair a = {0U, 42U};
unsigned int main() {
unsigned int var0;
- unsigned int val1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
var0 = 0U;
- val1 = a.field0;
- if (val1 == 0U) {
- val3 = a.field1;
- var0 = val3;
+ if (a.field0 == 0U) {
+ var0 = a.field1;
} else {
- val2 = a.field0;
- var0 = val2;
+ var0 = a.field0;
}
- val4 = var0;
- return val4;
+ return var0;
}
issue_183_literal_structs.bc
--- /dev/fd/63 2022-08-10 13:35:52.382632920 +0000
+++ /dev/fd/62 2022-08-10 13:35:52.382632920 +0000
@@ -21,24 +21,18 @@
unsigned int bar(unsigned long arg0, unsigned long arg1) {
struct struct_foo_t var0;
void *val1;
- unsigned int val2;
val1 = (&var0);
((struct literal_struct_0 *)val1)->field0 = arg0;
((struct literal_struct_0 *)val1)->field1 = arg1;
- val2 = *(unsigned int *)(&var0.field3);
- return val2;
+ return *(unsigned int *)(&var0.field3);
}
unsigned int main() {
struct struct_foo_t var0;
void *val1;
- unsigned long val2;
- unsigned long val3;
- unsigned int call4;
+ unsigned int call2;
*(unsigned int *)(&var0.field3) = 3U;
val1 = (&var0);
- val2 = ((struct literal_struct_0 *)val1)->field0;
- val3 = ((struct literal_struct_0 *)val1)->field1;
- call4 = bar(val2, val3);
- printf("%d\n", call4);
+ call2 = bar(((struct literal_struct_0 *)val1)->field0, ((struct literal_struct_0 *)val1)->field1);
+ printf("%d\n", call2);
return 0U;
}
issue_127_uint128_t_lit.bc
--- /dev/fd/63 2022-08-10 13:35:52.498635462 +0000
+++ /dev/fd/62 2022-08-10 13:35:52.498635462 +0000
@@ -2,10 +2,8 @@
unsigned __int128 x = (unsigned __int128)3735928559ULL;
unsigned int main() {
unsigned int var0;
- unsigned __int128 val1;
- unsigned char val2;
+ unsigned char val1;
var0 = 0U;
- val1 = x;
- val2 = (val1 & (unsigned __int128)65535ULL) == (unsigned __int128)48879ULL;
- return val2 ? 0U : 1U;
+ val1 = (x & (unsigned __int128)65535ULL) == (unsigned __int128)48879ULL;
+ return val1 ? 0U : 1U;
}
struct_swap.bc
--- /dev/fd/63 2022-08-10 13:35:52.614638004 +0000
+++ /dev/fd/62 2022-08-10 13:35:52.614638004 +0000
@@ -7,17 +7,9 @@
unsigned int main() {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
var0 = 0U;
- val2 = a.field0;
- var1 = val2;
- val3 = a.field1;
- a.field0 = val3;
- val4 = var1;
- a.field1 = val4;
- val5 = a.field0;
- return val5;
+ var1 = a.field0;
+ a.field0 = a.field1;
+ a.field1 = var1;
+ return a.field0;
}
init_list.bc
--- /dev/fd/63 2022-08-10 13:35:52.730640546 +0000
+++ /dev/fd/62 2022-08-10 13:35:52.730640546 +0000
@@ -2,8 +2,6 @@
unsigned int a[5] = {0U, 1U, 2U, 3U, 4U};
unsigned int main() {
unsigned int var0;
- unsigned int val1;
var0 = 0U;
- val1 = a[1UL];
- return val1;
+ return a[1UL];
}
ret0.bc
trunc.bc
--- /dev/fd/63 2022-08-10 13:35:52.962645629 +0000
+++ /dev/fd/62 2022-08-10 13:35:52.962645629 +0000
@@ -2,8 +2,6 @@
unsigned long a = 18446744073709551615UL;
unsigned int main() {
unsigned int var0;
- unsigned long val1;
var0 = 0U;
- val1 = a;
- return (unsigned int)val1;
+ return (unsigned int)a;
}
short.bc
--- /dev/fd/63 2022-08-10 13:35:53.078648171 +0000
+++ /dev/fd/62 2022-08-10 13:35:53.078648171 +0000
@@ -3,12 +3,8 @@
unsigned int main() {
unsigned int var0;
unsigned short var1;
- unsigned short val2;
- unsigned short val3;
var0 = 0U;
a = 13U;
- val2 = a;
- var1 = val2;
- val3 = var1;
- return (unsigned int)val3;
+ var1 = a;
+ return (unsigned int)var1;
}
cast.bc
nullptr.bc
--- /dev/fd/63 2022-08-10 13:35:53.306653167 +0000
+++ /dev/fd/62 2022-08-10 13:35:53.306653167 +0000
@@ -2,15 +2,11 @@
void *ptr = (void *)0U;
unsigned int main() {
unsigned int var0;
- void *val1;
- unsigned int val2;
var0 = 0U;
- val1 = ptr;
- if (val1 != (void *)0U) {
+ if (ptr != (void *)0U) {
var0 = 1U;
} else {
var0 = 0U;
}
- val2 = var0;
- return val2;
+ return var0;
}
nested_struct.bc
--- /dev/fd/63 2022-08-10 13:35:53.494657287 +0000
+++ /dev/fd/62 2022-08-10 13:35:53.494657287 +0000
@@ -18,11 +18,7 @@
unsigned char _str_1[9] = "Name: %s\000";
unsigned int main() {
unsigned int var0;
- void *val1;
- unsigned int val2;
var0 = 0U;
- val1 = r1.field2.field0;
- printf("Name: %s", val1);
- val2 = r1.field1.field1;
- return val2;
+ printf("Name: %s", r1.field2.field0);
+ return r1.field1.field1;
}
array_swap.bc
--- /dev/fd/63 2022-08-10 13:35:53.610659828 +0000
+++ /dev/fd/62 2022-08-10 13:35:53.610659828 +0000
@@ -3,17 +3,9 @@
unsigned int main() {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
var0 = 0U;
- val2 = *a;
- var1 = val2;
- val3 = a[1UL];
- *a = val3;
- val4 = var1;
- a[1UL] = val4;
- val5 = *a;
- return val5;
+ var1 = *a;
+ *a = a[1UL];
+ a[1UL] = var1;
+ return *a;
}
bitmask.bc
--- /dev/fd/63 2022-08-10 13:35:53.726662370 +0000
+++ /dev/fd/62 2022-08-10 13:35:53.726662370 +0000
@@ -2,15 +2,11 @@
unsigned long a = 43981UL;
unsigned int main() {
unsigned int var0;
- unsigned long val1;
- unsigned int val2;
var0 = 0U;
- val1 = a;
- if ((val1 & 4080UL) >> 4UL != 188UL) {
+ if ((a & 4080UL) >> 4UL != 188UL) {
var0 = 1U;
} else {
var0 = 0U;
}
- val2 = var0;
- return val2;
+ return var0;
}
binops.bc
--- /dev/fd/63 2022-08-10 13:35:53.910666402 +0000
+++ /dev/fd/62 2022-08-10 13:35:53.910666402 +0000
@@ -4,49 +4,23 @@
unsigned int var0;
unsigned int var1;
unsigned int var2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
- unsigned int val10;
- unsigned int val11;
- unsigned int val12;
- unsigned int val13;
- unsigned int val14;
- unsigned int val15;
var0 = arg0;
- val3 = var0;
- var1 = val3 % 4U;
+ var1 = var0 % 4U;
var2 = 0U;
- val4 = var1;
- if (val4 != 0U) {
- val7 = var1;
- if (val7 != 1U) {
- val10 = var1;
- if (val10 != 2U) {
- val13 = var0;
- val14 = var0;
- var2 = (val13 + 3131756735U) * (5U & val14);
+ if (var1 != 0U) {
+ if (var1 != 1U) {
+ if (var1 != 2U) {
+ var2 = (var0 + 3131756735U) * (5U & var0);
} else {
- val11 = var0;
- val12 = var0;
- var2 = (val11 ^ 3131756735U) * (4U | val12);
+ var2 = (var0 ^ 3131756735U) * (4U | var0);
}
} else {
- val8 = var0;
- val9 = var0;
- var2 = (val8 & 3131756735U) * (3U + val9);
+ var2 = (var0 & 3131756735U) * (3U + var0);
}
} else {
- val5 = var0;
- val6 = var0;
- var2 = (val5 | 3131756735U) * (2U ^ val6);
+ var2 = (var0 | 3131756735U) * (2U ^ var0);
}
- val15 = var2;
- return val15;
+ return var2;
}
unsigned int main() {
unsigned int var0;
float.bc
--- /dev/fd/63 2022-08-10 13:35:54.262674115 +0000
+++ /dev/fd/62 2022-08-10 13:35:54.266674203 +0000
@@ -4,21 +4,13 @@
unsigned int var0;
double var1;
double var2;
- double val3;
- float val4;
- double val5;
- unsigned int val6;
var0 = 0U;
var1 = 3.1428571428571428;
- val3 = var1;
- val4 = f;
- var2 = val3 - (double)val4;
- val5 = var2;
- if (val5 >= 0.01) {
+ var2 = var1 - (double)f;
+ if (var2 >= 0.01) {
var0 = 1U;
} else {
var0 = 0U;
}
- val6 = var0;
- return val6;
+ return var0;
}
reg_test_structure_fields.bc
zeroinit.bc
--- /dev/fd/63 2022-08-10 13:35:54.570680864 +0000
+++ /dev/fd/62 2022-08-10 13:35:54.570680864 +0000
@@ -16,14 +16,9 @@
unsigned long a1[256] = {};
unsigned int main() {
unsigned int var0;
- unsigned int val1;
- unsigned long val2;
- unsigned int val3;
var0 = 0U;
- val1 = r1.field1.field0;
- if (val1 == 0U) {
- val2 = a1[42UL];
- if (val2 == 0UL) {
+ if (r1.field1.field0 == 0U) {
+ if (a1[42UL] == 0UL) {
var0 = 0U;
} else {
var0 = 2U;
@@ -31,6 +26,5 @@
} else {
var0 = 1U;
}
- val3 = var0;
- return val3;
+ return var0;
}
funcptr.bc
--- /dev/fd/63 2022-08-10 13:35:54.826686474 +0000
+++ /dev/fd/62 2022-08-10 13:35:54.826686474 +0000
@@ -5,39 +5,27 @@
unsigned int add(unsigned int arg0, unsigned int arg1) {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
var0 = arg0;
var1 = arg1;
- val2 = var0;
- val3 = var1;
- return val2 + val3;
+ return var0 + var1;
}
unsigned int sub(unsigned int arg0, unsigned int arg1) {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
var0 = arg0;
var1 = arg1;
- val2 = var0;
- val3 = var1;
- return val2 - val3;
+ return var0 - var1;
}
unsigned int main() {
unsigned int var0;
void *var1;
- unsigned int val2;
- void *val3;
- unsigned int call4;
+ unsigned int call2;
var0 = 0U;
- val2 = x;
- if (val2 == 0U) {
+ if (x == 0U) {
var1 = ⊂
} else {
var1 = &add;
}
- val3 = var1;
- call4 = ((unsigned int (*)(unsigned int, unsigned int))val3)(2U, 2U);
- return call4;
+ call2 = ((unsigned int (*)(unsigned int, unsigned int))var1)(2U, 2U);
+ return call2;
}
goto_loop.bc
--- /dev/fd/63 2022-08-10 13:35:55.010690506 +0000
+++ /dev/fd/62 2022-08-10 13:35:55.010690506 +0000
@@ -4,41 +4,23 @@
unsigned int main() {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
var0 = 0U;
var1 = 0U;
while (1U)
{
- val2 = var1;
- var1 = val2 + 1U;
- val3 = var1;
- if (val3 == 1U) {
- val4 = var1;
- printf("%d\n", val4);
+ var1 = var1 + 1U;
+ if (var1 == 1U) {
+ printf("%d\n", var1);
+ } else if (var1 != 2U) {
+ break;
} else {
- val5 = var1;
- if (val5 != 2U) {
- break;
- } else {
- val6 = var1;
- printf("%d\n", val6);
- }
+ printf("%d\n", var1);
}
}
- if (val3 != 1U && val5 != 2U) {
- val7 = var1;
- if (val7 == 3U) {
- val8 = var1;
- printf("%d\n", val8);
+ if (var1 != 1U && var1 != 2U) {
+ if (var1 == 3U) {
+ printf("%d\n", var1);
}
- val9 = var0;
- return val9;
+ return var0;
}
}
branch.bc
--- /dev/fd/63 2022-08-10 13:35:55.398699008 +0000
+++ /dev/fd/62 2022-08-10 13:35:55.398699008 +0000
@@ -11,29 +11,19 @@
unsigned int var0;
unsigned long var1;
unsigned long var2;
- unsigned int val3;
- unsigned int val4;
- unsigned long val5;
- unsigned int val6;
- unsigned long val7;
var0 = 0U;
var1 = (unsigned long)(&a);
var2 = (unsigned long)(&c);
- val3 = c;
- if (val3 == 0U) {
- val6 = c;
- printf("Global variable 'c' of value %u is at ", val6);
- val7 = var2;
- if (val7 % 2UL != 0UL) {
+ if (c == 0U) {
+ printf("Global variable 'c' of value %u is at ", c);
+ if (var2 % 2UL != 0UL) {
printf("odd ");
} else {
printf("even ");
}
} else {
- val4 = a;
- printf("Global variable 'a' of value %u is at ", val4);
- val5 = var1;
- if (val5 % 2UL != 0UL) {
+ printf("Global variable 'a' of value %u is at ", a);
+ if (var1 % 2UL != 0UL) {
printf("odd ");
} else {
printf("even ");
bitops.bc
--- /dev/fd/63 2022-08-10 13:35:55.746706633 +0000
+++ /dev/fd/62 2022-08-10 13:35:55.750706721 +0000
@@ -4,34 +4,14 @@
unsigned int main() {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
- unsigned int val10;
- unsigned int val11;
var0 = 0U;
var1 = 0U;
- val2 = a;
- val3 = b;
- if (((int)val2 >> val3 & 1U) != 0U) {
- val4 = var1;
- var1 = val4 + 1U;
+ if (((int)a >> b & 1U) != 0U) {
+ var1 = var1 + 1U;
}
- val5 = a;
- val6 = b;
- if ((val5 >> val6 ^ 1U) != 0U) {
- val7 = var1;
- var1 = val7 + 2U;
+ if ((a >> b ^ 1U) != 0U) {
+ var1 = var1 + 2U;
}
- val8 = a;
- val9 = b;
- val10 = var1;
- var1 = val10 + 3U;
- val11 = var1;
- return val11;
+ var1 = var1 + 3U;
+ return var1;
}
vectors.bc
--- /dev/fd/63 2022-08-10 13:35:56.018712593 +0000
+++ /dev/fd/62 2022-08-10 13:35:56.018712593 +0000
@@ -10,43 +10,15 @@
__attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int var5;
__attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int var6;
void *var7;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val8;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val9;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val10;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val11;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val12;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val13;
- void *val14;
- unsigned int val15;
- void *val16;
- unsigned int val17;
- void *val18;
- unsigned int val19;
- void *val20;
- unsigned int val21;
var0 = 0U;
var4 = (__attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int){1U, 2U, 3U, 4U};
- val8 = var4;
- var1 = val8;
+ var1 = var4;
var5 = (__attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int){};
- val9 = var5;
- var2 = val9;
+ var2 = var5;
var6 = (__attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int){4U, 3U, 2U, 1U};
- val10 = var6;
- var3 = val10;
- val11 = var1;
- val12 = var2;
- val13 = var3;
- var1 = val11 * val12 + val13;
+ var3 = var6;
+ var1 = var1 * var2 + var3;
var7 = (&var1);
- val14 = var7;
- val15 = *((unsigned int *)val14);
- val16 = var7;
- val17 = ((unsigned int *)val16)[1UL];
- val18 = var7;
- val19 = ((unsigned int *)val18)[2UL];
- val20 = var7;
- val21 = ((unsigned int *)val20)[3UL];
- printf("a=[%d %d %d %d]\n", val15, val17, val19, val21);
+ printf("a=[%d %d %d %d]\n", *((unsigned int *)var7), ((unsigned int *)var7)[1UL], ((unsigned int *)var7)[2UL], ((unsigned int *)var7)[3UL]);
return 0U;
}
issue_4.bc
--- /dev/fd/63 2022-08-10 13:35:56.134715135 +0000
+++ /dev/fd/62 2022-08-10 13:35:56.134715135 +0000
@@ -5,32 +5,17 @@
unsigned int var1;
unsigned int var2;
unsigned int var3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
- unsigned int val10;
var0 = arg0;
var1 = arg1;
var2 = 0U;
var3 = 0U;
- do {
- val4 = var3;
- if (val4 != 42U) {
- val5 = var0;
- val6 = var2;
- var2 = val6 + val5;
- val7 = var1;
- val8 = var2;
- var2 = val8 % val7;
- val9 = var3;
- var3 = val9 + 1U;
+ while (var3 != 42U)
+ {
+ var2 = var2 + var0;
+ var2 = var2 % var1;
+ var3 = var3 + 1U;
}
- } while (val4 != 42U);
- val10 = var2;
- return val10;
+ return var2;
}
unsigned int main() {
unsigned int var0;
conflicting_global.bc
--- /dev/fd/63 2022-08-10 13:35:56.358720044 +0000
+++ /dev/fd/62 2022-08-10 13:35:56.358720044 +0000
@@ -4,12 +4,8 @@
unsigned char _str[4] = "%d\n\000";
unsigned int main() {
unsigned int var0;
- unsigned int val1;
- unsigned int val2;
var0 = 4U;
- val1 = var0;
- printf("%d\n", val1);
- val2 = a;
- printf("%d\n", val2);
+ printf("%d\n", var0);
+ printf("%d\n", a);
return 0U;
}
issue_123_uint128_t.bc
--- /dev/fd/63 2022-08-10 13:35:56.474722585 +0000
+++ /dev/fd/62 2022-08-10 13:35:56.474722585 +0000
@@ -3,14 +3,8 @@
unsigned int main() {
unsigned int var0;
unsigned __int128 var1;
- unsigned long val2;
- unsigned __int128 val3;
- unsigned long val4;
var0 = 0U;
- val2 = x;
- var1 = val2;
- val3 = var1;
- x = val3;
- val4 = x;
- return (unsigned int)(val4 & 255UL);
+ var1 = x;
+ x = var1;
+ return (unsigned int)(x & 255UL);
}
fizzbuzz_stateful.bc
--- /dev/fd/63 2022-08-10 13:35:56.590725127 +0000
+++ /dev/fd/62 2022-08-10 13:35:56.590725127 +0000
@@ -8,52 +8,31 @@
unsigned char _str_3[2] = "\n\000";
void fizzbuzz() {
unsigned int var0;
- unsigned int val1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- val1 = i;
- var0 = val1;
- val2 = i;
- if ((int)val2 % 3 == 0U) {
+ var0 = i;
+ if ((int)i % 3 == 0U) {
i = 4U;
printf("fizz");
}
- val3 = i;
- if ((int)val3 % 5 == 0U) {
+ if ((int)i % 5 == 0U) {
printf("buzz");
}
- val4 = i;
- if ((int)val4 % 3 != 0U) {
- val5 = i;
- if ((int)val5 % 5 != 0U) {
- val6 = i;
- printf("%d", val6);
+ if ((int)i % 3 != 0U) {
+ if ((int)i % 5 != 0U) {
+ printf("%d", i);
}
}
- val7 = var0;
- i = val7;
+ i = var0;
return;
}
unsigned int main() {
unsigned int var0;
- unsigned int val1;
- unsigned int val2;
- unsigned int val3;
var0 = 0U;
i = 1U;
- do {
- val1 = i;
- if ((int)val1 < 16) {
+ while ((int)i < 16)
+ {
fizzbuzz();
printf("\n");
- val2 = i;
- i = val2 + 1U;
+ i = i + 1U;
}
- } while ((int)val1 < 16);
- val3 = var0;
- return val3;
+ return var0;
}
issue_94_strncmp.bc
bool.bc
--- /dev/fd/63 2022-08-10 13:35:57.282740247 +0000
+++ /dev/fd/62 2022-08-10 13:35:57.282740247 +0000
@@ -3,17 +3,11 @@
unsigned long b = 1UL;
unsigned int main() {
unsigned int var0;
- unsigned long val1;
- unsigned long val2;
- unsigned int val3;
var0 = 0U;
- val1 = a;
- val2 = b;
- if ((unsigned int)(val1 == val2) != 0U) {
+ if ((unsigned int)(a == b) != 0U) {
var0 = 1U;
} else {
var0 = 0U;
}
- val3 = var0;
- return val3;
+ return var0;
}
global_using_function_decl.bc
--- /dev/fd/63 2022-08-10 13:35:57.470744205 +0000
+++ /dev/fd/62 2022-08-10 13:35:57.470744205 +0000
@@ -7,8 +7,6 @@
return;
}
unsigned int main() {
- void *val0;
- val0 = afunc_pointer;
- ((void (*)(unsigned int))val0)(0U);
+ ((void (*)(unsigned int))afunc_pointer)(0U);
return 0U;
}
fcmp.bc
--- /dev/fd/63 2022-08-10 13:35:57.586746647 +0000
+++ /dev/fd/62 2022-08-10 13:35:57.586746647 +0000
@@ -17,56 +17,18 @@
unsigned int var9;
float call10;
float call11;
- float val12;
- float val13;
- float val14;
- float val15;
- float val16;
- float val17;
- float val18;
- float val19;
- float val20;
- float val21;
- float val22;
- float val23;
- float val24;
- unsigned int val25;
- unsigned int val26;
- unsigned int val27;
- unsigned int val28;
- unsigned int val29;
- unsigned int val30;
var0 = __builtin_nan("");
call10 = atof("3");
var1 = call10;
call11 = atof("2");
var2 = call11;
- val12 = var1;
- var3 = -val12;
- val13 = var3;
- val14 = var0;
- var4 = (val13 > val14);
- val15 = var3;
- val16 = var0;
- var5 = (val15 >= val16);
- val17 = var1;
- val18 = var2;
- var6 = (val17 > val18);
- val19 = var1;
- val20 = var2;
- var7 = (val19 >= val20);
- val21 = var1;
- val22 = var0;
- var8 = __builtin_isunordered(val21, val22);
- val23 = var1;
- val24 = var2;
- var9 = __builtin_isunordered(val23, val24);
- val25 = var4;
- val26 = var5;
- val27 = var6;
- val28 = var7;
- val29 = var8;
- val30 = var9;
- printf("%d %d %d %d %d %d\n", val25, val26, val27, val28, val29, val30);
+ var3 = -var1;
+ var4 = (var3 > var0);
+ var5 = (var3 >= var0);
+ var6 = (var1 > var2);
+ var7 = (var1 >= var2);
+ var8 = __builtin_isunordered(var1, var0);
+ var9 = __builtin_isunordered(var1, var2);
+ printf("%d %d %d %d %d %d\n", var4, var5, var6, var7, var8, var9);
return 0U;
}
byval_struct.bc
--- /dev/fd/63 2022-08-10 13:35:57.702749090 +0000
+++ /dev/fd/62 2022-08-10 13:35:57.702749090 +0000
@@ -14,13 +14,9 @@
unsigned char _str_3[2] = "4\000";
unsigned char _str_4[11] = "%lld %lld\n\000";
unsigned long get_3x(struct struct_foo arg0) {
- unsigned long val0;
- unsigned long val1;
void *arg0_ptr = &arg0;
- val0 = ((struct struct_foo *)arg0_ptr)->field0;
- ((struct struct_foo *)arg0_ptr)->field0 = val0 * 3UL;
- val1 = ((struct struct_foo *)arg0_ptr)->field0;
- return val1;
+ ((struct struct_foo *)arg0_ptr)->field0 = ((struct struct_foo *)arg0_ptr)->field0 * 3UL;
+ return ((struct struct_foo *)arg0_ptr)->field0;
}
unsigned int main() {
struct struct_foo var0;
@@ -30,8 +26,6 @@
unsigned int call4;
unsigned int call5;
unsigned long call6;
- unsigned long val7;
- unsigned long val8;
call2 = atoi("1");
var0.field0 = (long)call2;
call3 = atoi("2");
@@ -42,8 +36,6 @@
var0.field3 = (long)call5;
call6 = get_3x(var0);
var1 = call6;
- val7 = var0.field0;
- val8 = var1;
- printf("%lld %lld\n", val7, val8);
+ printf("%lld %lld\n", var0.field0, var1);
return 0U;
}
nested_while.bc
--- /dev/fd/63 2022-08-10 13:35:57.822751616 +0000
+++ /dev/fd/62 2022-08-10 13:35:57.822751616 +0000
@@ -8,40 +8,24 @@
unsigned int var0;
unsigned int var1;
unsigned int call2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
- unsigned int val10;
var0 = 0U;
call2 = atoi("5");
var1 = call2;
- val3 = var1;
- if ((int)val3 > 10) {
- do {
- val4 = var1;
- if ((int)val4 < 20) {
- val5 = var1;
- var1 = val5 + 1U;
- val6 = var1;
- printf("loop1 x: %d\n", val6);
+ if ((int)var1 > 10) {
+ while ((int)var1 < 20)
+ {
+ var1 = var1 + 1U;
+ printf("loop1 x: %d\n", var1);
}
- } while ((int)val4 < 20);
}
- if ((int)val3 <= 10 || (int)val4 >= 20) {
- do {
- val7 = var1;
- if ((int)val7 < 20) {
- val8 = var1;
- var1 = val8 + 1U;
- val9 = var1;
- printf("loop2 x: %d\n", val9);
+ if ((int)var1 <= 10 || (int)var1 >= 20) {
+ while ((int)var1 < 20)
+ {
+ var1 = var1 + 1U;
+ printf("loop2 x: %d\n", var1);
}
- } while ((int)val7 < 20);
- val10 = var0;
- return val10;
+ }
+ if (((int)var1 <= 10 || (int)var1 >= 20) && (int)var1 >= 20) {
+ return var0;
}
}
func_cond_two_arg.bc
--- /dev/fd/63 2022-08-10 13:35:58.250760627 +0000
+++ /dev/fd/62 2022-08-10 13:35:58.250760627 +0000
@@ -5,29 +5,19 @@
unsigned int f(unsigned int arg0, unsigned int arg1) {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
var0 = arg0;
var1 = arg1;
- val2 = var0;
- val3 = var1;
- return (unsigned int)((int)val2 < (int)val3);
+ return (unsigned int)((int)var0 < (int)var1);
}
unsigned int main() {
unsigned int var0;
- unsigned int val1;
- unsigned int val2;
- unsigned int call3;
- unsigned int val4;
+ unsigned int call1;
var0 = 0U;
- val1 = x;
- val2 = y;
- call3 = f(val1, val2);
- if (call3 == 0U) {
+ call1 = f(x, y);
+ if (call1 == 0U) {
var0 = 0U;
} else {
var0 = 1U;
}
- val4 = var0;
- return val4;
+ return var0;
}
zext.bc
--- /dev/fd/63 2022-08-10 13:35:58.438764585 +0000
+++ /dev/fd/62 2022-08-10 13:35:58.438764585 +0000
@@ -2,8 +2,6 @@
unsigned char a = (unsigned char)1U;
unsigned int main() {
unsigned int var0;
- unsigned char val1;
var0 = 0U;
- val1 = a;
- return (unsigned int)val1;
+ return (unsigned int)a;
}
inttoptr.bc
--- /dev/fd/63 2022-08-10 13:35:58.558767111 +0000
+++ /dev/fd/62 2022-08-10 13:35:58.558767111 +0000
@@ -3,18 +3,12 @@
unsigned int main() {
unsigned int var0;
void *var1;
- unsigned long val2;
- void *val3;
- unsigned int val4;
var0 = 0U;
- val2 = a;
- var1 = (void *)val2;
- val3 = var1;
- if (val3 == (void *)0U) {
+ var1 = (void *)a;
+ if (var1 == (void *)0U) {
var0 = 0U;
} else {
var0 = 42U;
}
- val4 = var0;
- return val4;
+ return var0;
}
assert.bc
--- /dev/fd/63 2022-08-10 13:35:58.742770985 +0000
+++ /dev/fd/62 2022-08-10 13:35:58.742770985 +0000
@@ -8,24 +8,14 @@
unsigned char _str_3[7] = "a % 15\000";
unsigned int main() {
unsigned int var0;
- unsigned long val1;
- unsigned long val2;
- unsigned long val3;
var0 = 0U;
- val1 = a;
- if (val1 % 3UL == 0UL) {
+ if (a % 3UL == 0UL) {
__assert_fail("a % 3", "assert.c", 6U, "int main(void)");
+ } else if (a % 7UL == 0UL) {
+ __assert_fail("a % 7", "assert.c", 7U, "int main(void)");
+ } else if (a % 15UL == 0UL) {
+ __assert_fail("a % 15", "assert.c", 8U, "int main(void)");
} else {
- val2 = a;
- if (val2 % 7UL == 0UL) {
- __assert_fail("a % 7", "assert.c", 7U, "int main(void)");
- } else {
- val3 = a;
- if (val3 % 15UL == 0UL) {
- __assert_fail("a % 15", "assert.c", 8U, "int main(void)");
- } else {
- return 0U;
- }
- }
+ return 0U;
}
}
loop.bc
--- /dev/fd/63 2022-08-10 13:35:59.122778985 +0000
+++ /dev/fd/62 2022-08-10 13:35:59.122778985 +0000
@@ -6,26 +6,17 @@
unsigned int main() {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
var0 = 0U;
var1 = 0U;
- do {
- val2 = var1;
- if (val2 != 10U) {
- val3 = var1;
- printf("Variable at %d is ", val3);
- val4 = var1;
- if (val4 % 2U != 0U) {
+ while (var1 != 10U)
+ {
+ printf("Variable at %d is ", var1);
+ if (var1 % 2U != 0U) {
printf("odd.\n");
} else {
printf("even.\n");
}
- val5 = var1;
- var1 = val5 + 1U;
+ var1 = var1 + 1U;
}
- } while (val2 != 10U);
return 0U;
}
switch.bc
--- /dev/fd/63 2022-08-10 13:35:59.418785217 +0000
+++ /dev/fd/62 2022-08-10 13:35:59.418785217 +0000
@@ -3,12 +3,9 @@
unsigned int main() {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
var0 = 0U;
var1 = 0U;
- val2 = a;
- switch (val2) {
+ switch (a) {
default:
{
var1 = 255U;
@@ -30,6 +27,5 @@
}
break;
}
- val3 = var1;
- return val3;
+ return var1;
}
template_parameter_pack.bc
--- /dev/fd/63 2022-08-10 13:35:59.630789680 +0000
+++ /dev/fd/62 2022-08-10 13:35:59.630789680 +0000
@@ -17,71 +17,43 @@
unsigned int var2;
unsigned int var3;
unsigned int var4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
- unsigned int call10;
+ unsigned int call5;
var0 = arg0;
var1 = arg1;
var2 = arg2;
var3 = arg3;
var4 = arg4;
- val5 = var0;
- val6 = var1;
- val7 = var2;
- val8 = var3;
- val9 = var4;
- call10 = _Z3sumIiJiiiEET_S0_DpT0_(val6, val7, val8, val9);
- return val5 + call10;
+ call5 = _Z3sumIiJiiiEET_S0_DpT0_(var1, var2, var3, var4);
+ return var0 + call5;
}
unsigned int _Z3sumIiJiiiEET_S0_DpT0_(unsigned int arg0, unsigned int arg1, unsigned int arg2, unsigned int arg3) {
unsigned int var0;
unsigned int var1;
unsigned int var2;
unsigned int var3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int call8;
+ unsigned int call4;
var0 = arg0;
var1 = arg1;
var2 = arg2;
var3 = arg3;
- val4 = var0;
- val5 = var1;
- val6 = var2;
- val7 = var3;
- call8 = _Z3sumIiJiiEET_S0_DpT0_(val5, val6, val7);
- return val4 + call8;
+ call4 = _Z3sumIiJiiEET_S0_DpT0_(var1, var2, var3);
+ return var0 + call4;
}
unsigned int _Z3sumIiJiiEET_S0_DpT0_(unsigned int arg0, unsigned int arg1, unsigned int arg2) {
unsigned int var0;
unsigned int var1;
unsigned int var2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int call6;
+ unsigned int call3;
var0 = arg0;
var1 = arg1;
var2 = arg2;
- val3 = var0;
- val4 = var1;
- val5 = var2;
- call6 = _Z3sumIiET_S0_S0_(val4, val5);
- return val3 + call6;
+ call3 = _Z3sumIiET_S0_S0_(var1, var2);
+ return var0 + call3;
}
unsigned int _Z3sumIiET_S0_S0_(unsigned int arg0, unsigned int arg1) {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
var0 = arg0;
var1 = arg1;
- val2 = var0;
- val3 = var1;
- return val2 + val3;
+ return var0 + var1;
}
byval_tail_nogep.ll
byval_tail_gep.ll
See the diff generated by this PR for the tests here: https://github.com/lifting-bits/rellic/actions/runs/2833281732
fizzbuzz.bc
--- /dev/fd/63 2022-08-10 14:29:17.983681722 +0000
+++ /dev/fd/62 2022-08-10 14:29:17.983681722 +0000
@@ -7,46 +7,24 @@
unsigned int main() {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
var0 = 0U;
var1 = 0U;
- do {
- val2 = var1;
- if ((int)val2 < 30) {
- val3 = var1;
- if ((int)val3 % 3 == 0U) {
- val4 = var1;
- if ((int)val4 % 5 == 0U) {
- printf("fizzbuzz\n");
- }
- }
- if ((int)val3 % 3 != 0U || !((int)val3 % 3 != 0U || (int)val4 % 5 == 0U)) {
- val5 = var1;
- if (((int)val3 % 3 != 0U || !((int)val4 % 5 == 0U || (int)val3 % 3 != 0U)) && (int)val5 % 3 != 0U) {
- val6 = var1;
- if ((int)val6 % 5 != 0U) {
- val7 = var1;
- printf("%d\n", val7);
+ while ((int)var1 < 30)
+ {
+ if ((int)var1 % 3 != 0U || !((int)var1 % 5 == 0U || (int)var1 % 3 != 0U)) {
+ if ((int)var1 % 3 != 0U) {
+ if ((int)var1 % 5 != 0U) {
+ printf("%d\n", var1);
} else {
printf("buzz\n");
}
} else {
- if (((int)val3 % 3 != 0U || !((int)val4 % 5 == 0U || (int)val3 % 3 != 0U)) && (int)val5 % 3 == 0U) {
- printf("fizz\n");
- }
+ printf("fizz\n");
}
+ } else {
+ printf("fizzbuzz\n");
}
- val8 = var1;
- var1 = val8 + 1U;
+ var1 = var1 + 1U;
}
- } while ((int)val2 < 30);
- val9 = var0;
- return val9;
+ return var0;
}
typedefs_of_typedefs.bc
--- /dev/fd/63 2022-08-10 14:29:18.823688515 +0000
+++ /dev/fd/62 2022-08-10 14:29:18.823688515 +0000
@@ -12,44 +12,16 @@
__attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long var5;
__attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long var6;
void *var7;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val8;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val9;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val10;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val11;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val12;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val13;
- void *val14;
- unsigned int val15;
- void *val16;
- unsigned int val17;
- unsigned long val18;
- unsigned long val19;
- unsigned long val20;
- unsigned long val21;
var0 = 0U;
var4 = (__attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long){1UL, 2UL};
- val8 = var4;
- var1 = val8;
+ var1 = var4;
var5 = (__attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long){};
- val9 = var5;
- var2 = val9;
+ var2 = var5;
var6 = (__attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long){4UL, 3UL};
- val10 = var6;
- var3 = val10;
- val11 = var1;
- val12 = var2;
- val13 = var3;
- var1 = val11 * val12 + val13;
+ var3 = var6;
+ var1 = var1 * var2 + var3;
var7 = (&var1);
- val14 = var7;
- val15 = *((unsigned int *)val14);
- val16 = var7;
- val17 = ((unsigned int *)val16)[1UL];
- printf("a=[%d %d]\n", val15, val17);
- val18 = *array;
- val19 = array[1UL];
- val20 = array[2UL];
- val21 = array[3UL];
- printf("array=[%lld %lld %lld %lld]\n", val18, val19, val20, val21);
+ printf("a=[%d %d]\n", *((unsigned int *)var7), ((unsigned int *)var7)[1UL]);
+ printf("array=[%lld %lld %lld %lld]\n", *array, array[1UL], array[2UL], array[3UL]);
return 0U;
}
switch_loop.bc
--- /dev/fd/63 2022-08-10 14:29:18.947689517 +0000
+++ /dev/fd/62 2022-08-10 14:29:18.947689517 +0000
@@ -4,36 +4,26 @@
unsigned int main() {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
var0 = 0U;
var1 = 0U;
- do {
- val2 = var1;
- var1 = val2 + 1U;
- val3 = var1;
- if (!(val3 != 1U && val3 != 2U && val3 != 3U)) {
- if (val3 == 3U) {
- val6 = var1;
- printf("%d\n", val6);
+ while (1U)
+ {
+ var1 = var1 + 1U;
+ if (var1 != 1U && var1 != 2U && var1 != 3U) {
break;
}
- if (val3 == 2U) {
- val5 = var1;
- printf("%d\n", val5);
+ if (var1 == 3U) {
+ printf("%d\n", var1);
+ break;
+ }
+ if (var1 == 2U) {
+ printf("%d\n", var1);
}
- if (val3 == 1U) {
- val4 = var1;
- printf("%d\n", val4);
+ if (var1 == 1U) {
+ printf("%d\n", var1);
}
}
- } while (!(val3 != 1U && val3 != 2U && val3 != 3U));
- if (val3 == 3U || !(val3 == 2U || val3 == 3U || val3 == 1U)) {
- val7 = var0;
- return val7;
+ if (var1 == 3U || !(var1 == 2U || var1 == 3U || var1 == 1U)) {
+ return var0;
}
}
func_cond_zero_arg.bc
--- /dev/fd/63 2022-08-10 14:29:19.475693787 +0000
+++ /dev/fd/62 2022-08-10 14:29:19.475693787 +0000
@@ -8,7 +8,6 @@
unsigned int main() {
unsigned int var0;
unsigned int call1;
- unsigned int val2;
var0 = 0U;
call1 = f();
if (call1 == 0U) {
@@ -16,6 +15,5 @@
} else {
var0 = 1U;
}
- val2 = var0;
- return val2;
+ return var0;
}
conflicting_names.bc
--- /dev/fd/63 2022-08-10 14:29:19.675695405 +0000
+++ /dev/fd/62 2022-08-10 14:29:19.675695405 +0000
@@ -4,17 +4,13 @@
unsigned int atoi(void *arg0);
unsigned int foo() {
unsigned int var0;
- unsigned int val1;
var0 = 0U;
- val1 = var0;
- return val1;
+ return var0;
}
unsigned int bar() {
unsigned int var0;
- unsigned int val1;
var0 = 1U;
- val1 = var0;
- return val1;
+ return var0;
}
unsigned int main() {
unsigned int var0;
@@ -24,35 +20,21 @@
unsigned int var4;
unsigned int var5;
unsigned int var6;
- unsigned int val7;
- void *val8;
- void *val9;
- unsigned int call10;
- unsigned int val11;
- unsigned int val12;
- unsigned int val13;
- unsigned int val14;
+ unsigned int call7;
var0 = 0U;
var1 = 0U;
var2 = (void *)0U;
var3 = 0U;
- val7 = var1;
- if (1 >= (int)val7) {
+ if (1 >= (int)var1) {
var6 = 1U;
- val13 = var6;
- var3 = val13;
+ var3 = var6;
} else {
- val8 = var2;
- val9 = ((void **)val8)[1UL];
- call10 = atoi(val9);
- var4 = call10;
- val11 = var4;
- if ((int)val11 > 10) {
+ call7 = atoi(((void **)var2)[1UL]);
+ var4 = call7;
+ if ((int)var4 > 10) {
var5 = 99U;
- val12 = var5;
- var3 = val12;
+ var3 = var5;
}
}
- val14 = var3;
- return val14;
+ return var3;
}
struct.bc
--- /dev/fd/63 2022-08-10 14:29:19.939697540 +0000
+++ /dev/fd/62 2022-08-10 14:29:19.939697540 +0000
@@ -6,19 +6,11 @@
struct struct__pair a = {0U, 42U};
unsigned int main() {
unsigned int var0;
- unsigned int val1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
var0 = 0U;
- val1 = a.field0;
- if (val1 == 0U) {
- val3 = a.field1;
- var0 = val3;
+ if (a.field0 == 0U) {
+ var0 = a.field1;
} else {
- val2 = a.field0;
- var0 = val2;
+ var0 = a.field0;
}
- val4 = var0;
- return val4;
+ return var0;
}
issue_183_literal_structs.bc
--- /dev/fd/63 2022-08-10 14:29:20.143699189 +0000
+++ /dev/fd/62 2022-08-10 14:29:20.143699189 +0000
@@ -21,24 +21,18 @@
unsigned int bar(unsigned long arg0, unsigned long arg1) {
struct struct_foo_t var0;
void *val1;
- unsigned int val2;
val1 = (&var0);
((struct literal_struct_0 *)val1)->field0 = arg0;
((struct literal_struct_0 *)val1)->field1 = arg1;
- val2 = *(unsigned int *)(&var0.field3);
- return val2;
+ return *(unsigned int *)(&var0.field3);
}
unsigned int main() {
struct struct_foo_t var0;
void *val1;
- unsigned long val2;
- unsigned long val3;
- unsigned int call4;
+ unsigned int call2;
*(unsigned int *)(&var0.field3) = 3U;
val1 = (&var0);
- val2 = ((struct literal_struct_0 *)val1)->field0;
- val3 = ((struct literal_struct_0 *)val1)->field1;
- call4 = bar(val2, val3);
- printf("%d\n", call4);
+ call2 = bar(((struct literal_struct_0 *)val1)->field0, ((struct literal_struct_0 *)val1)->field1);
+ printf("%d\n", call2);
return 0U;
}
issue_127_uint128_t_lit.bc
--- /dev/fd/63 2022-08-10 14:29:20.267700192 +0000
+++ /dev/fd/62 2022-08-10 14:29:20.267700192 +0000
@@ -2,10 +2,8 @@
unsigned __int128 x = (unsigned __int128)3735928559ULL;
unsigned int main() {
unsigned int var0;
- unsigned __int128 val1;
- unsigned char val2;
+ unsigned char val1;
var0 = 0U;
- val1 = x;
- val2 = (val1 & (unsigned __int128)65535ULL) == (unsigned __int128)48879ULL;
- return val2 ? 0U : 1U;
+ val1 = (x & (unsigned __int128)65535ULL) == (unsigned __int128)48879ULL;
+ return val1 ? 0U : 1U;
}
struct_swap.bc
--- /dev/fd/63 2022-08-10 14:29:20.391701195 +0000
+++ /dev/fd/62 2022-08-10 14:29:20.391701195 +0000
@@ -7,17 +7,9 @@
unsigned int main() {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
var0 = 0U;
- val2 = a.field0;
- var1 = val2;
- val3 = a.field1;
- a.field0 = val3;
- val4 = var1;
- a.field1 = val4;
- val5 = a.field0;
- return val5;
+ var1 = a.field0;
+ a.field0 = a.field1;
+ a.field1 = var1;
+ return a.field0;
}
init_list.bc
--- /dev/fd/63 2022-08-10 14:29:20.511702165 +0000
+++ /dev/fd/62 2022-08-10 14:29:20.511702165 +0000
@@ -2,8 +2,6 @@
unsigned int a[5] = {0U, 1U, 2U, 3U, 4U};
unsigned int main() {
unsigned int var0;
- unsigned int val1;
var0 = 0U;
- val1 = a[1UL];
- return val1;
+ return a[1UL];
}
ret0.bc
trunc.bc
--- /dev/fd/63 2022-08-10 14:29:20.747704074 +0000
+++ /dev/fd/62 2022-08-10 14:29:20.747704074 +0000
@@ -2,8 +2,6 @@
unsigned long a = 18446744073709551615UL;
unsigned int main() {
unsigned int var0;
- unsigned long val1;
var0 = 0U;
- val1 = a;
- return (unsigned int)val1;
+ return (unsigned int)a;
}
short.bc
--- /dev/fd/63 2022-08-10 14:29:20.867705044 +0000
+++ /dev/fd/62 2022-08-10 14:29:20.867705044 +0000
@@ -3,12 +3,8 @@
unsigned int main() {
unsigned int var0;
unsigned short var1;
- unsigned short val2;
- unsigned short val3;
var0 = 0U;
a = 13U;
- val2 = a;
- var1 = val2;
- val3 = var1;
- return (unsigned int)val3;
+ var1 = a;
+ return (unsigned int)var1;
}
cast.bc
nullptr.bc
--- /dev/fd/63 2022-08-10 14:29:21.107706985 +0000
+++ /dev/fd/62 2022-08-10 14:29:21.107706985 +0000
@@ -2,15 +2,11 @@
void *ptr = (void *)0U;
unsigned int main() {
unsigned int var0;
- void *val1;
- unsigned int val2;
var0 = 0U;
- val1 = ptr;
- if (val1 != (void *)0U) {
+ if (ptr != (void *)0U) {
var0 = 1U;
} else {
var0 = 0U;
}
- val2 = var0;
- return val2;
+ return var0;
}
nested_struct.bc
--- /dev/fd/63 2022-08-10 14:29:21.299708538 +0000
+++ /dev/fd/62 2022-08-10 14:29:21.303708570 +0000
@@ -18,11 +18,7 @@
unsigned char _str_1[9] = "Name: %s\000";
unsigned int main() {
unsigned int var0;
- void *val1;
- unsigned int val2;
var0 = 0U;
- val1 = r1.field2.field0;
- printf("Name: %s", val1);
- val2 = r1.field1.field1;
- return val2;
+ printf("Name: %s", r1.field2.field0);
+ return r1.field1.field1;
}
array_swap.bc
--- /dev/fd/63 2022-08-10 14:29:21.419709508 +0000
+++ /dev/fd/62 2022-08-10 14:29:21.419709508 +0000
@@ -3,17 +3,9 @@
unsigned int main() {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
var0 = 0U;
- val2 = *a;
- var1 = val2;
- val3 = a[1UL];
- *a = val3;
- val4 = var1;
- a[1UL] = val4;
- val5 = *a;
- return val5;
+ var1 = *a;
+ *a = a[1UL];
+ a[1UL] = var1;
+ return *a;
}
bitmask.bc
--- /dev/fd/63 2022-08-10 14:29:21.539710479 +0000
+++ /dev/fd/62 2022-08-10 14:29:21.539710479 +0000
@@ -2,15 +2,11 @@
unsigned long a = 43981UL;
unsigned int main() {
unsigned int var0;
- unsigned long val1;
- unsigned int val2;
var0 = 0U;
- val1 = a;
- if ((val1 & 4080UL) >> 4UL != 188UL) {
+ if ((a & 4080UL) >> 4UL != 188UL) {
var0 = 1U;
} else {
var0 = 0U;
}
- val2 = var0;
- return val2;
+ return var0;
}
binops.bc
--- /dev/fd/63 2022-08-10 14:29:21.735712064 +0000
+++ /dev/fd/62 2022-08-10 14:29:21.735712064 +0000
@@ -4,49 +4,23 @@
unsigned int var0;
unsigned int var1;
unsigned int var2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
- unsigned int val10;
- unsigned int val11;
- unsigned int val12;
- unsigned int val13;
- unsigned int val14;
- unsigned int val15;
var0 = arg0;
- val3 = var0;
- var1 = val3 % 4U;
+ var1 = var0 % 4U;
var2 = 0U;
- val4 = var1;
- if (val4 != 0U) {
- val7 = var1;
- if (val7 != 1U) {
- val10 = var1;
- if (val10 != 2U) {
- val13 = var0;
- val14 = var0;
- var2 = (val13 + 3131756735U) * (5U & val14);
+ if (var1 != 0U) {
+ if (var1 != 1U) {
+ if (var1 != 2U) {
+ var2 = (var0 + 3131756735U) * (5U & var0);
} else {
- val11 = var0;
- val12 = var0;
- var2 = (val11 ^ 3131756735U) * (4U | val12);
+ var2 = (var0 ^ 3131756735U) * (4U | var0);
}
} else {
- val8 = var0;
- val9 = var0;
- var2 = (val8 & 3131756735U) * (3U + val9);
+ var2 = (var0 & 3131756735U) * (3U + var0);
}
} else {
- val5 = var0;
- val6 = var0;
- var2 = (val5 | 3131756735U) * (2U ^ val6);
+ var2 = (var0 | 3131756735U) * (2U ^ var0);
}
- val15 = var2;
- return val15;
+ return var2;
}
unsigned int main() {
unsigned int var0;
float.bc
--- /dev/fd/63 2022-08-10 14:29:22.099715007 +0000
+++ /dev/fd/62 2022-08-10 14:29:22.099715007 +0000
@@ -4,21 +4,13 @@
unsigned int var0;
double var1;
double var2;
- double val3;
- float val4;
- double val5;
- unsigned int val6;
var0 = 0U;
var1 = 3.1428571428571428;
- val3 = var1;
- val4 = f;
- var2 = val3 - (double)val4;
- val5 = var2;
- if (val5 >= 0.01) {
+ var2 = var1 - (double)f;
+ if (var2 >= 0.01) {
var0 = 1U;
} else {
var0 = 0U;
}
- val6 = var0;
- return val6;
+ return var0;
}
reg_test_structure_fields.bc
zeroinit.bc
--- /dev/fd/63 2022-08-10 14:29:22.415717563 +0000
+++ /dev/fd/62 2022-08-10 14:29:22.415717563 +0000
@@ -16,14 +16,9 @@
unsigned long a1[256] = {};
unsigned int main() {
unsigned int var0;
- unsigned int val1;
- unsigned long val2;
- unsigned int val3;
var0 = 0U;
- val1 = r1.field1.field0;
- if (val1 == 0U) {
- val2 = a1[42UL];
- if (val2 == 0UL) {
+ if (r1.field1.field0 == 0U) {
+ if (a1[42UL] == 0UL) {
var0 = 0U;
} else {
var0 = 2U;
@@ -31,6 +26,5 @@
} else {
var0 = 1U;
}
- val3 = var0;
- return val3;
+ return var0;
}
funcptr.bc
--- /dev/fd/63 2022-08-10 14:29:22.691719795 +0000
+++ /dev/fd/62 2022-08-10 14:29:22.691719795 +0000
@@ -5,39 +5,27 @@
unsigned int add(unsigned int arg0, unsigned int arg1) {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
var0 = arg0;
var1 = arg1;
- val2 = var0;
- val3 = var1;
- return val2 + val3;
+ return var0 + var1;
}
unsigned int sub(unsigned int arg0, unsigned int arg1) {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
var0 = arg0;
var1 = arg1;
- val2 = var0;
- val3 = var1;
- return val2 - val3;
+ return var0 - var1;
}
unsigned int main() {
unsigned int var0;
void *var1;
- unsigned int val2;
- void *val3;
- unsigned int call4;
+ unsigned int call2;
var0 = 0U;
- val2 = x;
- if (val2 == 0U) {
+ if (x == 0U) {
var1 = ⊂
} else {
var1 = &add;
}
- val3 = var1;
- call4 = ((unsigned int (*)(unsigned int, unsigned int))val3)(2U, 2U);
- return call4;
+ call2 = ((unsigned int (*)(unsigned int, unsigned int))var1)(2U, 2U);
+ return call2;
}
goto_loop.bc
--- /dev/fd/63 2022-08-10 14:29:22.887721380 +0000
+++ /dev/fd/62 2022-08-10 14:29:22.887721380 +0000
@@ -4,41 +4,25 @@
unsigned int main() {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
var0 = 0U;
var1 = 0U;
while (1U)
{
- val2 = var1;
- var1 = val2 + 1U;
- val3 = var1;
- if (val3 == 1U) {
- val4 = var1;
- printf("%d\n", val4);
- } else {
- val5 = var1;
- if (val5 != 2U) {
- break;
- } else {
- val6 = var1;
- printf("%d\n", val6);
- }
+ var1 = var1 + 1U;
+ if (var1 == 1U) {
+ printf("%d\n", var1);
+ }
+ if (var1 != 1U && var1 != 2U) {
+ break;
+ }
+ if (var1 != 1U && var1 == 2U) {
+ printf("%d\n", var1);
}
}
- if (val3 != 1U && val5 != 2U) {
- val7 = var1;
- if (val7 == 3U) {
- val8 = var1;
- printf("%d\n", val8);
+ if (var1 != 1U && var1 != 2U) {
+ if (var1 == 3U) {
+ printf("%d\n", var1);
}
- val9 = var0;
- return val9;
+ return var0;
}
}
branch.bc
--- /dev/fd/63 2022-08-10 14:29:23.299724712 +0000
+++ /dev/fd/62 2022-08-10 14:29:23.299724712 +0000
@@ -11,29 +11,19 @@
unsigned int var0;
unsigned long var1;
unsigned long var2;
- unsigned int val3;
- unsigned int val4;
- unsigned long val5;
- unsigned int val6;
- unsigned long val7;
var0 = 0U;
var1 = (unsigned long)(&a);
var2 = (unsigned long)(&c);
- val3 = c;
- if (val3 == 0U) {
- val6 = c;
- printf("Global variable 'c' of value %u is at ", val6);
- val7 = var2;
- if (val7 % 2UL != 0UL) {
+ if (c == 0U) {
+ printf("Global variable 'c' of value %u is at ", c);
+ if (var2 % 2UL != 0UL) {
printf("odd ");
} else {
printf("even ");
}
} else {
- val4 = a;
- printf("Global variable 'a' of value %u is at ", val4);
- val5 = var1;
- if (val5 % 2UL != 0UL) {
+ printf("Global variable 'a' of value %u is at ", a);
+ if (var1 % 2UL != 0UL) {
printf("odd ");
} else {
printf("even ");
bitops.bc
--- /dev/fd/63 2022-08-10 14:29:23.659727623 +0000
+++ /dev/fd/62 2022-08-10 14:29:23.659727623 +0000
@@ -4,34 +4,14 @@
unsigned int main() {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
- unsigned int val10;
- unsigned int val11;
var0 = 0U;
var1 = 0U;
- val2 = a;
- val3 = b;
- if (((int)val2 >> val3 & 1U) != 0U) {
- val4 = var1;
- var1 = val4 + 1U;
+ if (((int)a >> b & 1U) != 0U) {
+ var1 = var1 + 1U;
}
- val5 = a;
- val6 = b;
- if ((val5 >> val6 ^ 1U) != 0U) {
- val7 = var1;
- var1 = val7 + 2U;
+ if ((a >> b ^ 1U) != 0U) {
+ var1 = var1 + 2U;
}
- val8 = a;
- val9 = b;
- val10 = var1;
- var1 = val10 + 3U;
- val11 = var1;
- return val11;
+ var1 = var1 + 3U;
+ return var1;
}
vectors.bc
--- /dev/fd/63 2022-08-10 14:29:23.935729897 +0000
+++ /dev/fd/62 2022-08-10 14:29:23.935729897 +0000
@@ -10,43 +10,15 @@
__attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int var5;
__attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int var6;
void *var7;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val8;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val9;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val10;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val11;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val12;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val13;
- void *val14;
- unsigned int val15;
- void *val16;
- unsigned int val17;
- void *val18;
- unsigned int val19;
- void *val20;
- unsigned int val21;
var0 = 0U;
var4 = (__attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int){1U, 2U, 3U, 4U};
- val8 = var4;
- var1 = val8;
+ var1 = var4;
var5 = (__attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int){};
- val9 = var5;
- var2 = val9;
+ var2 = var5;
var6 = (__attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int){4U, 3U, 2U, 1U};
- val10 = var6;
- var3 = val10;
- val11 = var1;
- val12 = var2;
- val13 = var3;
- var1 = val11 * val12 + val13;
+ var3 = var6;
+ var1 = var1 * var2 + var3;
var7 = (&var1);
- val14 = var7;
- val15 = *((unsigned int *)val14);
- val16 = var7;
- val17 = ((unsigned int *)val16)[1UL];
- val18 = var7;
- val19 = ((unsigned int *)val18)[2UL];
- val20 = var7;
- val21 = ((unsigned int *)val20)[3UL];
- printf("a=[%d %d %d %d]\n", val15, val17, val19, val21);
+ printf("a=[%d %d %d %d]\n", *((unsigned int *)var7), ((unsigned int *)var7)[1UL], ((unsigned int *)var7)[2UL], ((unsigned int *)var7)[3UL]);
return 0U;
}
issue_4.bc
--- /dev/fd/63 2022-08-10 14:29:24.055730903 +0000
+++ /dev/fd/62 2022-08-10 14:29:24.055730903 +0000
@@ -5,32 +5,17 @@
unsigned int var1;
unsigned int var2;
unsigned int var3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
- unsigned int val10;
var0 = arg0;
var1 = arg1;
var2 = 0U;
var3 = 0U;
- do {
- val4 = var3;
- if (val4 != 42U) {
- val5 = var0;
- val6 = var2;
- var2 = val6 + val5;
- val7 = var1;
- val8 = var2;
- var2 = val8 % val7;
- val9 = var3;
- var3 = val9 + 1U;
+ while (var3 != 42U)
+ {
+ var2 = var2 + var0;
+ var2 = var2 % var1;
+ var3 = var3 + 1U;
}
- } while (val4 != 42U);
- val10 = var2;
- return val10;
+ return var2;
}
unsigned int main() {
unsigned int var0;
conflicting_global.bc
--- /dev/fd/63 2022-08-10 14:29:24.283732815 +0000
+++ /dev/fd/62 2022-08-10 14:29:24.283732815 +0000
@@ -4,12 +4,8 @@
unsigned char _str[4] = "%d\n\000";
unsigned int main() {
unsigned int var0;
- unsigned int val1;
- unsigned int val2;
var0 = 4U;
- val1 = var0;
- printf("%d\n", val1);
- val2 = a;
- printf("%d\n", val2);
+ printf("%d\n", var0);
+ printf("%d\n", a);
return 0U;
}
issue_123_uint128_t.bc
--- /dev/fd/63 2022-08-10 14:29:24.403733821 +0000
+++ /dev/fd/62 2022-08-10 14:29:24.403733821 +0000
@@ -3,14 +3,8 @@
unsigned int main() {
unsigned int var0;
unsigned __int128 var1;
- unsigned long val2;
- unsigned __int128 val3;
- unsigned long val4;
var0 = 0U;
- val2 = x;
- var1 = val2;
- val3 = var1;
- x = val3;
- val4 = x;
- return (unsigned int)(val4 & 255UL);
+ var1 = x;
+ x = var1;
+ return (unsigned int)(x & 255UL);
}
fizzbuzz_stateful.bc
--- /dev/fd/63 2022-08-10 14:29:24.523734827 +0000
+++ /dev/fd/62 2022-08-10 14:29:24.523734827 +0000
@@ -8,52 +8,31 @@
unsigned char _str_3[2] = "\n\000";
void fizzbuzz() {
unsigned int var0;
- unsigned int val1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- val1 = i;
- var0 = val1;
- val2 = i;
- if ((int)val2 % 3 == 0U) {
+ var0 = i;
+ if ((int)i % 3 == 0U) {
i = 4U;
printf("fizz");
}
- val3 = i;
- if ((int)val3 % 5 == 0U) {
+ if ((int)i % 5 == 0U) {
printf("buzz");
}
- val4 = i;
- if ((int)val4 % 3 != 0U) {
- val5 = i;
- if ((int)val5 % 5 != 0U) {
- val6 = i;
- printf("%d", val6);
+ if ((int)i % 3 != 0U) {
+ if ((int)i % 5 != 0U) {
+ printf("%d", i);
}
}
- val7 = var0;
- i = val7;
+ i = var0;
return;
}
unsigned int main() {
unsigned int var0;
- unsigned int val1;
- unsigned int val2;
- unsigned int val3;
var0 = 0U;
i = 1U;
- do {
- val1 = i;
- if ((int)val1 < 16) {
+ while ((int)i < 16)
+ {
fizzbuzz();
printf("\n");
- val2 = i;
- i = val2 + 1U;
+ i = i + 1U;
}
- } while ((int)val1 < 16);
- val3 = var0;
- return val3;
+ return var0;
}
issue_94_strncmp.bc
bool.bc
--- /dev/fd/63 2022-08-10 14:29:25.247740897 +0000
+++ /dev/fd/62 2022-08-10 14:29:25.247740897 +0000
@@ -3,17 +3,11 @@
unsigned long b = 1UL;
unsigned int main() {
unsigned int var0;
- unsigned long val1;
- unsigned long val2;
- unsigned int val3;
var0 = 0U;
- val1 = a;
- val2 = b;
- if ((unsigned int)(val1 == val2) != 0U) {
+ if ((unsigned int)(a == b) != 0U) {
var0 = 1U;
} else {
var0 = 0U;
}
- val3 = var0;
- return val3;
+ return var0;
}
global_using_function_decl.bc
--- /dev/fd/63 2022-08-10 14:29:25.439742507 +0000
+++ /dev/fd/62 2022-08-10 14:29:25.439742507 +0000
@@ -7,8 +7,6 @@
return;
}
unsigned int main() {
- void *val0;
- val0 = afunc_pointer;
- ((void (*)(unsigned int))val0)(0U);
+ ((void (*)(unsigned int))afunc_pointer)(0U);
return 0U;
}
fcmp.bc
--- /dev/fd/63 2022-08-10 14:29:25.559743513 +0000
+++ /dev/fd/62 2022-08-10 14:29:25.563743547 +0000
@@ -17,56 +17,18 @@
unsigned int var9;
float call10;
float call11;
- float val12;
- float val13;
- float val14;
- float val15;
- float val16;
- float val17;
- float val18;
- float val19;
- float val20;
- float val21;
- float val22;
- float val23;
- float val24;
- unsigned int val25;
- unsigned int val26;
- unsigned int val27;
- unsigned int val28;
- unsigned int val29;
- unsigned int val30;
var0 = __builtin_nan("");
call10 = atof("3");
var1 = call10;
call11 = atof("2");
var2 = call11;
- val12 = var1;
- var3 = -val12;
- val13 = var3;
- val14 = var0;
- var4 = (val13 > val14);
- val15 = var3;
- val16 = var0;
- var5 = (val15 >= val16);
- val17 = var1;
- val18 = var2;
- var6 = (val17 > val18);
- val19 = var1;
- val20 = var2;
- var7 = (val19 >= val20);
- val21 = var1;
- val22 = var0;
- var8 = __builtin_isunordered(val21, val22);
- val23 = var1;
- val24 = var2;
- var9 = __builtin_isunordered(val23, val24);
- val25 = var4;
- val26 = var5;
- val27 = var6;
- val28 = var7;
- val29 = var8;
- val30 = var9;
- printf("%d %d %d %d %d %d\n", val25, val26, val27, val28, val29, val30);
+ var3 = -var1;
+ var4 = (var3 > var0);
+ var5 = (var3 >= var0);
+ var6 = (var1 > var2);
+ var7 = (var1 >= var2);
+ var8 = __builtin_isunordered(var1, var0);
+ var9 = __builtin_isunordered(var1, var2);
+ printf("%d %d %d %d %d %d\n", var4, var5, var6, var7, var8, var9);
return 0U;
}
byval_struct.bc
--- /dev/fd/63 2022-08-10 14:29:25.683744553 +0000
+++ /dev/fd/62 2022-08-10 14:29:25.683744553 +0000
@@ -14,13 +14,9 @@
unsigned char _str_3[2] = "4\000";
unsigned char _str_4[11] = "%lld %lld\n\000";
unsigned long get_3x(struct struct_foo arg0) {
- unsigned long val0;
- unsigned long val1;
void *arg0_ptr = &arg0;
- val0 = ((struct struct_foo *)arg0_ptr)->field0;
- ((struct struct_foo *)arg0_ptr)->field0 = val0 * 3UL;
- val1 = ((struct struct_foo *)arg0_ptr)->field0;
- return val1;
+ ((struct struct_foo *)arg0_ptr)->field0 = ((struct struct_foo *)arg0_ptr)->field0 * 3UL;
+ return ((struct struct_foo *)arg0_ptr)->field0;
}
unsigned int main() {
struct struct_foo var0;
@@ -30,8 +26,6 @@
unsigned int call4;
unsigned int call5;
unsigned long call6;
- unsigned long val7;
- unsigned long val8;
call2 = atoi("1");
var0.field0 = (long)call2;
call3 = atoi("2");
@@ -42,8 +36,6 @@
var0.field3 = (long)call5;
call6 = get_3x(var0);
var1 = call6;
- val7 = var0.field0;
- val8 = var1;
- printf("%lld %lld\n", val7, val8);
+ printf("%lld %lld\n", var0.field0, var1);
return 0U;
}
nested_while.bc
--- /dev/fd/63 2022-08-10 14:29:25.803745559 +0000
+++ /dev/fd/62 2022-08-10 14:29:25.803745559 +0000
@@ -8,40 +8,24 @@
unsigned int var0;
unsigned int var1;
unsigned int call2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
- unsigned int val10;
var0 = 0U;
call2 = atoi("5");
var1 = call2;
- val3 = var1;
- if ((int)val3 > 10) {
- do {
- val4 = var1;
- if ((int)val4 < 20) {
- val5 = var1;
- var1 = val5 + 1U;
- val6 = var1;
- printf("loop1 x: %d\n", val6);
+ if ((int)var1 > 10) {
+ while ((int)var1 < 20)
+ {
+ var1 = var1 + 1U;
+ printf("loop1 x: %d\n", var1);
}
- } while ((int)val4 < 20);
}
- if ((int)val3 <= 10 || (int)val4 >= 20) {
- do {
- val7 = var1;
- if ((int)val7 < 20) {
- val8 = var1;
- var1 = val8 + 1U;
- val9 = var1;
- printf("loop2 x: %d\n", val9);
+ if ((int)var1 >= 20 || (int)var1 <= 10) {
+ while ((int)var1 < 20)
+ {
+ var1 = var1 + 1U;
+ printf("loop2 x: %d\n", var1);
}
- } while ((int)val7 < 20);
- val10 = var0;
- return val10;
+ }
+ if (((int)var1 >= 20 || (int)var1 <= 10) && (int)var1 >= 20) {
+ return var0;
}
}
func_cond_two_arg.bc
--- /dev/fd/63 2022-08-10 14:29:26.267749449 +0000
+++ /dev/fd/62 2022-08-10 14:29:26.267749449 +0000
@@ -5,29 +5,19 @@
unsigned int f(unsigned int arg0, unsigned int arg1) {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
var0 = arg0;
var1 = arg1;
- val2 = var0;
- val3 = var1;
- return (unsigned int)((int)val2 < (int)val3);
+ return (unsigned int)((int)var0 < (int)var1);
}
unsigned int main() {
unsigned int var0;
- unsigned int val1;
- unsigned int val2;
- unsigned int call3;
- unsigned int val4;
+ unsigned int call1;
var0 = 0U;
- val1 = x;
- val2 = y;
- call3 = f(val1, val2);
- if (call3 == 0U) {
+ call1 = f(x, y);
+ if (call1 == 0U) {
var0 = 0U;
} else {
var0 = 1U;
}
- val4 = var0;
- return val4;
+ return var0;
}
zext.bc
--- /dev/fd/63 2022-08-10 14:29:26.459751059 +0000
+++ /dev/fd/62 2022-08-10 14:29:26.463751092 +0000
@@ -2,8 +2,6 @@
unsigned char a = (unsigned char)1U;
unsigned int main() {
unsigned int var0;
- unsigned char val1;
var0 = 0U;
- val1 = a;
- return (unsigned int)val1;
+ return (unsigned int)a;
}
inttoptr.bc
--- /dev/fd/63 2022-08-10 14:29:26.587752132 +0000
+++ /dev/fd/62 2022-08-10 14:29:26.587752132 +0000
@@ -3,18 +3,12 @@
unsigned int main() {
unsigned int var0;
void *var1;
- unsigned long val2;
- void *val3;
- unsigned int val4;
var0 = 0U;
- val2 = a;
- var1 = (void *)val2;
- val3 = var1;
- if (val3 == (void *)0U) {
+ var1 = (void *)a;
+ if (var1 == (void *)0U) {
var0 = 0U;
} else {
var0 = 42U;
}
- val4 = var0;
- return val4;
+ return var0;
}
assert.bc
--- /dev/fd/63 2022-08-10 14:29:26.779753742 +0000
+++ /dev/fd/62 2022-08-10 14:29:26.779753742 +0000
@@ -8,24 +8,17 @@
unsigned char _str_3[7] = "a % 15\000";
unsigned int main() {
unsigned int var0;
- unsigned long val1;
- unsigned long val2;
- unsigned long val3;
var0 = 0U;
- val1 = a;
- if (val1 % 3UL == 0UL) {
+ if (a % 3UL == 0UL) {
__assert_fail("a % 3", "assert.c", 6U, "int main(void)");
- } else {
- val2 = a;
- if (val2 % 7UL == 0UL) {
- __assert_fail("a % 7", "assert.c", 7U, "int main(void)");
- } else {
- val3 = a;
- if (val3 % 15UL == 0UL) {
- __assert_fail("a % 15", "assert.c", 8U, "int main(void)");
- } else {
- return 0U;
- }
- }
+ }
+ if (a % 3UL != 0UL && a % 7UL == 0UL) {
+ __assert_fail("a % 7", "assert.c", 7U, "int main(void)");
+ }
+ if (a % 3UL != 0UL && a % 7UL != 0UL && a % 15UL == 0UL) {
+ __assert_fail("a % 15", "assert.c", 8U, "int main(void)");
+ }
+ if (a % 3UL != 0UL && a % 7UL != 0UL && a % 15UL != 0UL) {
+ return 0U;
}
}
loop.bc
--- /dev/fd/63 2022-08-10 14:29:27.179757095 +0000
+++ /dev/fd/62 2022-08-10 14:29:27.179757095 +0000
@@ -6,26 +6,17 @@
unsigned int main() {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
var0 = 0U;
var1 = 0U;
- do {
- val2 = var1;
- if (val2 != 10U) {
- val3 = var1;
- printf("Variable at %d is ", val3);
- val4 = var1;
- if (val4 % 2U != 0U) {
+ while (var1 != 10U)
+ {
+ printf("Variable at %d is ", var1);
+ if (var1 % 2U != 0U) {
printf("odd.\n");
} else {
printf("even.\n");
}
- val5 = var1;
- var1 = val5 + 1U;
+ var1 = var1 + 1U;
}
- } while (val2 != 10U);
return 0U;
}
switch.bc
--- /dev/fd/63 2022-08-10 14:29:27.487759678 +0000
+++ /dev/fd/62 2022-08-10 14:29:27.487759678 +0000
@@ -3,12 +3,9 @@
unsigned int main() {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
var0 = 0U;
var1 = 0U;
- val2 = a;
- switch (val2) {
+ switch (a) {
default:
{
var1 = 255U;
@@ -30,6 +27,5 @@
}
break;
}
- val3 = var1;
- return val3;
+ return var1;
}
template_parameter_pack.bc
--- /dev/fd/63 2022-08-10 14:29:27.711761556 +0000
+++ /dev/fd/62 2022-08-10 14:29:27.711761556 +0000
@@ -17,71 +17,43 @@
unsigned int var2;
unsigned int var3;
unsigned int var4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
- unsigned int call10;
+ unsigned int call5;
var0 = arg0;
var1 = arg1;
var2 = arg2;
var3 = arg3;
var4 = arg4;
- val5 = var0;
- val6 = var1;
- val7 = var2;
- val8 = var3;
- val9 = var4;
- call10 = _Z3sumIiJiiiEET_S0_DpT0_(val6, val7, val8, val9);
- return val5 + call10;
+ call5 = _Z3sumIiJiiiEET_S0_DpT0_(var1, var2, var3, var4);
+ return var0 + call5;
}
unsigned int _Z3sumIiJiiiEET_S0_DpT0_(unsigned int arg0, unsigned int arg1, unsigned int arg2, unsigned int arg3) {
unsigned int var0;
unsigned int var1;
unsigned int var2;
unsigned int var3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int call8;
+ unsigned int call4;
var0 = arg0;
var1 = arg1;
var2 = arg2;
var3 = arg3;
- val4 = var0;
- val5 = var1;
- val6 = var2;
- val7 = var3;
- call8 = _Z3sumIiJiiEET_S0_DpT0_(val5, val6, val7);
- return val4 + call8;
+ call4 = _Z3sumIiJiiEET_S0_DpT0_(var1, var2, var3);
+ return var0 + call4;
}
unsigned int _Z3sumIiJiiEET_S0_DpT0_(unsigned int arg0, unsigned int arg1, unsigned int arg2) {
unsigned int var0;
unsigned int var1;
unsigned int var2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int call6;
+ unsigned int call3;
var0 = arg0;
var1 = arg1;
var2 = arg2;
- val3 = var0;
- val4 = var1;
- val5 = var2;
- call6 = _Z3sumIiET_S0_S0_(val4, val5);
- return val3 + call6;
+ call3 = _Z3sumIiET_S0_S0_(var1, var2);
+ return var0 + call3;
}
unsigned int _Z3sumIiET_S0_S0_(unsigned int arg0, unsigned int arg1) {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
var0 = arg0;
var1 = arg1;
- val2 = var0;
- val3 = var1;
- return val2 + val3;
+ return var0 + var1;
}
byval_tail_nogep.ll
byval_tail_gep.ll
See the diff generated by this PR for the tests here: https://github.com/lifting-bits/rellic/actions/runs/2833846672
fizzbuzz.bc
--- /dev/fd/63 2022-08-10 15:51:38.768657296 +0000
+++ /dev/fd/62 2022-08-10 15:51:38.768657296 +0000
@@ -7,44 +7,24 @@
unsigned int main() {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
var0 = 0U;
var1 = 0U;
- do {
- val2 = var1;
- if ((int)val2 < 30) {
- val3 = var1;
- if ((int)val3 % 3 == 0U) {
- val4 = var1;
- if ((int)val4 % 5 == 0U) {
- printf("fizzbuzz\n");
- }
- }
- if ((int)val3 % 3 != 0U || !((int)val4 % 5 == 0U || (int)val3 % 3 != 0U)) {
- val5 = var1;
- if ((int)val5 % 3 != 0U) {
- val6 = var1;
- if ((int)val6 % 5 != 0U) {
- val7 = var1;
- printf("%d\n", val7);
+ while ((int)var1 < 30)
+ {
+ if (!((int)var1 % 3 != 0U || (int)var1 % 5 == 0U) || (int)var1 % 3 != 0U) {
+ if ((int)var1 % 3 != 0U) {
+ if ((int)var1 % 5 != 0U) {
+ printf("%d\n", var1);
} else {
printf("buzz\n");
}
} else {
printf("fizz\n");
}
+ } else {
+ printf("fizzbuzz\n");
}
- val8 = var1;
- var1 = val8 + 1U;
+ var1 = var1 + 1U;
}
- } while ((int)val2 < 30);
- val9 = var0;
- return val9;
+ return var0;
}
typedefs_of_typedefs.bc
--- /dev/fd/63 2022-08-10 15:51:39.732671732 +0000
+++ /dev/fd/62 2022-08-10 15:51:39.732671732 +0000
@@ -12,44 +12,28 @@
__attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long var5;
__attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long var6;
void *var7;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val8;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val9;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val10;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val11;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val12;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val13;
- void *val14;
- unsigned int val15;
- void *val16;
- unsigned int val17;
- unsigned long val18;
- unsigned long val19;
- unsigned long val20;
- unsigned long val21;
+ unsigned int val8;
+ unsigned int val9;
+ unsigned long val10;
+ unsigned long val11;
+ unsigned long val12;
+ unsigned long val13;
var0 = 0U;
var4 = (__attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long){1UL, 2UL};
- val8 = var4;
- var1 = val8;
+ var1 = var4;
var5 = (__attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long){};
- val9 = var5;
- var2 = val9;
+ var2 = var5;
var6 = (__attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long){4UL, 3UL};
- val10 = var6;
- var3 = val10;
- val11 = var1;
- val12 = var2;
- val13 = var3;
- var1 = val11 * val12 + val13;
+ var3 = var6;
+ var1 = var1 * var2 + var3;
var7 = (&var1);
- val14 = var7;
- val15 = *((unsigned int *)val14);
- val16 = var7;
- val17 = ((unsigned int *)val16)[1UL];
- printf("a=[%d %d]\n", val15, val17);
- val18 = *array;
- val19 = array[1UL];
- val20 = array[2UL];
- val21 = array[3UL];
- printf("array=[%lld %lld %lld %lld]\n", val18, val19, val20, val21);
+ val8 = *((unsigned int *)var7);
+ val9 = ((unsigned int *)var7)[1UL];
+ printf("a=[%d %d]\n", val8, val9);
+ val10 = *array;
+ val11 = array[1UL];
+ val12 = array[2UL];
+ val13 = array[3UL];
+ printf("array=[%lld %lld %lld %lld]\n", val10, val11, val12, val13);
return 0U;
}
switch_loop.bc
--- /dev/fd/63 2022-08-10 15:51:39.856673588 +0000
+++ /dev/fd/62 2022-08-10 15:51:39.856673588 +0000
@@ -4,36 +4,26 @@
unsigned int main() {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
var0 = 0U;
var1 = 0U;
- do {
- val2 = var1;
- var1 = val2 + 1U;
- val3 = var1;
- if (!(val3 != 1U && val3 != 2U && val3 != 3U)) {
- if (val3 == 3U) {
- val6 = var1;
- printf("%d\n", val6);
+ while (1U)
+ {
+ var1 = var1 + 1U;
+ if (var1 != 1U && var1 != 2U && var1 != 3U) {
break;
}
- if (val3 == 2U) {
- val5 = var1;
- printf("%d\n", val5);
+ if (var1 == 3U) {
+ printf("%d\n", var1);
+ break;
+ }
+ if (var1 == 2U) {
+ printf("%d\n", var1);
}
- if (val3 == 1U) {
- val4 = var1;
- printf("%d\n", val4);
+ if (var1 == 1U) {
+ printf("%d\n", var1);
}
}
- } while (!(val3 != 1U && val3 != 2U && val3 != 3U));
- if (val3 == 3U || !(val3 == 2U || val3 == 3U || val3 == 1U)) {
- val7 = var0;
- return val7;
+ if (var1 == 3U || !(var1 == 2U || var1 == 3U || var1 == 1U)) {
+ return var0;
}
}
func_cond_zero_arg.bc
--- /dev/fd/63 2022-08-10 15:51:40.384681495 +0000
+++ /dev/fd/62 2022-08-10 15:51:40.384681495 +0000
@@ -8,7 +8,6 @@
unsigned int main() {
unsigned int var0;
unsigned int call1;
- unsigned int val2;
var0 = 0U;
call1 = f();
if (call1 == 0U) {
@@ -16,6 +15,5 @@
} else {
var0 = 1U;
}
- val2 = var0;
- return val2;
+ return var0;
}
conflicting_names.bc
--- /dev/fd/63 2022-08-10 15:51:40.588684550 +0000
+++ /dev/fd/62 2022-08-10 15:51:40.588684550 +0000
@@ -4,17 +4,13 @@
unsigned int atoi(void *arg0);
unsigned int foo() {
unsigned int var0;
- unsigned int val1;
var0 = 0U;
- val1 = var0;
- return val1;
+ return var0;
}
unsigned int bar() {
unsigned int var0;
- unsigned int val1;
var0 = 1U;
- val1 = var0;
- return val1;
+ return var0;
}
unsigned int main() {
unsigned int var0;
@@ -24,35 +20,23 @@
unsigned int var4;
unsigned int var5;
unsigned int var6;
- unsigned int val7;
- void *val8;
- void *val9;
- unsigned int call10;
- unsigned int val11;
- unsigned int val12;
- unsigned int val13;
- unsigned int val14;
+ void *val7;
+ unsigned int call8;
var0 = 0U;
var1 = 0U;
var2 = (void *)0U;
var3 = 0U;
- val7 = var1;
- if (1 >= (int)val7) {
+ if (1 >= (int)var1) {
var6 = 1U;
- val13 = var6;
- var3 = val13;
+ var3 = var6;
} else {
- val8 = var2;
- val9 = ((void **)val8)[1UL];
- call10 = atoi(val9);
- var4 = call10;
- val11 = var4;
- if ((int)val11 > 10) {
+ val7 = ((void **)var2)[1UL];
+ call8 = atoi(val7);
+ var4 = call8;
+ if ((int)var4 > 10) {
var5 = 99U;
- val12 = var5;
- var3 = val12;
+ var3 = var5;
}
}
- val14 = var3;
- return val14;
+ return var3;
}
struct.bc
--- /dev/fd/63 2022-08-10 15:51:40.848688443 +0000
+++ /dev/fd/62 2022-08-10 15:51:40.848688443 +0000
@@ -9,7 +9,6 @@
unsigned int val1;
unsigned int val2;
unsigned int val3;
- unsigned int val4;
var0 = 0U;
val1 = a.field0;
if (val1 == 0U) {
@@ -19,6 +18,5 @@
val2 = a.field0;
var0 = val2;
}
- val4 = var0;
- return val4;
+ return var0;
}
issue_183_literal_structs.bc
issue_127_uint128_t_lit.bc
struct_swap.bc
--- /dev/fd/63 2022-08-10 15:51:41.300695211 +0000
+++ /dev/fd/62 2022-08-10 15:51:41.300695211 +0000
@@ -10,14 +10,12 @@
unsigned int val2;
unsigned int val3;
unsigned int val4;
- unsigned int val5;
var0 = 0U;
val2 = a.field0;
var1 = val2;
val3 = a.field1;
a.field0 = val3;
- val4 = var1;
- a.field1 = val4;
- val5 = a.field0;
- return val5;
+ a.field1 = var1;
+ val4 = a.field0;
+ return val4;
}
init_list.bc
ret0.bc
trunc.bc
short.bc
--- /dev/fd/63 2022-08-10 15:51:41.824703058 +0000
+++ /dev/fd/62 2022-08-10 15:51:41.828703118 +0000
@@ -4,11 +4,9 @@
unsigned int var0;
unsigned short var1;
unsigned short val2;
- unsigned short val3;
var0 = 0U;
a = 13U;
val2 = a;
var1 = val2;
- val3 = var1;
- return (unsigned int)val3;
+ return (unsigned int)var1;
}
cast.bc
nullptr.bc
--- /dev/fd/63 2022-08-10 15:51:42.076706831 +0000
+++ /dev/fd/62 2022-08-10 15:51:42.076706831 +0000
@@ -3,7 +3,6 @@
unsigned int main() {
unsigned int var0;
void *val1;
- unsigned int val2;
var0 = 0U;
val1 = ptr;
if (val1 != (void *)0U) {
@@ -11,6 +10,5 @@
} else {
var0 = 0U;
}
- val2 = var0;
- return val2;
+ return var0;
}
nested_struct.bc
array_swap.bc
--- /dev/fd/63 2022-08-10 15:51:42.412711863 +0000
+++ /dev/fd/62 2022-08-10 15:51:42.412711863 +0000
@@ -6,14 +6,12 @@
unsigned int val2;
unsigned int val3;
unsigned int val4;
- unsigned int val5;
var0 = 0U;
val2 = *a;
var1 = val2;
val3 = a[1UL];
*a = val3;
- val4 = var1;
- a[1UL] = val4;
- val5 = *a;
- return val5;
+ a[1UL] = var1;
+ val4 = *a;
+ return val4;
}
bitmask.bc
--- /dev/fd/63 2022-08-10 15:51:42.536713720 +0000
+++ /dev/fd/62 2022-08-10 15:51:42.536713720 +0000
@@ -3,7 +3,6 @@
unsigned int main() {
unsigned int var0;
unsigned long val1;
- unsigned int val2;
var0 = 0U;
val1 = a;
if ((val1 & 4080UL) >> 4UL != 188UL) {
@@ -11,6 +10,5 @@
} else {
var0 = 0U;
}
- val2 = var0;
- return val2;
+ return var0;
}
binops.bc
--- /dev/fd/63 2022-08-10 15:51:42.744716836 +0000
+++ /dev/fd/62 2022-08-10 15:51:42.744716836 +0000
@@ -4,49 +4,23 @@
unsigned int var0;
unsigned int var1;
unsigned int var2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
- unsigned int val10;
- unsigned int val11;
- unsigned int val12;
- unsigned int val13;
- unsigned int val14;
- unsigned int val15;
var0 = arg0;
- val3 = var0;
- var1 = val3 % 4U;
+ var1 = var0 % 4U;
var2 = 0U;
- val4 = var1;
- if (val4 != 0U) {
- val7 = var1;
- if (val7 != 1U) {
- val10 = var1;
- if (val10 != 2U) {
- val13 = var0;
- val14 = var0;
- var2 = (val13 + 3131756735U) * (5U & val14);
+ if (var1 != 0U) {
+ if (var1 != 1U) {
+ if (var1 != 2U) {
+ var2 = (var0 + 3131756735U) * (5U & var0);
} else {
- val11 = var0;
- val12 = var0;
- var2 = (val11 ^ 3131756735U) * (4U | val12);
+ var2 = (var0 ^ 3131756735U) * (4U | var0);
}
} else {
- val8 = var0;
- val9 = var0;
- var2 = (val8 & 3131756735U) * (3U + val9);
+ var2 = (var0 & 3131756735U) * (3U + var0);
}
} else {
- val5 = var0;
- val6 = var0;
- var2 = (val5 | 3131756735U) * (2U ^ val6);
+ var2 = (var0 | 3131756735U) * (2U ^ var0);
}
- val15 = var2;
- return val15;
+ return var2;
}
unsigned int main() {
unsigned int var0;
float.bc
--- /dev/fd/63 2022-08-10 15:51:43.140722776 +0000
+++ /dev/fd/62 2022-08-10 15:51:43.140722776 +0000
@@ -4,21 +4,15 @@
unsigned int var0;
double var1;
double var2;
- double val3;
- float val4;
- double val5;
- unsigned int val6;
+ float val3;
var0 = 0U;
var1 = 3.1428571428571428;
- val3 = var1;
- val4 = f;
- var2 = val3 - (double)val4;
- val5 = var2;
- if (val5 >= 0.01) {
+ val3 = f;
+ var2 = var1 - (double)val3;
+ if (var2 >= 0.01) {
var0 = 1U;
} else {
var0 = 0U;
}
- val6 = var0;
- return val6;
+ return var0;
}
reg_test_structure_fields.bc
zeroinit.bc
--- /dev/fd/63 2022-08-10 15:51:43.472727755 +0000
+++ /dev/fd/62 2022-08-10 15:51:43.472727755 +0000
@@ -18,7 +18,6 @@
unsigned int var0;
unsigned int val1;
unsigned long val2;
- unsigned int val3;
var0 = 0U;
val1 = r1.field1.field0;
if (val1 == 0U) {
@@ -31,6 +30,5 @@
} else {
var0 = 1U;
}
- val3 = var0;
- return val3;
+ return var0;
}
funcptr.bc
--- /dev/fd/63 2022-08-10 15:51:43.768732194 +0000
+++ /dev/fd/62 2022-08-10 15:51:43.768732194 +0000
@@ -5,31 +5,22 @@
unsigned int add(unsigned int arg0, unsigned int arg1) {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
var0 = arg0;
var1 = arg1;
- val2 = var0;
- val3 = var1;
- return val2 + val3;
+ return var0 + var1;
}
unsigned int sub(unsigned int arg0, unsigned int arg1) {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
var0 = arg0;
var1 = arg1;
- val2 = var0;
- val3 = var1;
- return val2 - val3;
+ return var0 - var1;
}
unsigned int main() {
unsigned int var0;
void *var1;
unsigned int val2;
- void *val3;
- unsigned int call4;
+ unsigned int call3;
var0 = 0U;
val2 = x;
if (val2 == 0U) {
@@ -37,7 +28,6 @@
} else {
var1 = &add;
}
- val3 = var1;
- call4 = ((unsigned int (*)(unsigned int, unsigned int))val3)(2U, 2U);
- return call4;
+ call3 = ((unsigned int (*)(unsigned int, unsigned int))var1)(2U, 2U);
+ return call3;
}
goto_loop.bc
--- /dev/fd/63 2022-08-10 15:51:43.972735254 +0000
+++ /dev/fd/62 2022-08-10 15:51:43.972735254 +0000
@@ -4,41 +4,25 @@
unsigned int main() {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
var0 = 0U;
var1 = 0U;
while (1U)
{
- val2 = var1;
- var1 = val2 + 1U;
- val3 = var1;
- if (val3 == 1U) {
- val4 = var1;
- printf("%d\n", val4);
- } else {
- val5 = var1;
- if (val5 != 2U) {
- break;
- } else {
- val6 = var1;
- printf("%d\n", val6);
- }
+ var1 = var1 + 1U;
+ if (var1 == 1U) {
+ printf("%d\n", var1);
+ }
+ if (var1 != 1U && var1 != 2U) {
+ break;
+ }
+ if (var1 != 1U && var1 == 2U) {
+ printf("%d\n", var1);
}
}
- if (val3 != 1U && val5 != 2U) {
- val7 = var1;
- if (val7 == 3U) {
- val8 = var1;
- printf("%d\n", val8);
+ if (var1 != 1U && var1 != 2U) {
+ if (var1 == 3U) {
+ printf("%d\n", var1);
}
- val9 = var0;
- return val9;
+ return var0;
}
}
branch.bc
--- /dev/fd/63 2022-08-10 15:51:44.428742093 +0000
+++ /dev/fd/62 2022-08-10 15:51:44.428742093 +0000
@@ -13,18 +13,15 @@
unsigned long var2;
unsigned int val3;
unsigned int val4;
- unsigned long val5;
- unsigned int val6;
- unsigned long val7;
+ unsigned int val5;
var0 = 0U;
var1 = (unsigned long)(&a);
var2 = (unsigned long)(&c);
val3 = c;
if (val3 == 0U) {
- val6 = c;
- printf("Global variable 'c' of value %u is at ", val6);
- val7 = var2;
- if (val7 % 2UL != 0UL) {
+ val5 = c;
+ printf("Global variable 'c' of value %u is at ", val5);
+ if (var2 % 2UL != 0UL) {
printf("odd ");
} else {
printf("even ");
@@ -32,8 +29,7 @@
} else {
val4 = a;
printf("Global variable 'a' of value %u is at ", val4);
- val5 = var1;
- if (val5 % 2UL != 0UL) {
+ if (var1 % 2UL != 0UL) {
printf("odd ");
} else {
printf("even ");
bitops.bc
--- /dev/fd/63 2022-08-10 15:51:44.828748092 +0000
+++ /dev/fd/62 2022-08-10 15:51:44.828748092 +0000
@@ -10,28 +10,20 @@
unsigned int val5;
unsigned int val6;
unsigned int val7;
- unsigned int val8;
- unsigned int val9;
- unsigned int val10;
- unsigned int val11;
var0 = 0U;
var1 = 0U;
val2 = a;
val3 = b;
if (((int)val2 >> val3 & 1U) != 0U) {
- val4 = var1;
- var1 = val4 + 1U;
+ var1 = var1 + 1U;
}
- val5 = a;
- val6 = b;
- if ((val5 >> val6 ^ 1U) != 0U) {
- val7 = var1;
- var1 = val7 + 2U;
+ val4 = a;
+ val5 = b;
+ if ((val4 >> val5 ^ 1U) != 0U) {
+ var1 = var1 + 2U;
}
- val8 = a;
- val9 = b;
- val10 = var1;
- var1 = val10 + 3U;
- val11 = var1;
- return val11;
+ val6 = a;
+ val7 = b;
+ var1 = var1 + 3U;
+ return var1;
}
vectors.bc
--- /dev/fd/63 2022-08-10 15:51:45.132752651 +0000
+++ /dev/fd/62 2022-08-10 15:51:45.132752651 +0000
@@ -10,43 +10,23 @@
__attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int var5;
__attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int var6;
void *var7;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val8;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val9;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val10;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val11;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val12;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val13;
- void *val14;
- unsigned int val15;
- void *val16;
- unsigned int val17;
- void *val18;
- unsigned int val19;
- void *val20;
- unsigned int val21;
+ unsigned int val8;
+ unsigned int val9;
+ unsigned int val10;
+ unsigned int val11;
var0 = 0U;
var4 = (__attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int){1U, 2U, 3U, 4U};
- val8 = var4;
- var1 = val8;
+ var1 = var4;
var5 = (__attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int){};
- val9 = var5;
- var2 = val9;
+ var2 = var5;
var6 = (__attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int){4U, 3U, 2U, 1U};
- val10 = var6;
- var3 = val10;
- val11 = var1;
- val12 = var2;
- val13 = var3;
- var1 = val11 * val12 + val13;
+ var3 = var6;
+ var1 = var1 * var2 + var3;
var7 = (&var1);
- val14 = var7;
- val15 = *((unsigned int *)val14);
- val16 = var7;
- val17 = ((unsigned int *)val16)[1UL];
- val18 = var7;
- val19 = ((unsigned int *)val18)[2UL];
- val20 = var7;
- val21 = ((unsigned int *)val20)[3UL];
- printf("a=[%d %d %d %d]\n", val15, val17, val19, val21);
+ val8 = *((unsigned int *)var7);
+ val9 = ((unsigned int *)var7)[1UL];
+ val10 = ((unsigned int *)var7)[2UL];
+ val11 = ((unsigned int *)var7)[3UL];
+ printf("a=[%d %d %d %d]\n", val8, val9, val10, val11);
return 0U;
}
issue_4.bc
--- /dev/fd/63 2022-08-10 15:51:45.256754511 +0000
+++ /dev/fd/62 2022-08-10 15:51:45.256754511 +0000
@@ -5,32 +5,17 @@
unsigned int var1;
unsigned int var2;
unsigned int var3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
- unsigned int val10;
var0 = arg0;
var1 = arg1;
var2 = 0U;
var3 = 0U;
- do {
- val4 = var3;
- if (val4 != 42U) {
- val5 = var0;
- val6 = var2;
- var2 = val6 + val5;
- val7 = var1;
- val8 = var2;
- var2 = val8 % val7;
- val9 = var3;
- var3 = val9 + 1U;
+ while (var3 != 42U)
+ {
+ var2 = var2 + var0;
+ var2 = var2 % var1;
+ var3 = var3 + 1U;
}
- } while (val4 != 42U);
- val10 = var2;
- return val10;
+ return var2;
}
unsigned int main() {
unsigned int var0;
conflicting_global.bc
--- /dev/fd/63 2022-08-10 15:51:45.496758111 +0000
+++ /dev/fd/62 2022-08-10 15:51:45.496758111 +0000
@@ -5,11 +5,9 @@
unsigned int main() {
unsigned int var0;
unsigned int val1;
- unsigned int val2;
var0 = 4U;
- val1 = var0;
+ printf("%d\n", var0);
+ val1 = a;
printf("%d\n", val1);
- val2 = a;
- printf("%d\n", val2);
return 0U;
}
issue_123_uint128_t.bc
--- /dev/fd/63 2022-08-10 15:51:45.624760030 +0000
+++ /dev/fd/62 2022-08-10 15:51:45.624760030 +0000
@@ -4,13 +4,11 @@
unsigned int var0;
unsigned __int128 var1;
unsigned long val2;
- unsigned __int128 val3;
- unsigned long val4;
+ unsigned long val3;
var0 = 0U;
val2 = x;
var1 = val2;
- val3 = var1;
- x = val3;
- val4 = x;
- return (unsigned int)(val4 & 255UL);
+ x = var1;
+ val3 = x;
+ return (unsigned int)(val3 & 255UL);
}
fizzbuzz_stateful.bc
--- /dev/fd/63 2022-08-10 15:51:45.748761890 +0000
+++ /dev/fd/62 2022-08-10 15:51:45.748761890 +0000
@@ -14,7 +14,6 @@
unsigned int val4;
unsigned int val5;
unsigned int val6;
- unsigned int val7;
val1 = i;
var0 = val1;
val2 = i;
@@ -34,15 +33,13 @@
printf("%d", val6);
}
}
- val7 = var0;
- i = val7;
+ i = var0;
return;
}
unsigned int main() {
unsigned int var0;
unsigned int val1;
unsigned int val2;
- unsigned int val3;
var0 = 0U;
i = 1U;
do {
@@ -54,6 +51,5 @@
i = val2 + 1U;
}
} while ((int)val1 < 16);
- val3 = var0;
- return val3;
+ return var0;
}
issue_94_strncmp.bc
bool.bc
--- /dev/fd/63 2022-08-10 15:51:46.524773529 +0000
+++ /dev/fd/62 2022-08-10 15:51:46.524773529 +0000
@@ -5,7 +5,6 @@
unsigned int var0;
unsigned long val1;
unsigned long val2;
- unsigned int val3;
var0 = 0U;
val1 = a;
val2 = b;
@@ -14,6 +13,5 @@
} else {
var0 = 0U;
}
- val3 = var0;
- return val3;
+ return var0;
}
global_using_function_decl.bc
fcmp.bc
--- /dev/fd/63 2022-08-10 15:51:46.848778388 +0000
+++ /dev/fd/62 2022-08-10 15:51:46.848778388 +0000
@@ -17,56 +17,18 @@
unsigned int var9;
float call10;
float call11;
- float val12;
- float val13;
- float val14;
- float val15;
- float val16;
- float val17;
- float val18;
- float val19;
- float val20;
- float val21;
- float val22;
- float val23;
- float val24;
- unsigned int val25;
- unsigned int val26;
- unsigned int val27;
- unsigned int val28;
- unsigned int val29;
- unsigned int val30;
var0 = __builtin_nan("");
call10 = atof("3");
var1 = call10;
call11 = atof("2");
var2 = call11;
- val12 = var1;
- var3 = -val12;
- val13 = var3;
- val14 = var0;
- var4 = (val13 > val14);
- val15 = var3;
- val16 = var0;
- var5 = (val15 >= val16);
- val17 = var1;
- val18 = var2;
- var6 = (val17 > val18);
- val19 = var1;
- val20 = var2;
- var7 = (val19 >= val20);
- val21 = var1;
- val22 = var0;
- var8 = __builtin_isunordered(val21, val22);
- val23 = var1;
- val24 = var2;
- var9 = __builtin_isunordered(val23, val24);
- val25 = var4;
- val26 = var5;
- val27 = var6;
- val28 = var7;
- val29 = var8;
- val30 = var9;
- printf("%d %d %d %d %d %d\n", val25, val26, val27, val28, val29, val30);
+ var3 = -var1;
+ var4 = (var3 > var0);
+ var5 = (var3 >= var0);
+ var6 = (var1 > var2);
+ var7 = (var1 >= var2);
+ var8 = __builtin_isunordered(var1, var0);
+ var9 = __builtin_isunordered(var1, var2);
+ printf("%d %d %d %d %d %d\n", var4, var5, var6, var7, var8, var9);
return 0U;
}
byval_struct.bc
--- /dev/fd/63 2022-08-10 15:51:46.976780308 +0000
+++ /dev/fd/62 2022-08-10 15:51:46.976780308 +0000
@@ -31,7 +31,6 @@
unsigned int call5;
unsigned long call6;
unsigned long val7;
- unsigned long val8;
call2 = atoi("1");
var0.field0 = (long)call2;
call3 = atoi("2");
@@ -43,7 +42,6 @@
call6 = get_3x(var0);
var1 = call6;
val7 = var0.field0;
- val8 = var1;
- printf("%lld %lld\n", val7, val8);
+ printf("%lld %lld\n", val7, var1);
return 0U;
}
nested_while.bc
--- /dev/fd/63 2022-08-10 15:51:47.100782167 +0000
+++ /dev/fd/62 2022-08-10 15:51:47.100782167 +0000
@@ -8,40 +8,24 @@
unsigned int var0;
unsigned int var1;
unsigned int call2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
- unsigned int val10;
var0 = 0U;
call2 = atoi("5");
var1 = call2;
- val3 = var1;
- if ((int)val3 > 10) {
- do {
- val4 = var1;
- if ((int)val4 < 20) {
- val5 = var1;
- var1 = val5 + 1U;
- val6 = var1;
- printf("loop1 x: %d\n", val6);
+ if ((int)var1 > 10) {
+ while ((int)var1 < 20)
+ {
+ var1 = var1 + 1U;
+ printf("loop1 x: %d\n", var1);
}
- } while ((int)val4 < 20);
}
- if ((int)val3 <= 10 || (int)val4 >= 20) {
- do {
- val7 = var1;
- if ((int)val7 < 20) {
- val8 = var1;
- var1 = val8 + 1U;
- val9 = var1;
- printf("loop2 x: %d\n", val9);
+ if ((int)var1 <= 10 || (int)var1 >= 20) {
+ while ((int)var1 < 20)
+ {
+ var1 = var1 + 1U;
+ printf("loop2 x: %d\n", var1);
}
- } while ((int)val7 < 20);
- val10 = var0;
- return val10;
+ }
+ if (((int)var1 <= 10 || (int)var1 >= 20) && (int)var1 >= 20) {
+ return var0;
}
}
func_cond_two_arg.bc
--- /dev/fd/63 2022-08-10 15:51:47.616789906 +0000
+++ /dev/fd/62 2022-08-10 15:51:47.616789906 +0000
@@ -5,20 +5,15 @@
unsigned int f(unsigned int arg0, unsigned int arg1) {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
var0 = arg0;
var1 = arg1;
- val2 = var0;
- val3 = var1;
- return (unsigned int)((int)val2 < (int)val3);
+ return (unsigned int)((int)var0 < (int)var1);
}
unsigned int main() {
unsigned int var0;
unsigned int val1;
unsigned int val2;
unsigned int call3;
- unsigned int val4;
var0 = 0U;
val1 = x;
val2 = y;
@@ -28,6 +23,5 @@
} else {
var0 = 1U;
}
- val4 = var0;
- return val4;
+ return var0;
}
zext.bc
inttoptr.bc
--- /dev/fd/63 2022-08-10 15:51:47.952794946 +0000
+++ /dev/fd/62 2022-08-10 15:51:47.952794946 +0000
@@ -4,17 +4,13 @@
unsigned int var0;
void *var1;
unsigned long val2;
- void *val3;
- unsigned int val4;
var0 = 0U;
val2 = a;
var1 = (void *)val2;
- val3 = var1;
- if (val3 == (void *)0U) {
+ if (var1 == (void *)0U) {
var0 = 0U;
} else {
var0 = 42U;
}
- val4 = var0;
- return val4;
+ return var0;
}
assert.bc
--- /dev/fd/63 2022-08-10 15:51:48.164798125 +0000
+++ /dev/fd/62 2022-08-10 15:51:48.164798125 +0000
@@ -17,15 +17,17 @@
__assert_fail("a % 3", "assert.c", 6U, "int main(void)");
} else {
val2 = a;
- if (val2 % 7UL == 0UL) {
- __assert_fail("a % 7", "assert.c", 7U, "int main(void)");
- } else {
- val3 = a;
- if (val3 % 15UL == 0UL) {
- __assert_fail("a % 15", "assert.c", 8U, "int main(void)");
- } else {
- return 0U;
- }
- }
+ }
+ if (val1 % 3UL != 0UL && val2 % 7UL == 0UL) {
+ __assert_fail("a % 7", "assert.c", 7U, "int main(void)");
+ }
+ if (val1 % 3UL != 0UL && val2 % 7UL != 0UL) {
+ val3 = a;
+ }
+ if (val1 % 3UL != 0UL && val2 % 7UL != 0UL && val3 % 15UL == 0UL) {
+ __assert_fail("a % 15", "assert.c", 8U, "int main(void)");
+ }
+ if (val1 % 3UL != 0UL && val2 % 7UL != 0UL && val3 % 15UL != 0UL) {
+ return 0U;
}
}
loop.bc
--- /dev/fd/63 2022-08-10 15:51:48.624805024 +0000
+++ /dev/fd/62 2022-08-10 15:51:48.624805024 +0000
@@ -6,26 +6,17 @@
unsigned int main() {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
var0 = 0U;
var1 = 0U;
- do {
- val2 = var1;
- if (val2 != 10U) {
- val3 = var1;
- printf("Variable at %d is ", val3);
- val4 = var1;
- if (val4 % 2U != 0U) {
+ while (var1 != 10U)
+ {
+ printf("Variable at %d is ", var1);
+ if (var1 % 2U != 0U) {
printf("odd.\n");
} else {
printf("even.\n");
}
- val5 = var1;
- var1 = val5 + 1U;
+ var1 = var1 + 1U;
}
- } while (val2 != 10U);
return 0U;
}
switch.bc
--- /dev/fd/63 2022-08-10 15:51:48.956810004 +0000
+++ /dev/fd/62 2022-08-10 15:51:48.956810004 +0000
@@ -4,7 +4,6 @@
unsigned int var0;
unsigned int var1;
unsigned int val2;
- unsigned int val3;
var0 = 0U;
var1 = 0U;
val2 = a;
@@ -30,6 +29,5 @@
}
break;
}
- val3 = var1;
- return val3;
+ return var1;
}
template_parameter_pack.bc
--- /dev/fd/63 2022-08-10 15:51:49.192813543 +0000
+++ /dev/fd/62 2022-08-10 15:51:49.192813543 +0000
@@ -17,71 +17,43 @@
unsigned int var2;
unsigned int var3;
unsigned int var4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
- unsigned int call10;
+ unsigned int call5;
var0 = arg0;
var1 = arg1;
var2 = arg2;
var3 = arg3;
var4 = arg4;
- val5 = var0;
- val6 = var1;
- val7 = var2;
- val8 = var3;
- val9 = var4;
- call10 = _Z3sumIiJiiiEET_S0_DpT0_(val6, val7, val8, val9);
- return val5 + call10;
+ call5 = _Z3sumIiJiiiEET_S0_DpT0_(var1, var2, var3, var4);
+ return var0 + call5;
}
unsigned int _Z3sumIiJiiiEET_S0_DpT0_(unsigned int arg0, unsigned int arg1, unsigned int arg2, unsigned int arg3) {
unsigned int var0;
unsigned int var1;
unsigned int var2;
unsigned int var3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int call8;
+ unsigned int call4;
var0 = arg0;
var1 = arg1;
var2 = arg2;
var3 = arg3;
- val4 = var0;
- val5 = var1;
- val6 = var2;
- val7 = var3;
- call8 = _Z3sumIiJiiEET_S0_DpT0_(val5, val6, val7);
- return val4 + call8;
+ call4 = _Z3sumIiJiiEET_S0_DpT0_(var1, var2, var3);
+ return var0 + call4;
}
unsigned int _Z3sumIiJiiEET_S0_DpT0_(unsigned int arg0, unsigned int arg1, unsigned int arg2) {
unsigned int var0;
unsigned int var1;
unsigned int var2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int call6;
+ unsigned int call3;
var0 = arg0;
var1 = arg1;
var2 = arg2;
- val3 = var0;
- val4 = var1;
- val5 = var2;
- call6 = _Z3sumIiET_S0_S0_(val4, val5);
- return val3 + call6;
+ call3 = _Z3sumIiET_S0_S0_(var1, var2);
+ return var0 + call3;
}
unsigned int _Z3sumIiET_S0_S0_(unsigned int arg0, unsigned int arg1) {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
var0 = arg0;
var1 = arg1;
- val2 = var0;
- val3 = var1;
- return val2 + val3;
+ return var0 + var1;
}
byval_tail_nogep.ll
byval_tail_gep.ll
See the diff generated by this PR for the tests here: https://github.com/lifting-bits/rellic/actions/runs/2845618424
fizzbuzz.bc
--- /dev/fd/63 2022-08-12 09:11:53.878757777 +0000
+++ /dev/fd/62 2022-08-12 09:11:53.878757777 +0000
@@ -7,46 +7,24 @@
unsigned int main() {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
var0 = 0U;
var1 = 0U;
- do {
- val2 = var1;
- if ((int)val2 < 30) {
- val3 = var1;
- if ((int)val3 % 3 == 0U) {
- val4 = var1;
- if ((int)val4 % 5 == 0U) {
- printf("fizzbuzz\n");
- }
- }
- if ((int)val3 % 3 != 0U || !((int)val3 % 3 != 0U || (int)val4 % 5 == 0U)) {
- val5 = var1;
- if (((int)val3 % 3 != 0U || !((int)val4 % 5 == 0U || (int)val3 % 3 != 0U)) && (int)val5 % 3 != 0U) {
- val6 = var1;
- if ((int)val6 % 5 != 0U) {
- val7 = var1;
- printf("%d\n", val7);
+ while ((int)var1 < 30)
+ {
+ if ((int)var1 % 3 != 0U || !((int)var1 % 5 == 0U || (int)var1 % 3 != 0U)) {
+ if ((int)var1 % 3 != 0U) {
+ if ((int)var1 % 5 != 0U) {
+ printf("%d\n", var1);
} else {
printf("buzz\n");
}
} else {
- if (((int)val3 % 3 != 0U || !((int)val4 % 5 == 0U || (int)val3 % 3 != 0U)) && (int)val5 % 3 == 0U) {
- printf("fizz\n");
- }
+ printf("fizz\n");
}
+ } else {
+ printf("fizzbuzz\n");
}
- val8 = var1;
- var1 = val8 + 1U;
+ var1 = var1 + 1U;
}
- } while ((int)val2 < 30);
- val9 = var0;
- return val9;
+ return var0;
}
typedefs_of_typedefs.bc
--- /dev/fd/63 2022-08-12 09:11:54.554767812 +0000
+++ /dev/fd/62 2022-08-12 09:11:54.554767812 +0000
@@ -12,44 +12,28 @@
__attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long var5;
__attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long var6;
void *var7;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val8;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val9;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val10;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val11;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val12;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val13;
- void *val14;
- unsigned int val15;
- void *val16;
- unsigned int val17;
- unsigned long val18;
- unsigned long val19;
- unsigned long val20;
- unsigned long val21;
+ unsigned int val8;
+ unsigned int val9;
+ unsigned long val10;
+ unsigned long val11;
+ unsigned long val12;
+ unsigned long val13;
var0 = 0U;
var4 = (__attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long){1UL, 2UL};
- val8 = var4;
- var1 = val8;
+ var1 = var4;
var5 = (__attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long){};
- val9 = var5;
- var2 = val9;
+ var2 = var5;
var6 = (__attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long){4UL, 3UL};
- val10 = var6;
- var3 = val10;
- val11 = var1;
- val12 = var2;
- val13 = var3;
- var1 = val11 * val12 + val13;
+ var3 = var6;
+ var1 = var1 * var2 + var3;
var7 = (&var1);
- val14 = var7;
- val15 = *((unsigned int *)val14);
- val16 = var7;
- val17 = ((unsigned int *)val16)[1UL];
- printf("a=[%d %d]\n", val15, val17);
- val18 = *array;
- val19 = array[1UL];
- val20 = array[2UL];
- val21 = array[3UL];
- printf("array=[%lld %lld %lld %lld]\n", val18, val19, val20, val21);
+ val8 = *((unsigned int *)var7);
+ val9 = ((unsigned int *)var7)[1UL];
+ printf("a=[%d %d]\n", val8, val9);
+ val10 = *array;
+ val11 = array[1UL];
+ val12 = array[2UL];
+ val13 = array[3UL];
+ printf("array=[%lld %lld %lld %lld]\n", val10, val11, val12, val13);
return 0U;
}
switch_loop.bc
--- /dev/fd/63 2022-08-12 09:11:54.670769534 +0000
+++ /dev/fd/62 2022-08-12 09:11:54.670769534 +0000
@@ -4,36 +4,26 @@
unsigned int main() {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
var0 = 0U;
var1 = 0U;
- do {
- val2 = var1;
- var1 = val2 + 1U;
- val3 = var1;
- if (!(val3 != 1U && val3 != 2U && val3 != 3U)) {
- if (val3 == 3U) {
- val6 = var1;
- printf("%d\n", val6);
+ while (1U)
+ {
+ var1 = var1 + 1U;
+ if (var1 != 1U && var1 != 2U && var1 != 3U) {
break;
}
- if (val3 == 2U) {
- val5 = var1;
- printf("%d\n", val5);
+ if (var1 == 3U) {
+ printf("%d\n", var1);
+ break;
+ }
+ if (var1 == 2U) {
+ printf("%d\n", var1);
}
- if (val3 == 1U) {
- val4 = var1;
- printf("%d\n", val4);
+ if (var1 == 1U) {
+ printf("%d\n", var1);
}
}
- } while (!(val3 != 1U && val3 != 2U && val3 != 3U));
- if (val3 == 3U || !(val3 == 2U || val3 == 3U || val3 == 1U)) {
- val7 = var0;
- return val7;
+ if (var1 == 3U || !(var1 == 2U || var1 == 3U || var1 == 1U)) {
+ return var0;
}
}
func_cond_zero_arg.bc
--- /dev/fd/63 2022-08-12 09:11:55.114776124 +0000
+++ /dev/fd/62 2022-08-12 09:11:55.114776124 +0000
@@ -8,7 +8,6 @@
unsigned int main() {
unsigned int var0;
unsigned int call1;
- unsigned int val2;
var0 = 0U;
call1 = f();
if (call1 == 0U) {
@@ -16,6 +15,5 @@
} else {
var0 = 1U;
}
- val2 = var0;
- return val2;
+ return var0;
}
conflicting_names.bc
--- /dev/fd/63 2022-08-12 09:11:55.298778856 +0000
+++ /dev/fd/62 2022-08-12 09:11:55.298778856 +0000
@@ -4,17 +4,13 @@
unsigned int atoi(void *arg0);
unsigned int foo() {
unsigned int var0;
- unsigned int val1;
var0 = 0U;
- val1 = var0;
- return val1;
+ return var0;
}
unsigned int bar() {
unsigned int var0;
- unsigned int val1;
var0 = 1U;
- val1 = var0;
- return val1;
+ return var0;
}
unsigned int main() {
unsigned int var0;
@@ -24,35 +20,23 @@
unsigned int var4;
unsigned int var5;
unsigned int var6;
- unsigned int val7;
- void *val8;
- void *val9;
- unsigned int call10;
- unsigned int val11;
- unsigned int val12;
- unsigned int val13;
- unsigned int val14;
+ void *val7;
+ unsigned int call8;
var0 = 0U;
var1 = 0U;
var2 = (void *)0U;
var3 = 0U;
- val7 = var1;
- if (1 >= (int)val7) {
+ if (1 >= (int)var1) {
var6 = 1U;
- val13 = var6;
- var3 = val13;
+ var3 = var6;
} else {
- val8 = var2;
- val9 = ((void **)val8)[1UL];
- call10 = atoi(val9);
- var4 = call10;
- val11 = var4;
- if ((int)val11 > 10) {
+ val7 = ((void **)var2)[1UL];
+ call8 = atoi(val7);
+ var4 = call8;
+ if ((int)var4 > 10) {
var5 = 99U;
- val12 = var5;
- var3 = val12;
+ var3 = var5;
}
}
- val14 = var3;
- return val14;
+ return var3;
}
struct.bc
--- /dev/fd/63 2022-08-12 09:11:55.530782300 +0000
+++ /dev/fd/62 2022-08-12 09:11:55.530782300 +0000
@@ -9,7 +9,6 @@
unsigned int val1;
unsigned int val2;
unsigned int val3;
- unsigned int val4;
var0 = 0U;
val1 = a.field0;
if (val1 == 0U) {
@@ -19,6 +18,5 @@
val2 = a.field0;
var0 = val2;
}
- val4 = var0;
- return val4;
+ return var0;
}
issue_183_literal_structs.bc
issue_127_uint128_t_lit.bc
struct_swap.bc
--- /dev/fd/63 2022-08-12 09:11:55.950788534 +0000
+++ /dev/fd/62 2022-08-12 09:11:55.950788534 +0000
@@ -10,14 +10,12 @@
unsigned int val2;
unsigned int val3;
unsigned int val4;
- unsigned int val5;
var0 = 0U;
val2 = a.field0;
var1 = val2;
val3 = a.field1;
a.field0 = val3;
- val4 = var1;
- a.field1 = val4;
- val5 = a.field0;
- return val5;
+ a.field1 = var1;
+ val4 = a.field0;
+ return val4;
}
init_list.bc
ret0.bc
trunc.bc
short.bc
--- /dev/fd/63 2022-08-12 09:11:56.410795362 +0000
+++ /dev/fd/62 2022-08-12 09:11:56.410795362 +0000
@@ -4,11 +4,9 @@
unsigned int var0;
unsigned short var1;
unsigned short val2;
- unsigned short val3;
var0 = 0U;
a = 13U;
val2 = a;
var1 = val2;
- val3 = var1;
- return (unsigned int)val3;
+ return (unsigned int)var1;
}
cast.bc
nullptr.bc
--- /dev/fd/63 2022-08-12 09:11:56.642798806 +0000
+++ /dev/fd/62 2022-08-12 09:11:56.642798806 +0000
@@ -3,7 +3,6 @@
unsigned int main() {
unsigned int var0;
void *val1;
- unsigned int val2;
var0 = 0U;
val1 = ptr;
if (val1 != (void *)0U) {
@@ -11,6 +10,5 @@
} else {
var0 = 0U;
}
- val2 = var0;
- return val2;
+ return var0;
}
nested_struct.bc
array_swap.bc
--- /dev/fd/63 2022-08-12 09:11:56.946802982 +0000
+++ /dev/fd/62 2022-08-12 09:11:56.946802982 +0000
@@ -6,14 +6,12 @@
unsigned int val2;
unsigned int val3;
unsigned int val4;
- unsigned int val5;
var0 = 0U;
val2 = *a;
var1 = val2;
val3 = a[1UL];
*a = val3;
- val4 = var1;
- a[1UL] = val4;
- val5 = *a;
- return val5;
+ a[1UL] = var1;
+ val4 = *a;
+ return val4;
}
bitmask.bc
--- /dev/fd/63 2022-08-12 09:11:57.062804571 +0000
+++ /dev/fd/62 2022-08-12 09:11:57.062804571 +0000
@@ -3,7 +3,6 @@
unsigned int main() {
unsigned int var0;
unsigned long val1;
- unsigned int val2;
var0 = 0U;
val1 = a;
if ((val1 & 4080UL) >> 4UL != 188UL) {
@@ -11,6 +10,5 @@
} else {
var0 = 0U;
}
- val2 = var0;
- return val2;
+ return var0;
}
binops.bc
--- /dev/fd/63 2022-08-12 09:11:57.246807091 +0000
+++ /dev/fd/62 2022-08-12 09:11:57.250807146 +0000
@@ -4,49 +4,23 @@
unsigned int var0;
unsigned int var1;
unsigned int var2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
- unsigned int val10;
- unsigned int val11;
- unsigned int val12;
- unsigned int val13;
- unsigned int val14;
- unsigned int val15;
var0 = arg0;
- val3 = var0;
- var1 = val3 % 4U;
+ var1 = var0 % 4U;
var2 = 0U;
- val4 = var1;
- if (val4 != 0U) {
- val7 = var1;
- if (val7 != 1U) {
- val10 = var1;
- if (val10 != 2U) {
- val13 = var0;
- val14 = var0;
- var2 = (val13 + 3131756735U) * (5U & val14);
+ if (var1 != 0U) {
+ if (var1 != 1U) {
+ if (var1 != 2U) {
+ var2 = (var0 + 3131756735U) * (5U & var0);
} else {
- val11 = var0;
- val12 = var0;
- var2 = (val11 ^ 3131756735U) * (4U | val12);
+ var2 = (var0 ^ 3131756735U) * (4U | var0);
}
} else {
- val8 = var0;
- val9 = var0;
- var2 = (val8 & 3131756735U) * (3U + val9);
+ var2 = (var0 & 3131756735U) * (3U + var0);
}
} else {
- val5 = var0;
- val6 = var0;
- var2 = (val5 | 3131756735U) * (2U ^ val6);
+ var2 = (var0 | 3131756735U) * (2U ^ var0);
}
- val15 = var2;
- return val15;
+ return var2;
}
unsigned int main() {
unsigned int var0;
float.bc
--- /dev/fd/63 2022-08-12 09:11:57.586811748 +0000
+++ /dev/fd/62 2022-08-12 09:11:57.590811802 +0000
@@ -4,21 +4,15 @@
unsigned int var0;
double var1;
double var2;
- double val3;
- float val4;
- double val5;
- unsigned int val6;
+ float val3;
var0 = 0U;
var1 = 3.1428571428571428;
- val3 = var1;
- val4 = f;
- var2 = val3 - (double)val4;
- val5 = var2;
- if (val5 >= 0.01) {
+ val3 = f;
+ var2 = var1 - (double)val3;
+ if (var2 >= 0.01) {
var0 = 1U;
} else {
var0 = 0U;
}
- val6 = var0;
- return val6;
+ return var0;
}
reg_test_structure_fields.bc
zeroinit.bc
--- /dev/fd/63 2022-08-12 09:11:57.886815857 +0000
+++ /dev/fd/62 2022-08-12 09:11:57.886815857 +0000
@@ -18,7 +18,6 @@
unsigned int var0;
unsigned int val1;
unsigned long val2;
- unsigned int val3;
var0 = 0U;
val1 = r1.field1.field0;
if (val1 == 0U) {
@@ -31,6 +30,5 @@
} else {
var0 = 1U;
}
- val3 = var0;
- return val3;
+ return var0;
}
funcptr.bc
--- /dev/fd/63 2022-08-12 09:11:58.138819308 +0000
+++ /dev/fd/62 2022-08-12 09:11:58.138819308 +0000
@@ -5,31 +5,22 @@
unsigned int add(unsigned int arg0, unsigned int arg1) {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
var0 = arg0;
var1 = arg1;
- val2 = var0;
- val3 = var1;
- return val2 + val3;
+ return var0 + var1;
}
unsigned int sub(unsigned int arg0, unsigned int arg1) {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
var0 = arg0;
var1 = arg1;
- val2 = var0;
- val3 = var1;
- return val2 - val3;
+ return var0 - var1;
}
unsigned int main() {
unsigned int var0;
void *var1;
unsigned int val2;
- void *val3;
- unsigned int call4;
+ unsigned int call3;
var0 = 0U;
val2 = x;
if (val2 == 0U) {
@@ -37,7 +28,6 @@
} else {
var1 = &add;
}
- val3 = var1;
- call4 = ((unsigned int (*)(unsigned int, unsigned int))val3)(2U, 2U);
- return call4;
+ call3 = ((unsigned int (*)(unsigned int, unsigned int))var1)(2U, 2U);
+ return call3;
}
goto_loop.bc
--- /dev/fd/63 2022-08-12 09:11:58.322821828 +0000
+++ /dev/fd/62 2022-08-12 09:11:58.322821828 +0000
@@ -4,41 +4,23 @@
unsigned int main() {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
var0 = 0U;
var1 = 0U;
while (1U)
{
- val2 = var1;
- var1 = val2 + 1U;
- val3 = var1;
- if (val3 == 1U) {
- val4 = var1;
- printf("%d\n", val4);
+ var1 = var1 + 1U;
+ if (var1 == 1U) {
+ printf("%d\n", var1);
+ } else if (var1 != 2U) {
+ break;
} else {
- val5 = var1;
- if (val5 != 2U) {
- break;
- } else {
- val6 = var1;
- printf("%d\n", val6);
- }
+ printf("%d\n", var1);
}
}
- if (val3 != 1U && val5 != 2U) {
- val7 = var1;
- if (val7 == 3U) {
- val8 = var1;
- printf("%d\n", val8);
+ if (var1 != 1U && var1 != 2U) {
+ if (var1 == 3U) {
+ printf("%d\n", var1);
}
- val9 = var0;
- return val9;
+ return var0;
}
}
branch.bc
--- /dev/fd/63 2022-08-12 09:11:58.706827088 +0000
+++ /dev/fd/62 2022-08-12 09:11:58.706827088 +0000
@@ -13,18 +13,15 @@
unsigned long var2;
unsigned int val3;
unsigned int val4;
- unsigned long val5;
- unsigned int val6;
- unsigned long val7;
+ unsigned int val5;
var0 = 0U;
var1 = (unsigned long)(&a);
var2 = (unsigned long)(&c);
val3 = c;
if (val3 == 0U) {
- val6 = c;
- printf("Global variable 'c' of value %u is at ", val6);
- val7 = var2;
- if (val7 % 2UL != 0UL) {
+ val5 = c;
+ printf("Global variable 'c' of value %u is at ", val5);
+ if (var2 % 2UL != 0UL) {
printf("odd ");
} else {
printf("even ");
@@ -32,8 +29,7 @@
} else {
val4 = a;
printf("Global variable 'a' of value %u is at ", val4);
- val5 = var1;
- if (val5 % 2UL != 0UL) {
+ if (var1 % 2UL != 0UL) {
printf("odd ");
} else {
printf("even ");
bitops.bc
--- /dev/fd/63 2022-08-12 09:11:59.038831635 +0000
+++ /dev/fd/62 2022-08-12 09:11:59.038831635 +0000
@@ -10,28 +10,20 @@
unsigned int val5;
unsigned int val6;
unsigned int val7;
- unsigned int val8;
- unsigned int val9;
- unsigned int val10;
- unsigned int val11;
var0 = 0U;
var1 = 0U;
val2 = a;
val3 = b;
if (((int)val2 >> val3 & 1U) != 0U) {
- val4 = var1;
- var1 = val4 + 1U;
+ var1 = var1 + 1U;
}
- val5 = a;
- val6 = b;
- if ((val5 >> val6 ^ 1U) != 0U) {
- val7 = var1;
- var1 = val7 + 2U;
+ val4 = a;
+ val5 = b;
+ if ((val4 >> val5 ^ 1U) != 0U) {
+ var1 = var1 + 2U;
}
- val8 = a;
- val9 = b;
- val10 = var1;
- var1 = val10 + 3U;
- val11 = var1;
- return val11;
+ val6 = a;
+ val7 = b;
+ var1 = var1 + 3U;
+ return var1;
}
vectors.bc
--- /dev/fd/63 2022-08-12 09:11:59.298835196 +0000
+++ /dev/fd/62 2022-08-12 09:11:59.298835196 +0000
@@ -10,43 +10,23 @@
__attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int var5;
__attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int var6;
void *var7;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val8;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val9;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val10;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val11;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val12;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val13;
- void *val14;
- unsigned int val15;
- void *val16;
- unsigned int val17;
- void *val18;
- unsigned int val19;
- void *val20;
- unsigned int val21;
+ unsigned int val8;
+ unsigned int val9;
+ unsigned int val10;
+ unsigned int val11;
var0 = 0U;
var4 = (__attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int){1U, 2U, 3U, 4U};
- val8 = var4;
- var1 = val8;
+ var1 = var4;
var5 = (__attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int){};
- val9 = var5;
- var2 = val9;
+ var2 = var5;
var6 = (__attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int){4U, 3U, 2U, 1U};
- val10 = var6;
- var3 = val10;
- val11 = var1;
- val12 = var2;
- val13 = var3;
- var1 = val11 * val12 + val13;
+ var3 = var6;
+ var1 = var1 * var2 + var3;
var7 = (&var1);
- val14 = var7;
- val15 = *((unsigned int *)val14);
- val16 = var7;
- val17 = ((unsigned int *)val16)[1UL];
- val18 = var7;
- val19 = ((unsigned int *)val18)[2UL];
- val20 = var7;
- val21 = ((unsigned int *)val20)[3UL];
- printf("a=[%d %d %d %d]\n", val15, val17, val19, val21);
+ val8 = *((unsigned int *)var7);
+ val9 = ((unsigned int *)var7)[1UL];
+ val10 = ((unsigned int *)var7)[2UL];
+ val11 = ((unsigned int *)var7)[3UL];
+ printf("a=[%d %d %d %d]\n", val8, val9, val10, val11);
return 0U;
}
issue_4.bc
--- /dev/fd/63 2022-08-12 09:11:59.414836785 +0000
+++ /dev/fd/62 2022-08-12 09:11:59.414836785 +0000
@@ -5,32 +5,17 @@
unsigned int var1;
unsigned int var2;
unsigned int var3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
- unsigned int val10;
var0 = arg0;
var1 = arg1;
var2 = 0U;
var3 = 0U;
- do {
- val4 = var3;
- if (val4 != 42U) {
- val5 = var0;
- val6 = var2;
- var2 = val6 + val5;
- val7 = var1;
- val8 = var2;
- var2 = val8 % val7;
- val9 = var3;
- var3 = val9 + 1U;
+ while (var3 != 42U)
+ {
+ var2 = var2 + var0;
+ var2 = var2 % var1;
+ var3 = var3 + 1U;
}
- } while (val4 != 42U);
- val10 = var2;
- return val10;
+ return var2;
}
unsigned int main() {
unsigned int var0;
conflicting_global.bc
--- /dev/fd/63 2022-08-12 09:11:59.626839688 +0000
+++ /dev/fd/62 2022-08-12 09:11:59.626839688 +0000
@@ -5,11 +5,9 @@
unsigned int main() {
unsigned int var0;
unsigned int val1;
- unsigned int val2;
var0 = 4U;
- val1 = var0;
+ printf("%d\n", var0);
+ val1 = a;
printf("%d\n", val1);
- val2 = a;
- printf("%d\n", val2);
return 0U;
}
issue_123_uint128_t.bc
--- /dev/fd/63 2022-08-12 09:11:59.742841277 +0000
+++ /dev/fd/62 2022-08-12 09:11:59.742841277 +0000
@@ -4,13 +4,11 @@
unsigned int var0;
unsigned __int128 var1;
unsigned long val2;
- unsigned __int128 val3;
- unsigned long val4;
+ unsigned long val3;
var0 = 0U;
val2 = x;
var1 = val2;
- val3 = var1;
- x = val3;
- val4 = x;
- return (unsigned int)(val4 & 255UL);
+ x = var1;
+ val3 = x;
+ return (unsigned int)(val3 & 255UL);
}
fizzbuzz_stateful.bc
--- /dev/fd/63 2022-08-12 09:11:59.854842811 +0000
+++ /dev/fd/62 2022-08-12 09:11:59.854842811 +0000
@@ -14,7 +14,6 @@
unsigned int val4;
unsigned int val5;
unsigned int val6;
- unsigned int val7;
val1 = i;
var0 = val1;
val2 = i;
@@ -34,15 +33,13 @@
printf("%d", val6);
}
}
- val7 = var0;
- i = val7;
+ i = var0;
return;
}
unsigned int main() {
unsigned int var0;
unsigned int val1;
unsigned int val2;
- unsigned int val3;
var0 = 0U;
i = 1U;
do {
@@ -54,6 +51,5 @@
i = val2 + 1U;
}
} while ((int)val1 < 16);
- val3 = var0;
- return val3;
+ return var0;
}
issue_94_strncmp.bc
bool.bc
--- /dev/fd/63 2022-08-12 09:12:00.534852125 +0000
+++ /dev/fd/62 2022-08-12 09:12:00.534852125 +0000
@@ -5,7 +5,6 @@
unsigned int var0;
unsigned long val1;
unsigned long val2;
- unsigned int val3;
var0 = 0U;
val1 = a;
val2 = b;
@@ -14,6 +13,5 @@
} else {
var0 = 0U;
}
- val3 = var0;
- return val3;
+ return var0;
}
global_using_function_decl.bc
fcmp.bc
--- /dev/fd/63 2022-08-12 09:12:00.834856234 +0000
+++ /dev/fd/62 2022-08-12 09:12:00.834856234 +0000
@@ -17,56 +17,18 @@
unsigned int var9;
float call10;
float call11;
- float val12;
- float val13;
- float val14;
- float val15;
- float val16;
- float val17;
- float val18;
- float val19;
- float val20;
- float val21;
- float val22;
- float val23;
- float val24;
- unsigned int val25;
- unsigned int val26;
- unsigned int val27;
- unsigned int val28;
- unsigned int val29;
- unsigned int val30;
var0 = __builtin_nan("");
call10 = atof("3");
var1 = call10;
call11 = atof("2");
var2 = call11;
- val12 = var1;
- var3 = -val12;
- val13 = var3;
- val14 = var0;
- var4 = (val13 > val14);
- val15 = var3;
- val16 = var0;
- var5 = (val15 >= val16);
- val17 = var1;
- val18 = var2;
- var6 = (val17 > val18);
- val19 = var1;
- val20 = var2;
- var7 = (val19 >= val20);
- val21 = var1;
- val22 = var0;
- var8 = __builtin_isunordered(val21, val22);
- val23 = var1;
- val24 = var2;
- var9 = __builtin_isunordered(val23, val24);
- val25 = var4;
- val26 = var5;
- val27 = var6;
- val28 = var7;
- val29 = var8;
- val30 = var9;
- printf("%d %d %d %d %d %d\n", val25, val26, val27, val28, val29, val30);
+ var3 = -var1;
+ var4 = (var3 > var0);
+ var5 = (var3 >= var0);
+ var6 = (var1 > var2);
+ var7 = (var1 >= var2);
+ var8 = __builtin_isunordered(var1, var0);
+ var9 = __builtin_isunordered(var1, var2);
+ printf("%d %d %d %d %d %d\n", var4, var5, var6, var7, var8, var9);
return 0U;
}
byval_struct.bc
--- /dev/fd/63 2022-08-12 09:12:00.950857823 +0000
+++ /dev/fd/62 2022-08-12 09:12:00.950857823 +0000
@@ -31,7 +31,6 @@
unsigned int call5;
unsigned long call6;
unsigned long val7;
- unsigned long val8;
call2 = atoi("1");
var0.field0 = (long)call2;
call3 = atoi("2");
@@ -43,7 +42,6 @@
call6 = get_3x(var0);
var1 = call6;
val7 = var0.field0;
- val8 = var1;
- printf("%lld %lld\n", val7, val8);
+ printf("%lld %lld\n", val7, var1);
return 0U;
}
nested_while.bc
--- /dev/fd/63 2022-08-12 09:12:01.066859411 +0000
+++ /dev/fd/62 2022-08-12 09:12:01.066859411 +0000
@@ -8,40 +8,24 @@
unsigned int var0;
unsigned int var1;
unsigned int call2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
- unsigned int val10;
var0 = 0U;
call2 = atoi("5");
var1 = call2;
- val3 = var1;
- if ((int)val3 > 10) {
- do {
- val4 = var1;
- if ((int)val4 < 20) {
- val5 = var1;
- var1 = val5 + 1U;
- val6 = var1;
- printf("loop1 x: %d\n", val6);
+ if ((int)var1 > 10) {
+ while ((int)var1 < 20)
+ {
+ var1 = var1 + 1U;
+ printf("loop1 x: %d\n", var1);
}
- } while ((int)val4 < 20);
}
- if ((int)val3 <= 10 || (int)val4 >= 20) {
- do {
- val7 = var1;
- if ((int)val7 < 20) {
- val8 = var1;
- var1 = val8 + 1U;
- val9 = var1;
- printf("loop2 x: %d\n", val9);
+ if ((int)var1 <= 10 || (int)var1 >= 20) {
+ while ((int)var1 < 20)
+ {
+ var1 = var1 + 1U;
+ printf("loop2 x: %d\n", var1);
}
- } while ((int)val7 < 20);
- val10 = var0;
- return val10;
+ }
+ if (((int)var1 <= 10 || (int)var1 >= 20) && (int)var1 >= 20) {
+ return var0;
}
}
func_cond_two_arg.bc
--- /dev/fd/63 2022-08-12 09:12:01.482865109 +0000
+++ /dev/fd/62 2022-08-12 09:12:01.482865109 +0000
@@ -5,20 +5,15 @@
unsigned int f(unsigned int arg0, unsigned int arg1) {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
var0 = arg0;
var1 = arg1;
- val2 = var0;
- val3 = var1;
- return (unsigned int)((int)val2 < (int)val3);
+ return (unsigned int)((int)var0 < (int)var1);
}
unsigned int main() {
unsigned int var0;
unsigned int val1;
unsigned int val2;
unsigned int call3;
- unsigned int val4;
var0 = 0U;
val1 = x;
val2 = y;
@@ -28,6 +23,5 @@
} else {
var0 = 1U;
}
- val4 = var0;
- return val4;
+ return var0;
}
zext.bc
inttoptr.bc
--- /dev/fd/63 2022-08-12 09:12:01.786869273 +0000
+++ /dev/fd/62 2022-08-12 09:12:01.786869273 +0000
@@ -4,17 +4,13 @@
unsigned int var0;
void *var1;
unsigned long val2;
- void *val3;
- unsigned int val4;
var0 = 0U;
val2 = a;
var1 = (void *)val2;
- val3 = var1;
- if (val3 == (void *)0U) {
+ if (var1 == (void *)0U) {
var0 = 0U;
} else {
var0 = 42U;
}
- val4 = var0;
- return val4;
+ return var0;
}
assert.bc
--- /dev/fd/63 2022-08-12 09:12:01.970871793 +0000
+++ /dev/fd/62 2022-08-12 09:12:01.970871793 +0000
@@ -17,15 +17,17 @@
__assert_fail("a % 3", "assert.c", 6U, "int main(void)");
} else {
val2 = a;
- if (val2 % 7UL == 0UL) {
- __assert_fail("a % 7", "assert.c", 7U, "int main(void)");
- } else {
- val3 = a;
- if (val3 % 15UL == 0UL) {
- __assert_fail("a % 15", "assert.c", 8U, "int main(void)");
- } else {
- return 0U;
- }
- }
+ }
+ if (val1 % 3UL != 0UL && val2 % 7UL == 0UL) {
+ __assert_fail("a % 7", "assert.c", 7U, "int main(void)");
+ }
+ if (val1 % 3UL != 0UL && val2 % 7UL != 0UL) {
+ val3 = a;
+ }
+ if (val1 % 3UL != 0UL && val2 % 7UL != 0UL && val3 % 15UL == 0UL) {
+ __assert_fail("a % 15", "assert.c", 8U, "int main(void)");
+ }
+ if (val1 % 3UL != 0UL && val2 % 7UL != 0UL && val3 % 15UL != 0UL) {
+ return 0U;
}
}
loop.bc
--- /dev/fd/63 2022-08-12 09:12:02.366877217 +0000
+++ /dev/fd/62 2022-08-12 09:12:02.366877217 +0000
@@ -6,26 +6,17 @@
unsigned int main() {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
var0 = 0U;
var1 = 0U;
- do {
- val2 = var1;
- if (val2 != 10U) {
- val3 = var1;
- printf("Variable at %d is ", val3);
- val4 = var1;
- if (val4 % 2U != 0U) {
+ while (var1 != 10U)
+ {
+ printf("Variable at %d is ", var1);
+ if (var1 % 2U != 0U) {
printf("odd.\n");
} else {
printf("even.\n");
}
- val5 = var1;
- var1 = val5 + 1U;
+ var1 = var1 + 1U;
}
- } while (val2 != 10U);
return 0U;
}
switch.bc
--- /dev/fd/63 2022-08-12 09:12:02.650881107 +0000
+++ /dev/fd/62 2022-08-12 09:12:02.650881107 +0000
@@ -4,7 +4,6 @@
unsigned int var0;
unsigned int var1;
unsigned int val2;
- unsigned int val3;
var0 = 0U;
var1 = 0U;
val2 = a;
@@ -30,6 +29,5 @@
}
break;
}
- val3 = var1;
- return val3;
+ return var1;
}
template_parameter_pack.bc
--- /dev/fd/63 2022-08-12 09:12:02.858883955 +0000
+++ /dev/fd/62 2022-08-12 09:12:02.858883955 +0000
@@ -17,71 +17,43 @@
unsigned int var2;
unsigned int var3;
unsigned int var4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
- unsigned int call10;
+ unsigned int call5;
var0 = arg0;
var1 = arg1;
var2 = arg2;
var3 = arg3;
var4 = arg4;
- val5 = var0;
- val6 = var1;
- val7 = var2;
- val8 = var3;
- val9 = var4;
- call10 = _Z3sumIiJiiiEET_S0_DpT0_(val6, val7, val8, val9);
- return val5 + call10;
+ call5 = _Z3sumIiJiiiEET_S0_DpT0_(var1, var2, var3, var4);
+ return var0 + call5;
}
unsigned int _Z3sumIiJiiiEET_S0_DpT0_(unsigned int arg0, unsigned int arg1, unsigned int arg2, unsigned int arg3) {
unsigned int var0;
unsigned int var1;
unsigned int var2;
unsigned int var3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int call8;
+ unsigned int call4;
var0 = arg0;
var1 = arg1;
var2 = arg2;
var3 = arg3;
- val4 = var0;
- val5 = var1;
- val6 = var2;
- val7 = var3;
- call8 = _Z3sumIiJiiEET_S0_DpT0_(val5, val6, val7);
- return val4 + call8;
+ call4 = _Z3sumIiJiiEET_S0_DpT0_(var1, var2, var3);
+ return var0 + call4;
}
unsigned int _Z3sumIiJiiEET_S0_DpT0_(unsigned int arg0, unsigned int arg1, unsigned int arg2) {
unsigned int var0;
unsigned int var1;
unsigned int var2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int call6;
+ unsigned int call3;
var0 = arg0;
var1 = arg1;
var2 = arg2;
- val3 = var0;
- val4 = var1;
- val5 = var2;
- call6 = _Z3sumIiET_S0_S0_(val4, val5);
- return val3 + call6;
+ call3 = _Z3sumIiET_S0_S0_(var1, var2);
+ return var0 + call3;
}
unsigned int _Z3sumIiET_S0_S0_(unsigned int arg0, unsigned int arg1) {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
var0 = arg0;
var1 = arg1;
- val2 = var0;
- val3 = var1;
- return val2 + val3;
+ return var0 + var1;
}
byval_tail_nogep.ll
byval_tail_gep.ll
See the diff generated by this PR for the tests here: https://github.com/lifting-bits/rellic/actions/runs/2845993135
fizzbuzz.bc
--- /dev/fd/63 2022-08-12 10:24:12.493930247 +0000
+++ /dev/fd/62 2022-08-12 10:24:12.493930247 +0000
@@ -7,46 +7,24 @@
unsigned int main() {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
var0 = 0U;
var1 = 0U;
- do {
- val2 = var1;
- if ((int)val2 < 30) {
- val3 = var1;
- if ((int)val3 % 3 == 0U) {
- val4 = var1;
- if ((int)val4 % 5 == 0U) {
- printf("fizzbuzz\n");
- }
- }
- if ((int)val3 % 3 != 0U || !((int)val3 % 3 != 0U || (int)val4 % 5 == 0U)) {
- val5 = var1;
- if (((int)val3 % 3 != 0U || !((int)val4 % 5 == 0U || (int)val3 % 3 != 0U)) && (int)val5 % 3 != 0U) {
- val6 = var1;
- if ((int)val6 % 5 != 0U) {
- val7 = var1;
- printf("%d\n", val7);
+ while ((int)var1 < 30)
+ {
+ if ((int)var1 % 3 != 0U || !((int)var1 % 5 == 0U || (int)var1 % 3 != 0U)) {
+ if ((int)var1 % 3 != 0U) {
+ if ((int)var1 % 5 != 0U) {
+ printf("%d\n", var1);
} else {
printf("buzz\n");
}
} else {
- if (((int)val3 % 3 != 0U || !((int)val4 % 5 == 0U || (int)val3 % 3 != 0U)) && (int)val5 % 3 == 0U) {
- printf("fizz\n");
- }
+ printf("fizz\n");
}
+ } else {
+ printf("fizzbuzz\n");
}
- val8 = var1;
- var1 = val8 + 1U;
+ var1 = var1 + 1U;
}
- } while ((int)val2 < 30);
- val9 = var0;
- return val9;
+ return var0;
}
typedefs_of_typedefs.bc
--- /dev/fd/63 2022-08-12 10:24:18.553971956 +0000
+++ /dev/fd/62 2022-08-12 10:24:18.553971956 +0000
@@ -12,44 +12,28 @@
__attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long var5;
__attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long var6;
void *var7;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val8;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val9;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val10;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val11;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val12;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val13;
- void *val14;
- unsigned int val15;
- void *val16;
- unsigned int val17;
- unsigned long val18;
- unsigned long val19;
- unsigned long val20;
- unsigned long val21;
+ unsigned int val8;
+ unsigned int val9;
+ unsigned long val10;
+ unsigned long val11;
+ unsigned long val12;
+ unsigned long val13;
var0 = 0U;
var4 = (__attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long){1UL, 2UL};
- val8 = var4;
- var1 = val8;
+ var1 = var4;
var5 = (__attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long){};
- val9 = var5;
- var2 = val9;
+ var2 = var5;
var6 = (__attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long){4UL, 3UL};
- val10 = var6;
- var3 = val10;
- val11 = var1;
- val12 = var2;
- val13 = var3;
- var1 = val11 * val12 + val13;
+ var3 = var6;
+ var1 = var1 * var2 + var3;
var7 = (&var1);
- val14 = var7;
- val15 = *((unsigned int *)val14);
- val16 = var7;
- val17 = ((unsigned int *)val16)[1UL];
- printf("a=[%d %d]\n", val15, val17);
- val18 = *array;
- val19 = array[1UL];
- val20 = array[2UL];
- val21 = array[3UL];
- printf("array=[%lld %lld %lld %lld]\n", val18, val19, val20, val21);
+ val8 = *((unsigned int *)var7);
+ val9 = ((unsigned int *)var7)[1UL];
+ printf("a=[%d %d]\n", val8, val9);
+ val10 = *array;
+ val11 = array[1UL];
+ val12 = array[2UL];
+ val13 = array[3UL];
+ printf("array=[%lld %lld %lld %lld]\n", val10, val11, val12, val13);
return 0U;
}
switch_loop.bc
--- /dev/fd/63 2022-08-12 10:24:18.693972921 +0000
+++ /dev/fd/62 2022-08-12 10:24:18.693972921 +0000
@@ -4,36 +4,21 @@
unsigned int main() {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
var0 = 0U;
var1 = 0U;
do {
- val2 = var1;
- var1 = val2 + 1U;
- val3 = var1;
- if (!(val3 != 1U && val3 != 2U && val3 != 3U)) {
- if (val3 == 3U) {
- val6 = var1;
- printf("%d\n", val6);
+ var1 = var1 + 1U;
+ if (!(var1 != 1U && var1 != 2U && var1 != 3U))
+ if (var1 == 3U) {
+ printf("%d\n", var1);
break;
+ } else if (var1 == 2U) {
+ printf("%d\n", var1);
+ } else {
+ printf("%d\n", var1);
}
- if (val3 == 2U) {
- val5 = var1;
- printf("%d\n", val5);
- }
- if (val3 == 1U) {
- val4 = var1;
- printf("%d\n", val4);
- }
- }
- } while (!(val3 != 1U && val3 != 2U && val3 != 3U));
- if (val3 == 3U || !(val3 == 2U || val3 == 3U || val3 == 1U)) {
- val7 = var0;
- return val7;
+ } while (!(var1 != 1U && var1 != 2U && var1 != 3U));
+ if (var1 == 3U || !(var1 == 2U || var1 == 3U || var1 == 1U)) {
+ return var0;
}
}
func_cond_zero_arg.bc
--- /dev/fd/63 2022-08-12 10:24:19.373977608 +0000
+++ /dev/fd/62 2022-08-12 10:24:19.373977608 +0000
@@ -8,7 +8,6 @@
unsigned int main() {
unsigned int var0;
unsigned int call1;
- unsigned int val2;
var0 = 0U;
call1 = f();
if (call1 == 0U) {
@@ -16,6 +15,5 @@
} else {
var0 = 1U;
}
- val2 = var0;
- return val2;
+ return var0;
}
conflicting_names.bc
--- /dev/fd/63 2022-08-12 10:24:19.581979042 +0000
+++ /dev/fd/62 2022-08-12 10:24:19.581979042 +0000
@@ -4,17 +4,13 @@
unsigned int atoi(void *arg0);
unsigned int foo() {
unsigned int var0;
- unsigned int val1;
var0 = 0U;
- val1 = var0;
- return val1;
+ return var0;
}
unsigned int bar() {
unsigned int var0;
- unsigned int val1;
var0 = 1U;
- val1 = var0;
- return val1;
+ return var0;
}
unsigned int main() {
unsigned int var0;
@@ -24,35 +20,23 @@
unsigned int var4;
unsigned int var5;
unsigned int var6;
- unsigned int val7;
- void *val8;
- void *val9;
- unsigned int call10;
- unsigned int val11;
- unsigned int val12;
- unsigned int val13;
- unsigned int val14;
+ void *val7;
+ unsigned int call8;
var0 = 0U;
var1 = 0U;
var2 = (void *)0U;
var3 = 0U;
- val7 = var1;
- if (1 >= (int)val7) {
+ if (1 >= (int)var1) {
var6 = 1U;
- val13 = var6;
- var3 = val13;
+ var3 = var6;
} else {
- val8 = var2;
- val9 = ((void **)val8)[1UL];
- call10 = atoi(val9);
- var4 = call10;
- val11 = var4;
- if ((int)val11 > 10) {
+ val7 = ((void **)var2)[1UL];
+ call8 = atoi(val7);
+ var4 = call8;
+ if ((int)var4 > 10) {
var5 = 99U;
- val12 = var5;
- var3 = val12;
+ var3 = var5;
}
}
- val14 = var3;
- return val14;
+ return var3;
}
struct.bc
--- /dev/fd/63 2022-08-12 10:24:19.893981192 +0000
+++ /dev/fd/62 2022-08-12 10:24:19.893981192 +0000
@@ -9,7 +9,6 @@
unsigned int val1;
unsigned int val2;
unsigned int val3;
- unsigned int val4;
var0 = 0U;
val1 = a.field0;
if (val1 == 0U) {
@@ -19,6 +18,5 @@
val2 = a.field0;
var0 = val2;
}
- val4 = var0;
- return val4;
+ return var0;
}
issue_183_literal_structs.bc
issue_127_uint128_t_lit.bc
struct_swap.bc
--- /dev/fd/63 2022-08-12 10:24:20.349984336 +0000
+++ /dev/fd/62 2022-08-12 10:24:20.349984336 +0000
@@ -10,14 +10,12 @@
unsigned int val2;
unsigned int val3;
unsigned int val4;
- unsigned int val5;
var0 = 0U;
val2 = a.field0;
var1 = val2;
val3 = a.field1;
a.field0 = val3;
- val4 = var1;
- a.field1 = val4;
- val5 = a.field0;
- return val5;
+ a.field1 = var1;
+ val4 = a.field0;
+ return val4;
}
init_list.bc
ret0.bc
trunc.bc
short.bc
--- /dev/fd/63 2022-08-12 10:24:20.861987865 +0000
+++ /dev/fd/62 2022-08-12 10:24:20.861987865 +0000
@@ -4,11 +4,9 @@
unsigned int var0;
unsigned short var1;
unsigned short val2;
- unsigned short val3;
var0 = 0U;
a = 13U;
val2 = a;
var1 = val2;
- val3 = var1;
- return (unsigned int)val3;
+ return (unsigned int)var1;
}
cast.bc
nullptr.bc
--- /dev/fd/63 2022-08-12 10:24:21.113989602 +0000
+++ /dev/fd/62 2022-08-12 10:24:21.113989602 +0000
@@ -3,7 +3,6 @@
unsigned int main() {
unsigned int var0;
void *val1;
- unsigned int val2;
var0 = 0U;
val1 = ptr;
if (val1 != (void *)0U) {
@@ -11,6 +10,5 @@
} else {
var0 = 0U;
}
- val2 = var0;
- return val2;
+ return var0;
}
nested_struct.bc
array_swap.bc
--- /dev/fd/63 2022-08-12 10:24:21.457991973 +0000
+++ /dev/fd/62 2022-08-12 10:24:21.457991973 +0000
@@ -6,14 +6,12 @@
unsigned int val2;
unsigned int val3;
unsigned int val4;
- unsigned int val5;
var0 = 0U;
val2 = *a;
var1 = val2;
val3 = a[1UL];
*a = val3;
- val4 = var1;
- a[1UL] = val4;
- val5 = *a;
- return val5;
+ a[1UL] = var1;
+ val4 = *a;
+ return val4;
}
bitmask.bc
--- /dev/fd/63 2022-08-12 10:24:21.589992882 +0000
+++ /dev/fd/62 2022-08-12 10:24:21.589992882 +0000
@@ -3,7 +3,6 @@
unsigned int main() {
unsigned int var0;
unsigned long val1;
- unsigned int val2;
var0 = 0U;
val1 = a;
if ((val1 & 4080UL) >> 4UL != 188UL) {
@@ -11,6 +10,5 @@
} else {
var0 = 0U;
}
- val2 = var0;
- return val2;
+ return var0;
}
binops.bc
--- /dev/fd/63 2022-08-12 10:24:21.801994344 +0000
+++ /dev/fd/62 2022-08-12 10:24:21.801994344 +0000
@@ -4,49 +4,23 @@
unsigned int var0;
unsigned int var1;
unsigned int var2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
- unsigned int val10;
- unsigned int val11;
- unsigned int val12;
- unsigned int val13;
- unsigned int val14;
- unsigned int val15;
var0 = arg0;
- val3 = var0;
- var1 = val3 % 4U;
+ var1 = var0 % 4U;
var2 = 0U;
- val4 = var1;
- if (val4 != 0U) {
- val7 = var1;
- if (val7 != 1U) {
- val10 = var1;
- if (val10 != 2U) {
- val13 = var0;
- val14 = var0;
- var2 = (val13 + 3131756735U) * (5U & val14);
+ if (var1 != 0U) {
+ if (var1 != 1U) {
+ if (var1 != 2U) {
+ var2 = (var0 + 3131756735U) * (5U & var0);
} else {
- val11 = var0;
- val12 = var0;
- var2 = (val11 ^ 3131756735U) * (4U | val12);
+ var2 = (var0 ^ 3131756735U) * (4U | var0);
}
} else {
- val8 = var0;
- val9 = var0;
- var2 = (val8 & 3131756735U) * (3U + val9);
+ var2 = (var0 & 3131756735U) * (3U + var0);
}
} else {
- val5 = var0;
- val6 = var0;
- var2 = (val5 | 3131756735U) * (2U ^ val6);
+ var2 = (var0 | 3131756735U) * (2U ^ var0);
}
- val15 = var2;
- return val15;
+ return var2;
}
unsigned int main() {
unsigned int var0;
float.bc
--- /dev/fd/63 2022-08-12 10:24:22.249997656 +0000
+++ /dev/fd/62 2022-08-12 10:24:22.249997656 +0000
@@ -4,21 +4,15 @@
unsigned int var0;
double var1;
double var2;
- double val3;
- float val4;
- double val5;
- unsigned int val6;
+ float val3;
var0 = 0U;
var1 = 3.1428571428571428;
- val3 = var1;
- val4 = f;
- var2 = val3 - (double)val4;
- val5 = var2;
- if (val5 >= 0.01) {
+ val3 = f;
+ var2 = var1 - (double)val3;
+ if (var2 >= 0.01) {
var0 = 1U;
} else {
var0 = 0U;
}
- val6 = var0;
- return val6;
+ return var0;
}
reg_test_structure_fields.bc
zeroinit.bc
--- /dev/fd/63 2022-08-12 10:24:22.610001870 +0000
+++ /dev/fd/62 2022-08-12 10:24:22.610001870 +0000
@@ -18,7 +18,6 @@
unsigned int var0;
unsigned int val1;
unsigned long val2;
- unsigned int val3;
var0 = 0U;
val1 = r1.field1.field0;
if (val1 == 0U) {
@@ -31,6 +30,5 @@
} else {
var0 = 1U;
}
- val3 = var0;
- return val3;
+ return var0;
}
funcptr.bc
--- /dev/fd/63 2022-08-12 10:24:22.922005522 +0000
+++ /dev/fd/62 2022-08-12 10:24:22.922005522 +0000
@@ -5,31 +5,22 @@
unsigned int add(unsigned int arg0, unsigned int arg1) {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
var0 = arg0;
var1 = arg1;
- val2 = var0;
- val3 = var1;
- return val2 + val3;
+ return var0 + var1;
}
unsigned int sub(unsigned int arg0, unsigned int arg1) {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
var0 = arg0;
var1 = arg1;
- val2 = var0;
- val3 = var1;
- return val2 - val3;
+ return var0 - var1;
}
unsigned int main() {
unsigned int var0;
void *var1;
unsigned int val2;
- void *val3;
- unsigned int call4;
+ unsigned int call3;
var0 = 0U;
val2 = x;
if (val2 == 0U) {
@@ -37,7 +28,6 @@
} else {
var1 = &add;
}
- val3 = var1;
- call4 = ((unsigned int (*)(unsigned int, unsigned int))val3)(2U, 2U);
- return call4;
+ call3 = ((unsigned int (*)(unsigned int, unsigned int))var1)(2U, 2U);
+ return call3;
}
goto_loop.bc
--- /dev/fd/63 2022-08-12 10:24:23.134008004 +0000
+++ /dev/fd/62 2022-08-12 10:24:23.134008004 +0000
@@ -4,41 +4,23 @@
unsigned int main() {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
var0 = 0U;
var1 = 0U;
while (1U)
{
- val2 = var1;
- var1 = val2 + 1U;
- val3 = var1;
- if (val3 == 1U) {
- val4 = var1;
- printf("%d\n", val4);
+ var1 = var1 + 1U;
+ if (var1 == 1U) {
+ printf("%d\n", var1);
+ } else if (var1 != 2U) {
+ break;
} else {
- val5 = var1;
- if (val5 != 2U) {
- break;
- } else {
- val6 = var1;
- printf("%d\n", val6);
- }
+ printf("%d\n", var1);
}
}
- if (val3 != 1U && val5 != 2U) {
- val7 = var1;
- if (val7 == 3U) {
- val8 = var1;
- printf("%d\n", val8);
+ if (var1 != 1U && var1 != 2U) {
+ if (var1 == 3U) {
+ printf("%d\n", var1);
}
- val9 = var0;
- return val9;
+ return var0;
}
}
branch.bc
--- /dev/fd/63 2022-08-12 10:24:23.662014184 +0000
+++ /dev/fd/62 2022-08-12 10:24:23.662014184 +0000
@@ -13,18 +13,15 @@
unsigned long var2;
unsigned int val3;
unsigned int val4;
- unsigned long val5;
- unsigned int val6;
- unsigned long val7;
+ unsigned int val5;
var0 = 0U;
var1 = (unsigned long)(&a);
var2 = (unsigned long)(&c);
val3 = c;
if (val3 == 0U) {
- val6 = c;
- printf("Global variable 'c' of value %u is at ", val6);
- val7 = var2;
- if (val7 % 2UL != 0UL) {
+ val5 = c;
+ printf("Global variable 'c' of value %u is at ", val5);
+ if (var2 % 2UL != 0UL) {
printf("odd ");
} else {
printf("even ");
@@ -32,8 +29,7 @@
} else {
val4 = a;
printf("Global variable 'a' of value %u is at ", val4);
- val5 = var1;
- if (val5 % 2UL != 0UL) {
+ if (var1 % 2UL != 0UL) {
printf("odd ");
} else {
printf("even ");
bitops.bc
--- /dev/fd/63 2022-08-12 10:24:24.142019803 +0000
+++ /dev/fd/62 2022-08-12 10:24:24.142019803 +0000
@@ -10,28 +10,20 @@
unsigned int val5;
unsigned int val6;
unsigned int val7;
- unsigned int val8;
- unsigned int val9;
- unsigned int val10;
- unsigned int val11;
var0 = 0U;
var1 = 0U;
val2 = a;
val3 = b;
if (((int)val2 >> val3 & 1U) != 0U) {
- val4 = var1;
- var1 = val4 + 1U;
+ var1 = var1 + 1U;
}
- val5 = a;
- val6 = b;
- if ((val5 >> val6 ^ 1U) != 0U) {
- val7 = var1;
- var1 = val7 + 2U;
+ val4 = a;
+ val5 = b;
+ if ((val4 >> val5 ^ 1U) != 0U) {
+ var1 = var1 + 2U;
}
- val8 = a;
- val9 = b;
- val10 = var1;
- var1 = val10 + 3U;
- val11 = var1;
- return val11;
+ val6 = a;
+ val7 = b;
+ var1 = var1 + 3U;
+ return var1;
}
vectors.bc
--- /dev/fd/63 2022-08-12 10:24:24.474023689 +0000
+++ /dev/fd/62 2022-08-12 10:24:24.474023689 +0000
@@ -10,43 +10,23 @@
__attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int var5;
__attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int var6;
void *var7;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val8;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val9;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val10;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val11;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val12;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val13;
- void *val14;
- unsigned int val15;
- void *val16;
- unsigned int val17;
- void *val18;
- unsigned int val19;
- void *val20;
- unsigned int val21;
+ unsigned int val8;
+ unsigned int val9;
+ unsigned int val10;
+ unsigned int val11;
var0 = 0U;
var4 = (__attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int){1U, 2U, 3U, 4U};
- val8 = var4;
- var1 = val8;
+ var1 = var4;
var5 = (__attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int){};
- val9 = var5;
- var2 = val9;
+ var2 = var5;
var6 = (__attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int){4U, 3U, 2U, 1U};
- val10 = var6;
- var3 = val10;
- val11 = var1;
- val12 = var2;
- val13 = var3;
- var1 = val11 * val12 + val13;
+ var3 = var6;
+ var1 = var1 * var2 + var3;
var7 = (&var1);
- val14 = var7;
- val15 = *((unsigned int *)val14);
- val16 = var7;
- val17 = ((unsigned int *)val16)[1UL];
- val18 = var7;
- val19 = ((unsigned int *)val18)[2UL];
- val20 = var7;
- val21 = ((unsigned int *)val20)[3UL];
- printf("a=[%d %d %d %d]\n", val15, val17, val19, val21);
+ val8 = *((unsigned int *)var7);
+ val9 = ((unsigned int *)var7)[1UL];
+ val10 = ((unsigned int *)var7)[2UL];
+ val11 = ((unsigned int *)var7)[3UL];
+ printf("a=[%d %d %d %d]\n", val8, val9, val10, val11);
return 0U;
}
issue_4.bc
--- /dev/fd/63 2022-08-12 10:24:24.606025235 +0000
+++ /dev/fd/62 2022-08-12 10:24:24.606025235 +0000
@@ -5,32 +5,17 @@
unsigned int var1;
unsigned int var2;
unsigned int var3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
- unsigned int val10;
var0 = arg0;
var1 = arg1;
var2 = 0U;
var3 = 0U;
- do {
- val4 = var3;
- if (val4 != 42U) {
- val5 = var0;
- val6 = var2;
- var2 = val6 + val5;
- val7 = var1;
- val8 = var2;
- var2 = val8 % val7;
- val9 = var3;
- var3 = val9 + 1U;
+ while (var3 != 42U)
+ {
+ var2 = var2 + var0;
+ var2 = var2 % var1;
+ var3 = var3 + 1U;
}
- } while (val4 != 42U);
- val10 = var2;
- return val10;
+ return var2;
}
unsigned int main() {
unsigned int var0;
conflicting_global.bc
--- /dev/fd/63 2022-08-12 10:24:24.878028419 +0000
+++ /dev/fd/62 2022-08-12 10:24:24.878028419 +0000
@@ -5,11 +5,9 @@
unsigned int main() {
unsigned int var0;
unsigned int val1;
- unsigned int val2;
var0 = 4U;
- val1 = var0;
+ printf("%d\n", var0);
+ val1 = a;
printf("%d\n", val1);
- val2 = a;
- printf("%d\n", val2);
return 0U;
}
issue_123_uint128_t.bc
--- /dev/fd/63 2022-08-12 10:24:25.010029964 +0000
+++ /dev/fd/62 2022-08-12 10:24:25.010029964 +0000
@@ -4,13 +4,11 @@
unsigned int var0;
unsigned __int128 var1;
unsigned long val2;
- unsigned __int128 val3;
- unsigned long val4;
+ unsigned long val3;
var0 = 0U;
val2 = x;
var1 = val2;
- val3 = var1;
- x = val3;
- val4 = x;
- return (unsigned int)(val4 & 255UL);
+ x = var1;
+ val3 = x;
+ return (unsigned int)(val3 & 255UL);
}
fizzbuzz_stateful.bc
--- /dev/fd/63 2022-08-12 10:24:25.142031509 +0000
+++ /dev/fd/62 2022-08-12 10:24:25.142031509 +0000
@@ -14,7 +14,6 @@
unsigned int val4;
unsigned int val5;
unsigned int val6;
- unsigned int val7;
val1 = i;
var0 = val1;
val2 = i;
@@ -34,15 +33,13 @@
printf("%d", val6);
}
}
- val7 = var0;
- i = val7;
+ i = var0;
return;
}
unsigned int main() {
unsigned int var0;
unsigned int val1;
unsigned int val2;
- unsigned int val3;
var0 = 0U;
i = 1U;
do {
@@ -54,6 +51,5 @@
i = val2 + 1U;
}
} while ((int)val1 < 16);
- val3 = var0;
- return val3;
+ return var0;
}
issue_94_strncmp.bc
bool.bc
--- /dev/fd/63 2022-08-12 10:24:26.626048880 +0000
+++ /dev/fd/62 2022-08-12 10:24:26.626048880 +0000
@@ -5,7 +5,6 @@
unsigned int var0;
unsigned long val1;
unsigned long val2;
- unsigned int val3;
var0 = 0U;
val1 = a;
val2 = b;
@@ -14,6 +13,5 @@
} else {
var0 = 0U;
}
- val3 = var0;
- return val3;
+ return var0;
}
global_using_function_decl.bc
fcmp.bc
--- /dev/fd/63 2022-08-12 10:24:26.978053001 +0000
+++ /dev/fd/62 2022-08-12 10:24:26.978053001 +0000
@@ -17,56 +17,18 @@
unsigned int var9;
float call10;
float call11;
- float val12;
- float val13;
- float val14;
- float val15;
- float val16;
- float val17;
- float val18;
- float val19;
- float val20;
- float val21;
- float val22;
- float val23;
- float val24;
- unsigned int val25;
- unsigned int val26;
- unsigned int val27;
- unsigned int val28;
- unsigned int val29;
- unsigned int val30;
var0 = __builtin_nan("");
call10 = atof("3");
var1 = call10;
call11 = atof("2");
var2 = call11;
- val12 = var1;
- var3 = -val12;
- val13 = var3;
- val14 = var0;
- var4 = (val13 > val14);
- val15 = var3;
- val16 = var0;
- var5 = (val15 >= val16);
- val17 = var1;
- val18 = var2;
- var6 = (val17 > val18);
- val19 = var1;
- val20 = var2;
- var7 = (val19 >= val20);
- val21 = var1;
- val22 = var0;
- var8 = __builtin_isunordered(val21, val22);
- val23 = var1;
- val24 = var2;
- var9 = __builtin_isunordered(val23, val24);
- val25 = var4;
- val26 = var5;
- val27 = var6;
- val28 = var7;
- val29 = var8;
- val30 = var9;
- printf("%d %d %d %d %d %d\n", val25, val26, val27, val28, val29, val30);
+ var3 = -var1;
+ var4 = (var3 > var0);
+ var5 = (var3 >= var0);
+ var6 = (var1 > var2);
+ var7 = (var1 >= var2);
+ var8 = __builtin_isunordered(var1, var0);
+ var9 = __builtin_isunordered(var1, var2);
+ printf("%d %d %d %d %d %d\n", var4, var5, var6, var7, var8, var9);
return 0U;
}
byval_struct.bc
--- /dev/fd/63 2022-08-12 10:24:27.110054546 +0000
+++ /dev/fd/62 2022-08-12 10:24:27.110054546 +0000
@@ -31,7 +31,6 @@
unsigned int call5;
unsigned long call6;
unsigned long val7;
- unsigned long val8;
call2 = atoi("1");
var0.field0 = (long)call2;
call3 = atoi("2");
@@ -43,7 +42,6 @@
call6 = get_3x(var0);
var1 = call6;
val7 = var0.field0;
- val8 = var1;
- printf("%lld %lld\n", val7, val8);
+ printf("%lld %lld\n", val7, var1);
return 0U;
}
nested_while.bc
--- /dev/fd/63 2022-08-12 10:24:27.242056091 +0000
+++ /dev/fd/62 2022-08-12 10:24:27.242056091 +0000
@@ -8,40 +8,24 @@
unsigned int var0;
unsigned int var1;
unsigned int call2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
- unsigned int val10;
var0 = 0U;
call2 = atoi("5");
var1 = call2;
- val3 = var1;
- if ((int)val3 > 10) {
- do {
- val4 = var1;
- if ((int)val4 < 20) {
- val5 = var1;
- var1 = val5 + 1U;
- val6 = var1;
- printf("loop1 x: %d\n", val6);
+ if ((int)var1 > 10) {
+ while ((int)var1 < 20)
+ {
+ var1 = var1 + 1U;
+ printf("loop1 x: %d\n", var1);
}
- } while ((int)val4 < 20);
}
- if ((int)val3 <= 10 || (int)val4 >= 20) {
- do {
- val7 = var1;
- if ((int)val7 < 20) {
- val8 = var1;
- var1 = val8 + 1U;
- val9 = var1;
- printf("loop2 x: %d\n", val9);
+ if ((int)var1 <= 10 || (int)var1 >= 20) {
+ while ((int)var1 < 20)
+ {
+ var1 = var1 + 1U;
+ printf("loop2 x: %d\n", var1);
}
- } while ((int)val7 < 20);
- val10 = var0;
- return val10;
+ }
+ if (((int)var1 <= 10 || (int)var1 >= 20) && (int)var1 >= 20) {
+ return var0;
}
}
func_cond_two_arg.bc
--- /dev/fd/63 2022-08-12 10:24:27.838062302 +0000
+++ /dev/fd/62 2022-08-12 10:24:27.842062331 +0000
@@ -5,20 +5,15 @@
unsigned int f(unsigned int arg0, unsigned int arg1) {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
var0 = arg0;
var1 = arg1;
- val2 = var0;
- val3 = var1;
- return (unsigned int)((int)val2 < (int)val3);
+ return (unsigned int)((int)var0 < (int)var1);
}
unsigned int main() {
unsigned int var0;
unsigned int val1;
unsigned int val2;
unsigned int call3;
- unsigned int val4;
var0 = 0U;
val1 = x;
val2 = y;
@@ -28,6 +23,5 @@
} else {
var0 = 1U;
}
- val4 = var0;
- return val4;
+ return var0;
}
zext.bc
inttoptr.bc
--- /dev/fd/63 2022-08-12 10:24:28.186064784 +0000
+++ /dev/fd/62 2022-08-12 10:24:28.186064784 +0000
@@ -4,17 +4,13 @@
unsigned int var0;
void *var1;
unsigned long val2;
- void *val3;
- unsigned int val4;
var0 = 0U;
val2 = a;
var1 = (void *)val2;
- val3 = var1;
- if (val3 == (void *)0U) {
+ if (var1 == (void *)0U) {
var0 = 0U;
} else {
var0 = 42U;
}
- val4 = var0;
- return val4;
+ return var0;
}
assert.bc
--- /dev/fd/63 2022-08-12 10:24:28.398066295 +0000
+++ /dev/fd/62 2022-08-12 10:24:28.398066295 +0000
@@ -17,15 +17,17 @@
__assert_fail("a % 3", "assert.c", 6U, "int main(void)");
} else {
val2 = a;
- if (val2 % 7UL == 0UL) {
- __assert_fail("a % 7", "assert.c", 7U, "int main(void)");
- } else {
- val3 = a;
- if (val3 % 15UL == 0UL) {
- __assert_fail("a % 15", "assert.c", 8U, "int main(void)");
- } else {
- return 0U;
- }
- }
+ }
+ if (val1 % 3UL != 0UL && val2 % 7UL == 0UL) {
+ __assert_fail("a % 7", "assert.c", 7U, "int main(void)");
+ }
+ if (val1 % 3UL != 0UL && val2 % 7UL != 0UL) {
+ val3 = a;
+ }
+ if (val1 % 3UL != 0UL && val2 % 7UL != 0UL && val3 % 15UL == 0UL) {
+ __assert_fail("a % 15", "assert.c", 8U, "int main(void)");
+ }
+ if (val1 % 3UL != 0UL && val2 % 7UL != 0UL && val3 % 15UL != 0UL) {
+ return 0U;
}
}
loop.bc
--- /dev/fd/63 2022-08-12 10:25:23.634522884 +0000
+++ /dev/fd/62 2022-08-12 10:25:23.634522884 +0000
@@ -6,26 +6,17 @@
unsigned int main() {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
var0 = 0U;
var1 = 0U;
- do {
- val2 = var1;
- if (val2 != 10U) {
- val3 = var1;
- printf("Variable at %d is ", val3);
- val4 = var1;
- if (val4 % 2U != 0U) {
+ while (var1 != 10U)
+ {
+ printf("Variable at %d is ", var1);
+ if (var1 % 2U != 0U) {
printf("odd.\n");
} else {
printf("even.\n");
}
- val5 = var1;
- var1 = val5 + 1U;
+ var1 = var1 + 1U;
}
- } while (val2 != 10U);
return 0U;
}
switch.bc
--- /dev/fd/63 2022-08-12 10:25:24.002525695 +0000
+++ /dev/fd/62 2022-08-12 10:25:24.002525695 +0000
@@ -4,7 +4,6 @@
unsigned int var0;
unsigned int var1;
unsigned int val2;
- unsigned int val3;
var0 = 0U;
var1 = 0U;
val2 = a;
@@ -30,6 +29,5 @@
}
break;
}
- val3 = var1;
- return val3;
+ return var1;
}
template_parameter_pack.bc
--- /dev/fd/63 2022-08-12 10:25:24.266527711 +0000
+++ /dev/fd/62 2022-08-12 10:25:24.266527711 +0000
@@ -17,71 +17,43 @@
unsigned int var2;
unsigned int var3;
unsigned int var4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
- unsigned int call10;
+ unsigned int call5;
var0 = arg0;
var1 = arg1;
var2 = arg2;
var3 = arg3;
var4 = arg4;
- val5 = var0;
- val6 = var1;
- val7 = var2;
- val8 = var3;
- val9 = var4;
- call10 = _Z3sumIiJiiiEET_S0_DpT0_(val6, val7, val8, val9);
- return val5 + call10;
+ call5 = _Z3sumIiJiiiEET_S0_DpT0_(var1, var2, var3, var4);
+ return var0 + call5;
}
unsigned int _Z3sumIiJiiiEET_S0_DpT0_(unsigned int arg0, unsigned int arg1, unsigned int arg2, unsigned int arg3) {
unsigned int var0;
unsigned int var1;
unsigned int var2;
unsigned int var3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int call8;
+ unsigned int call4;
var0 = arg0;
var1 = arg1;
var2 = arg2;
var3 = arg3;
- val4 = var0;
- val5 = var1;
- val6 = var2;
- val7 = var3;
- call8 = _Z3sumIiJiiEET_S0_DpT0_(val5, val6, val7);
- return val4 + call8;
+ call4 = _Z3sumIiJiiEET_S0_DpT0_(var1, var2, var3);
+ return var0 + call4;
}
unsigned int _Z3sumIiJiiEET_S0_DpT0_(unsigned int arg0, unsigned int arg1, unsigned int arg2) {
unsigned int var0;
unsigned int var1;
unsigned int var2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int call6;
+ unsigned int call3;
var0 = arg0;
var1 = arg1;
var2 = arg2;
- val3 = var0;
- val4 = var1;
- val5 = var2;
- call6 = _Z3sumIiET_S0_S0_(val4, val5);
- return val3 + call6;
+ call3 = _Z3sumIiET_S0_S0_(var1, var2);
+ return var0 + call3;
}
unsigned int _Z3sumIiET_S0_S0_(unsigned int arg0, unsigned int arg1) {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
var0 = arg0;
var1 = arg1;
- val2 = var0;
- val3 = var1;
- return val2 + val3;
+ return var0 + var1;
}
byval_tail_nogep.ll
byval_tail_gep.ll
See the diff generated by this PR for the tests here: https://github.com/lifting-bits/rellic/actions/runs/2846183969
fizzbuzz.bc
--- /dev/fd/63 2022-08-12 10:57:10.825737400 +0000
+++ /dev/fd/62 2022-08-12 10:57:10.825737400 +0000
@@ -7,46 +7,25 @@
unsigned int main() {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
var0 = 0U;
var1 = 0U;
- do {
- val2 = var1;
- if ((int)val2 < 30) {
- val3 = var1;
- if ((int)val3 % 3 == 0U) {
- val4 = var1;
- if ((int)val4 % 5 == 0U) {
- printf("fizzbuzz\n");
- }
- }
- if ((int)val3 % 3 != 0U || !((int)val3 % 3 != 0U || (int)val4 % 5 == 0U)) {
- val5 = var1;
- if (((int)val3 % 3 != 0U || !((int)val4 % 5 == 0U || (int)val3 % 3 != 0U)) && (int)val5 % 3 != 0U) {
- val6 = var1;
- if ((int)val6 % 5 != 0U) {
- val7 = var1;
- printf("%d\n", val7);
+ while ((int)var1 < 30)
+ {
+ if ((int)var1 % 3 != 0U || !((int)var1 % 3 != 0U || (int)var1 % 5 == 0U)) {
+ if (((int)var1 % 3 != 0U || !((int)var1 % 5 == 0U || (int)var1 % 3 != 0U)) && (int)var1 % 3 != 0U) {
+ if ((int)var1 % 5 != 0U) {
+ printf("%d\n", var1);
} else {
printf("buzz\n");
}
- } else {
- if (((int)val3 % 3 != 0U || !((int)val4 % 5 == 0U || (int)val3 % 3 != 0U)) && (int)val5 % 3 == 0U) {
- printf("fizz\n");
- }
}
+ if (((int)var1 % 3 != 0U || !((int)var1 % 5 == 0U || (int)var1 % 3 != 0U)) && (int)var1 % 3 == 0U) {
+ printf("fizz\n");
+ }
+ } else {
+ printf("fizzbuzz\n");
}
- val8 = var1;
- var1 = val8 + 1U;
+ var1 = var1 + 1U;
}
- } while ((int)val2 < 30);
- val9 = var0;
- return val9;
+ return var0;
}
typedefs_of_typedefs.bc
--- /dev/fd/63 2022-08-12 10:57:11.513737441 +0000
+++ /dev/fd/62 2022-08-12 10:57:11.513737441 +0000
@@ -12,44 +12,28 @@
__attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long var5;
__attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long var6;
void *var7;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val8;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val9;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val10;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val11;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val12;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val13;
- void *val14;
- unsigned int val15;
- void *val16;
- unsigned int val17;
- unsigned long val18;
- unsigned long val19;
- unsigned long val20;
- unsigned long val21;
+ unsigned int val8;
+ unsigned int val9;
+ unsigned long val10;
+ unsigned long val11;
+ unsigned long val12;
+ unsigned long val13;
var0 = 0U;
var4 = (__attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long){1UL, 2UL};
- val8 = var4;
- var1 = val8;
+ var1 = var4;
var5 = (__attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long){};
- val9 = var5;
- var2 = val9;
+ var2 = var5;
var6 = (__attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long){4UL, 3UL};
- val10 = var6;
- var3 = val10;
- val11 = var1;
- val12 = var2;
- val13 = var3;
- var1 = val11 * val12 + val13;
+ var3 = var6;
+ var1 = var1 * var2 + var3;
var7 = (&var1);
- val14 = var7;
- val15 = *((unsigned int *)val14);
- val16 = var7;
- val17 = ((unsigned int *)val16)[1UL];
- printf("a=[%d %d]\n", val15, val17);
- val18 = *array;
- val19 = array[1UL];
- val20 = array[2UL];
- val21 = array[3UL];
- printf("array=[%lld %lld %lld %lld]\n", val18, val19, val20, val21);
+ val8 = *((unsigned int *)var7);
+ val9 = ((unsigned int *)var7)[1UL];
+ printf("a=[%d %d]\n", val8, val9);
+ val10 = *array;
+ val11 = array[1UL];
+ val12 = array[2UL];
+ val13 = array[3UL];
+ printf("array=[%lld %lld %lld %lld]\n", val10, val11, val12, val13);
return 0U;
}
switch_loop.bc
--- /dev/fd/63 2022-08-12 10:57:11.677737451 +0000
+++ /dev/fd/62 2022-08-12 10:57:11.677737451 +0000
@@ -4,36 +4,26 @@
unsigned int main() {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
var0 = 0U;
var1 = 0U;
- do {
- val2 = var1;
- var1 = val2 + 1U;
- val3 = var1;
- if (!(val3 != 1U && val3 != 2U && val3 != 3U)) {
- if (val3 == 3U) {
- val6 = var1;
- printf("%d\n", val6);
+ while (1U)
+ {
+ var1 = var1 + 1U;
+ if (var1 != 1U && var1 != 2U && var1 != 3U) {
break;
}
- if (val3 == 2U) {
- val5 = var1;
- printf("%d\n", val5);
+ if (var1 == 3U) {
+ printf("%d\n", var1);
+ break;
+ }
+ if (var1 == 2U) {
+ printf("%d\n", var1);
}
- if (val3 == 1U) {
- val4 = var1;
- printf("%d\n", val4);
+ if (var1 == 1U) {
+ printf("%d\n", var1);
}
}
- } while (!(val3 != 1U && val3 != 2U && val3 != 3U));
- if (val3 == 3U || !(val3 == 2U || val3 == 3U || val3 == 1U)) {
- val7 = var0;
- return val7;
+ if (var1 == 3U || !(var1 == 2U || var1 == 3U || var1 == 1U)) {
+ return var0;
}
}
func_cond_zero_arg.bc
--- /dev/fd/63 2022-08-12 10:57:12.093737476 +0000
+++ /dev/fd/62 2022-08-12 10:57:12.093737476 +0000
@@ -8,7 +8,6 @@
unsigned int main() {
unsigned int var0;
unsigned int call1;
- unsigned int val2;
var0 = 0U;
call1 = f();
if (call1 == 0U) {
@@ -16,6 +15,5 @@
} else {
var0 = 1U;
}
- val2 = var0;
- return val2;
+ return var0;
}
conflicting_names.bc
--- /dev/fd/63 2022-08-12 10:57:12.285737500 +0000
+++ /dev/fd/62 2022-08-12 10:57:12.285737500 +0000
@@ -4,17 +4,13 @@
unsigned int atoi(void *arg0);
unsigned int foo() {
unsigned int var0;
- unsigned int val1;
var0 = 0U;
- val1 = var0;
- return val1;
+ return var0;
}
unsigned int bar() {
unsigned int var0;
- unsigned int val1;
var0 = 1U;
- val1 = var0;
- return val1;
+ return var0;
}
unsigned int main() {
unsigned int var0;
@@ -24,35 +20,23 @@
unsigned int var4;
unsigned int var5;
unsigned int var6;
- unsigned int val7;
- void *val8;
- void *val9;
- unsigned int call10;
- unsigned int val11;
- unsigned int val12;
- unsigned int val13;
- unsigned int val14;
+ void *val7;
+ unsigned int call8;
var0 = 0U;
var1 = 0U;
var2 = (void *)0U;
var3 = 0U;
- val7 = var1;
- if (1 >= (int)val7) {
+ if (1 >= (int)var1) {
var6 = 1U;
- val13 = var6;
- var3 = val13;
+ var3 = var6;
} else {
- val8 = var2;
- val9 = ((void **)val8)[1UL];
- call10 = atoi(val9);
- var4 = call10;
- val11 = var4;
- if ((int)val11 > 10) {
+ val7 = ((void **)var2)[1UL];
+ call8 = atoi(val7);
+ var4 = call8;
+ if ((int)var4 > 10) {
var5 = 99U;
- val12 = var5;
- var3 = val12;
+ var3 = var5;
}
}
- val14 = var3;
- return val14;
+ return var3;
}
struct.bc
--- /dev/fd/63 2022-08-12 10:57:12.525737532 +0000
+++ /dev/fd/62 2022-08-12 10:57:12.525737532 +0000
@@ -9,7 +9,6 @@
unsigned int val1;
unsigned int val2;
unsigned int val3;
- unsigned int val4;
var0 = 0U;
val1 = a.field0;
if (val1 == 0U) {
@@ -19,6 +18,5 @@
val2 = a.field0;
var0 = val2;
}
- val4 = var0;
- return val4;
+ return var0;
}
issue_183_literal_structs.bc
issue_127_uint128_t_lit.bc
struct_swap.bc
--- /dev/fd/63 2022-08-12 10:57:12.985737592 +0000
+++ /dev/fd/62 2022-08-12 10:57:12.985737592 +0000
@@ -10,14 +10,12 @@
unsigned int val2;
unsigned int val3;
unsigned int val4;
- unsigned int val5;
var0 = 0U;
val2 = a.field0;
var1 = val2;
val3 = a.field1;
a.field0 = val3;
- val4 = var1;
- a.field1 = val4;
- val5 = a.field0;
- return val5;
+ a.field1 = var1;
+ val4 = a.field0;
+ return val4;
}
init_list.bc
ret0.bc
trunc.bc
short.bc
--- /dev/fd/63 2022-08-12 10:57:13.497737659 +0000
+++ /dev/fd/62 2022-08-12 10:57:13.497737659 +0000
@@ -4,11 +4,9 @@
unsigned int var0;
unsigned short var1;
unsigned short val2;
- unsigned short val3;
var0 = 0U;
a = 13U;
val2 = a;
var1 = val2;
- val3 = var1;
- return (unsigned int)val3;
+ return (unsigned int)var1;
}
cast.bc
nullptr.bc
--- /dev/fd/63 2022-08-12 10:57:13.753737693 +0000
+++ /dev/fd/62 2022-08-12 10:57:13.753737693 +0000
@@ -3,7 +3,6 @@
unsigned int main() {
unsigned int var0;
void *val1;
- unsigned int val2;
var0 = 0U;
val1 = ptr;
if (val1 != (void *)0U) {
@@ -11,6 +10,5 @@
} else {
var0 = 0U;
}
- val2 = var0;
- return val2;
+ return var0;
}
nested_struct.bc
array_swap.bc
--- /dev/fd/63 2022-08-12 10:57:14.077737735 +0000
+++ /dev/fd/62 2022-08-12 10:57:14.077737735 +0000
@@ -6,14 +6,12 @@
unsigned int val2;
unsigned int val3;
unsigned int val4;
- unsigned int val5;
var0 = 0U;
val2 = *a;
var1 = val2;
val3 = a[1UL];
*a = val3;
- val4 = var1;
- a[1UL] = val4;
- val5 = *a;
- return val5;
+ a[1UL] = var1;
+ val4 = *a;
+ return val4;
}
bitmask.bc
--- /dev/fd/63 2022-08-12 10:57:14.201737752 +0000
+++ /dev/fd/62 2022-08-12 10:57:14.205737752 +0000
@@ -3,7 +3,6 @@
unsigned int main() {
unsigned int var0;
unsigned long val1;
- unsigned int val2;
var0 = 0U;
val1 = a;
if ((val1 & 4080UL) >> 4UL != 188UL) {
@@ -11,6 +10,5 @@
} else {
var0 = 0U;
}
- val2 = var0;
- return val2;
+ return var0;
}
binops.bc
--- /dev/fd/63 2022-08-12 10:57:14.397737777 +0000
+++ /dev/fd/62 2022-08-12 10:57:14.397737777 +0000
@@ -4,49 +4,23 @@
unsigned int var0;
unsigned int var1;
unsigned int var2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
- unsigned int val10;
- unsigned int val11;
- unsigned int val12;
- unsigned int val13;
- unsigned int val14;
- unsigned int val15;
var0 = arg0;
- val3 = var0;
- var1 = val3 % 4U;
+ var1 = var0 % 4U;
var2 = 0U;
- val4 = var1;
- if (val4 != 0U) {
- val7 = var1;
- if (val7 != 1U) {
- val10 = var1;
- if (val10 != 2U) {
- val13 = var0;
- val14 = var0;
- var2 = (val13 + 3131756735U) * (5U & val14);
+ if (var1 != 0U) {
+ if (var1 != 1U) {
+ if (var1 != 2U) {
+ var2 = (var0 + 3131756735U) * (5U & var0);
} else {
- val11 = var0;
- val12 = var0;
- var2 = (val11 ^ 3131756735U) * (4U | val12);
+ var2 = (var0 ^ 3131756735U) * (4U | var0);
}
} else {
- val8 = var0;
- val9 = var0;
- var2 = (val8 & 3131756735U) * (3U + val9);
+ var2 = (var0 & 3131756735U) * (3U + var0);
}
} else {
- val5 = var0;
- val6 = var0;
- var2 = (val5 | 3131756735U) * (2U ^ val6);
+ var2 = (var0 | 3131756735U) * (2U ^ var0);
}
- val15 = var2;
- return val15;
+ return var2;
}
unsigned int main() {
unsigned int var0;
float.bc
--- /dev/fd/63 2022-08-12 10:57:14.717737820 +0000
+++ /dev/fd/62 2022-08-12 10:57:14.717737820 +0000
@@ -4,21 +4,15 @@
unsigned int var0;
double var1;
double var2;
- double val3;
- float val4;
- double val5;
- unsigned int val6;
+ float val3;
var0 = 0U;
var1 = 3.1428571428571428;
- val3 = var1;
- val4 = f;
- var2 = val3 - (double)val4;
- val5 = var2;
- if (val5 >= 0.01) {
+ val3 = f;
+ var2 = var1 - (double)val3;
+ if (var2 >= 0.01) {
var0 = 1U;
} else {
var0 = 0U;
}
- val6 = var0;
- return val6;
+ return var0;
}
reg_test_structure_fields.bc
zeroinit.bc
--- /dev/fd/63 2022-08-12 10:57:15.037737862 +0000
+++ /dev/fd/62 2022-08-12 10:57:15.037737862 +0000
@@ -18,7 +18,6 @@
unsigned int var0;
unsigned int val1;
unsigned long val2;
- unsigned int val3;
var0 = 0U;
val1 = r1.field1.field0;
if (val1 == 0U) {
@@ -31,6 +30,5 @@
} else {
var0 = 1U;
}
- val3 = var0;
- return val3;
+ return var0;
}
funcptr.bc
--- /dev/fd/63 2022-08-12 10:57:15.281737894 +0000
+++ /dev/fd/62 2022-08-12 10:57:15.281737894 +0000
@@ -5,31 +5,22 @@
unsigned int add(unsigned int arg0, unsigned int arg1) {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
var0 = arg0;
var1 = arg1;
- val2 = var0;
- val3 = var1;
- return val2 + val3;
+ return var0 + var1;
}
unsigned int sub(unsigned int arg0, unsigned int arg1) {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
var0 = arg0;
var1 = arg1;
- val2 = var0;
- val3 = var1;
- return val2 - val3;
+ return var0 - var1;
}
unsigned int main() {
unsigned int var0;
void *var1;
unsigned int val2;
- void *val3;
- unsigned int call4;
+ unsigned int call3;
var0 = 0U;
val2 = x;
if (val2 == 0U) {
@@ -37,7 +28,6 @@
} else {
var1 = &add;
}
- val3 = var1;
- call4 = ((unsigned int (*)(unsigned int, unsigned int))val3)(2U, 2U);
- return call4;
+ call3 = ((unsigned int (*)(unsigned int, unsigned int))var1)(2U, 2U);
+ return call3;
}
goto_loop.bc
--- /dev/fd/63 2022-08-12 10:57:15.473737919 +0000
+++ /dev/fd/62 2022-08-12 10:57:15.473737919 +0000
@@ -4,41 +4,23 @@
unsigned int main() {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
var0 = 0U;
var1 = 0U;
while (1U)
{
- val2 = var1;
- var1 = val2 + 1U;
- val3 = var1;
- if (val3 == 1U) {
- val4 = var1;
- printf("%d\n", val4);
+ var1 = var1 + 1U;
+ if (var1 == 1U) {
+ printf("%d\n", var1);
+ } else if (var1 != 2U) {
+ break;
} else {
- val5 = var1;
- if (val5 != 2U) {
- break;
- } else {
- val6 = var1;
- printf("%d\n", val6);
- }
+ printf("%d\n", var1);
}
}
- if (val3 != 1U && val5 != 2U) {
- val7 = var1;
- if (val7 == 3U) {
- val8 = var1;
- printf("%d\n", val8);
+ if (var1 != 1U && var1 != 2U) {
+ if (var1 == 3U) {
+ printf("%d\n", var1);
}
- val9 = var0;
- return val9;
+ return var0;
}
}
branch.bc
--- /dev/fd/63 2022-08-12 10:57:15.841737967 +0000
+++ /dev/fd/62 2022-08-12 10:57:15.841737967 +0000
@@ -13,18 +13,15 @@
unsigned long var2;
unsigned int val3;
unsigned int val4;
- unsigned long val5;
- unsigned int val6;
- unsigned long val7;
+ unsigned int val5;
var0 = 0U;
var1 = (unsigned long)(&a);
var2 = (unsigned long)(&c);
val3 = c;
if (val3 == 0U) {
- val6 = c;
- printf("Global variable 'c' of value %u is at ", val6);
- val7 = var2;
- if (val7 % 2UL != 0UL) {
+ val5 = c;
+ printf("Global variable 'c' of value %u is at ", val5);
+ if (var2 % 2UL != 0UL) {
printf("odd ");
} else {
printf("even ");
@@ -32,8 +29,7 @@
} else {
val4 = a;
printf("Global variable 'a' of value %u is at ", val4);
- val5 = var1;
- if (val5 % 2UL != 0UL) {
+ if (var1 % 2UL != 0UL) {
printf("odd ");
} else {
printf("even ");
bitops.bc
--- /dev/fd/63 2022-08-12 10:57:16.153738008 +0000
+++ /dev/fd/62 2022-08-12 10:57:16.153738008 +0000
@@ -10,28 +10,20 @@
unsigned int val5;
unsigned int val6;
unsigned int val7;
- unsigned int val8;
- unsigned int val9;
- unsigned int val10;
- unsigned int val11;
var0 = 0U;
var1 = 0U;
val2 = a;
val3 = b;
if (((int)val2 >> val3 & 1U) != 0U) {
- val4 = var1;
- var1 = val4 + 1U;
+ var1 = var1 + 1U;
}
- val5 = a;
- val6 = b;
- if ((val5 >> val6 ^ 1U) != 0U) {
- val7 = var1;
- var1 = val7 + 2U;
+ val4 = a;
+ val5 = b;
+ if ((val4 >> val5 ^ 1U) != 0U) {
+ var1 = var1 + 2U;
}
- val8 = a;
- val9 = b;
- val10 = var1;
- var1 = val10 + 3U;
- val11 = var1;
- return val11;
+ val6 = a;
+ val7 = b;
+ var1 = var1 + 3U;
+ return var1;
}
vectors.bc
--- /dev/fd/63 2022-08-12 10:57:16.413738042 +0000
+++ /dev/fd/62 2022-08-12 10:57:16.413738042 +0000
@@ -10,43 +10,23 @@
__attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int var5;
__attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int var6;
void *var7;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val8;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val9;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val10;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val11;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val12;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val13;
- void *val14;
- unsigned int val15;
- void *val16;
- unsigned int val17;
- void *val18;
- unsigned int val19;
- void *val20;
- unsigned int val21;
+ unsigned int val8;
+ unsigned int val9;
+ unsigned int val10;
+ unsigned int val11;
var0 = 0U;
var4 = (__attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int){1U, 2U, 3U, 4U};
- val8 = var4;
- var1 = val8;
+ var1 = var4;
var5 = (__attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int){};
- val9 = var5;
- var2 = val9;
+ var2 = var5;
var6 = (__attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int){4U, 3U, 2U, 1U};
- val10 = var6;
- var3 = val10;
- val11 = var1;
- val12 = var2;
- val13 = var3;
- var1 = val11 * val12 + val13;
+ var3 = var6;
+ var1 = var1 * var2 + var3;
var7 = (&var1);
- val14 = var7;
- val15 = *((unsigned int *)val14);
- val16 = var7;
- val17 = ((unsigned int *)val16)[1UL];
- val18 = var7;
- val19 = ((unsigned int *)val18)[2UL];
- val20 = var7;
- val21 = ((unsigned int *)val20)[3UL];
- printf("a=[%d %d %d %d]\n", val15, val17, val19, val21);
+ val8 = *((unsigned int *)var7);
+ val9 = ((unsigned int *)var7)[1UL];
+ val10 = ((unsigned int *)var7)[2UL];
+ val11 = ((unsigned int *)var7)[3UL];
+ printf("a=[%d %d %d %d]\n", val8, val9, val10, val11);
return 0U;
}
issue_4.bc
--- /dev/fd/63 2022-08-12 10:57:16.541738059 +0000
+++ /dev/fd/62 2022-08-12 10:57:16.541738059 +0000
@@ -5,32 +5,17 @@
unsigned int var1;
unsigned int var2;
unsigned int var3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
- unsigned int val10;
var0 = arg0;
var1 = arg1;
var2 = 0U;
var3 = 0U;
- do {
- val4 = var3;
- if (val4 != 42U) {
- val5 = var0;
- val6 = var2;
- var2 = val6 + val5;
- val7 = var1;
- val8 = var2;
- var2 = val8 % val7;
- val9 = var3;
- var3 = val9 + 1U;
+ while (var3 != 42U)
+ {
+ var2 = var2 + var0;
+ var2 = var2 % var1;
+ var3 = var3 + 1U;
}
- } while (val4 != 42U);
- val10 = var2;
- return val10;
+ return var2;
}
unsigned int main() {
unsigned int var0;
conflicting_global.bc
--- /dev/fd/63 2022-08-12 10:57:16.757738088 +0000
+++ /dev/fd/62 2022-08-12 10:57:16.757738088 +0000
@@ -5,11 +5,9 @@
unsigned int main() {
unsigned int var0;
unsigned int val1;
- unsigned int val2;
var0 = 4U;
- val1 = var0;
+ printf("%d\n", var0);
+ val1 = a;
printf("%d\n", val1);
- val2 = a;
- printf("%d\n", val2);
return 0U;
}
issue_123_uint128_t.bc
--- /dev/fd/63 2022-08-12 10:57:16.889738105 +0000
+++ /dev/fd/62 2022-08-12 10:57:16.889738105 +0000
@@ -4,13 +4,11 @@
unsigned int var0;
unsigned __int128 var1;
unsigned long val2;
- unsigned __int128 val3;
- unsigned long val4;
+ unsigned long val3;
var0 = 0U;
val2 = x;
var1 = val2;
- val3 = var1;
- x = val3;
- val4 = x;
- return (unsigned int)(val4 & 255UL);
+ x = var1;
+ val3 = x;
+ return (unsigned int)(val3 & 255UL);
}
fizzbuzz_stateful.bc
--- /dev/fd/63 2022-08-12 10:57:17.017738122 +0000
+++ /dev/fd/62 2022-08-12 10:57:17.017738122 +0000
@@ -14,7 +14,6 @@
unsigned int val4;
unsigned int val5;
unsigned int val6;
- unsigned int val7;
val1 = i;
var0 = val1;
val2 = i;
@@ -34,15 +33,13 @@
printf("%d", val6);
}
}
- val7 = var0;
- i = val7;
+ i = var0;
return;
}
unsigned int main() {
unsigned int var0;
unsigned int val1;
unsigned int val2;
- unsigned int val3;
var0 = 0U;
i = 1U;
do {
@@ -54,6 +51,5 @@
i = val2 + 1U;
}
} while ((int)val1 < 16);
- val3 = var0;
- return val3;
+ return var0;
}
issue_94_strncmp.bc
bool.bc
--- /dev/fd/63 2022-08-12 10:57:17.653738205 +0000
+++ /dev/fd/62 2022-08-12 10:57:17.657738206 +0000
@@ -5,7 +5,6 @@
unsigned int var0;
unsigned long val1;
unsigned long val2;
- unsigned int val3;
var0 = 0U;
val1 = a;
val2 = b;
@@ -14,6 +13,5 @@
} else {
var0 = 0U;
}
- val3 = var0;
- return val3;
+ return var0;
}
global_using_function_decl.bc
fcmp.bc
--- /dev/fd/63 2022-08-12 10:57:17.977738248 +0000
+++ /dev/fd/62 2022-08-12 10:57:17.977738248 +0000
@@ -17,56 +17,18 @@
unsigned int var9;
float call10;
float call11;
- float val12;
- float val13;
- float val14;
- float val15;
- float val16;
- float val17;
- float val18;
- float val19;
- float val20;
- float val21;
- float val22;
- float val23;
- float val24;
- unsigned int val25;
- unsigned int val26;
- unsigned int val27;
- unsigned int val28;
- unsigned int val29;
- unsigned int val30;
var0 = __builtin_nan("");
call10 = atof("3");
var1 = call10;
call11 = atof("2");
var2 = call11;
- val12 = var1;
- var3 = -val12;
- val13 = var3;
- val14 = var0;
- var4 = (val13 > val14);
- val15 = var3;
- val16 = var0;
- var5 = (val15 >= val16);
- val17 = var1;
- val18 = var2;
- var6 = (val17 > val18);
- val19 = var1;
- val20 = var2;
- var7 = (val19 >= val20);
- val21 = var1;
- val22 = var0;
- var8 = __builtin_isunordered(val21, val22);
- val23 = var1;
- val24 = var2;
- var9 = __builtin_isunordered(val23, val24);
- val25 = var4;
- val26 = var5;
- val27 = var6;
- val28 = var7;
- val29 = var8;
- val30 = var9;
- printf("%d %d %d %d %d %d\n", val25, val26, val27, val28, val29, val30);
+ var3 = -var1;
+ var4 = (var3 > var0);
+ var5 = (var3 >= var0);
+ var6 = (var1 > var2);
+ var7 = (var1 >= var2);
+ var8 = __builtin_isunordered(var1, var0);
+ var9 = __builtin_isunordered(var1, var2);
+ printf("%d %d %d %d %d %d\n", var4, var5, var6, var7, var8, var9);
return 0U;
}
byval_struct.bc
--- /dev/fd/63 2022-08-12 10:57:18.105738265 +0000
+++ /dev/fd/62 2022-08-12 10:57:18.109738265 +0000
@@ -31,7 +31,6 @@
unsigned int call5;
unsigned long call6;
unsigned long val7;
- unsigned long val8;
call2 = atoi("1");
var0.field0 = (long)call2;
call3 = atoi("2");
@@ -43,7 +42,6 @@
call6 = get_3x(var0);
var1 = call6;
val7 = var0.field0;
- val8 = var1;
- printf("%lld %lld\n", val7, val8);
+ printf("%lld %lld\n", val7, var1);
return 0U;
}
nested_while.bc
--- /dev/fd/63 2022-08-12 10:57:18.237738282 +0000
+++ /dev/fd/62 2022-08-12 10:57:18.237738282 +0000
@@ -8,40 +8,24 @@
unsigned int var0;
unsigned int var1;
unsigned int call2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
- unsigned int val10;
var0 = 0U;
call2 = atoi("5");
var1 = call2;
- val3 = var1;
- if ((int)val3 > 10) {
- do {
- val4 = var1;
- if ((int)val4 < 20) {
- val5 = var1;
- var1 = val5 + 1U;
- val6 = var1;
- printf("loop1 x: %d\n", val6);
+ if ((int)var1 > 10) {
+ while ((int)var1 < 20)
+ {
+ var1 = var1 + 1U;
+ printf("loop1 x: %d\n", var1);
}
- } while ((int)val4 < 20);
}
- if ((int)val3 <= 10 || (int)val4 >= 20) {
- do {
- val7 = var1;
- if ((int)val7 < 20) {
- val8 = var1;
- var1 = val8 + 1U;
- val9 = var1;
- printf("loop2 x: %d\n", val9);
+ if ((int)var1 >= 20 || (int)var1 <= 10) {
+ while ((int)var1 < 20)
+ {
+ var1 = var1 + 1U;
+ printf("loop2 x: %d\n", var1);
}
- } while ((int)val7 < 20);
- val10 = var0;
- return val10;
+ }
+ if (((int)var1 >= 20 || (int)var1 <= 10) && (int)var1 >= 20) {
+ return var0;
}
}
func_cond_two_arg.bc
--- /dev/fd/63 2022-08-12 10:57:18.625738333 +0000
+++ /dev/fd/62 2022-08-12 10:57:18.625738333 +0000
@@ -5,20 +5,15 @@
unsigned int f(unsigned int arg0, unsigned int arg1) {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
var0 = arg0;
var1 = arg1;
- val2 = var0;
- val3 = var1;
- return (unsigned int)((int)val2 < (int)val3);
+ return (unsigned int)((int)var0 < (int)var1);
}
unsigned int main() {
unsigned int var0;
unsigned int val1;
unsigned int val2;
unsigned int call3;
- unsigned int val4;
var0 = 0U;
val1 = x;
val2 = y;
@@ -28,6 +23,5 @@
} else {
var0 = 1U;
}
- val4 = var0;
- return val4;
+ return var0;
}
zext.bc
inttoptr.bc
--- /dev/fd/63 2022-08-12 10:57:18.953738376 +0000
+++ /dev/fd/62 2022-08-12 10:57:18.953738376 +0000
@@ -4,17 +4,13 @@
unsigned int var0;
void *var1;
unsigned long val2;
- void *val3;
- unsigned int val4;
var0 = 0U;
val2 = a;
var1 = (void *)val2;
- val3 = var1;
- if (val3 == (void *)0U) {
+ if (var1 == (void *)0U) {
var0 = 0U;
} else {
var0 = 42U;
}
- val4 = var0;
- return val4;
+ return var0;
}
assert.bc
--- /dev/fd/63 2022-08-12 10:57:19.145738401 +0000
+++ /dev/fd/62 2022-08-12 10:57:19.145738401 +0000
@@ -17,15 +17,17 @@
__assert_fail("a % 3", "assert.c", 6U, "int main(void)");
} else {
val2 = a;
- if (val2 % 7UL == 0UL) {
- __assert_fail("a % 7", "assert.c", 7U, "int main(void)");
- } else {
- val3 = a;
- if (val3 % 15UL == 0UL) {
- __assert_fail("a % 15", "assert.c", 8U, "int main(void)");
- } else {
- return 0U;
- }
- }
+ }
+ if (val1 % 3UL != 0UL && val2 % 7UL == 0UL) {
+ __assert_fail("a % 7", "assert.c", 7U, "int main(void)");
+ }
+ if (val1 % 3UL != 0UL && val2 % 7UL != 0UL) {
+ val3 = a;
+ }
+ if (val1 % 3UL != 0UL && val2 % 7UL != 0UL && val3 % 15UL == 0UL) {
+ __assert_fail("a % 15", "assert.c", 8U, "int main(void)");
+ }
+ if (val1 % 3UL != 0UL && val2 % 7UL != 0UL && val3 % 15UL != 0UL) {
+ return 0U;
}
}
loop.bc
--- /dev/fd/63 2022-08-12 10:57:19.501738448 +0000
+++ /dev/fd/62 2022-08-12 10:57:19.501738448 +0000
@@ -6,26 +6,17 @@
unsigned int main() {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
var0 = 0U;
var1 = 0U;
- do {
- val2 = var1;
- if (val2 != 10U) {
- val3 = var1;
- printf("Variable at %d is ", val3);
- val4 = var1;
- if (val4 % 2U != 0U) {
+ while (var1 != 10U)
+ {
+ printf("Variable at %d is ", var1);
+ if (var1 % 2U != 0U) {
printf("odd.\n");
} else {
printf("even.\n");
}
- val5 = var1;
- var1 = val5 + 1U;
+ var1 = var1 + 1U;
}
- } while (val2 != 10U);
return 0U;
}
switch.bc
--- /dev/fd/63 2022-08-12 10:57:19.777738484 +0000
+++ /dev/fd/62 2022-08-12 10:57:19.777738484 +0000
@@ -4,7 +4,6 @@
unsigned int var0;
unsigned int var1;
unsigned int val2;
- unsigned int val3;
var0 = 0U;
var1 = 0U;
val2 = a;
@@ -30,6 +29,5 @@
}
break;
}
- val3 = var1;
- return val3;
+ return var1;
}
template_parameter_pack.bc
--- /dev/fd/63 2022-08-12 10:57:20.001738514 +0000
+++ /dev/fd/62 2022-08-12 10:57:20.001738514 +0000
@@ -17,71 +17,43 @@
unsigned int var2;
unsigned int var3;
unsigned int var4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
- unsigned int call10;
+ unsigned int call5;
var0 = arg0;
var1 = arg1;
var2 = arg2;
var3 = arg3;
var4 = arg4;
- val5 = var0;
- val6 = var1;
- val7 = var2;
- val8 = var3;
- val9 = var4;
- call10 = _Z3sumIiJiiiEET_S0_DpT0_(val6, val7, val8, val9);
- return val5 + call10;
+ call5 = _Z3sumIiJiiiEET_S0_DpT0_(var1, var2, var3, var4);
+ return var0 + call5;
}
unsigned int _Z3sumIiJiiiEET_S0_DpT0_(unsigned int arg0, unsigned int arg1, unsigned int arg2, unsigned int arg3) {
unsigned int var0;
unsigned int var1;
unsigned int var2;
unsigned int var3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int call8;
+ unsigned int call4;
var0 = arg0;
var1 = arg1;
var2 = arg2;
var3 = arg3;
- val4 = var0;
- val5 = var1;
- val6 = var2;
- val7 = var3;
- call8 = _Z3sumIiJiiEET_S0_DpT0_(val5, val6, val7);
- return val4 + call8;
+ call4 = _Z3sumIiJiiEET_S0_DpT0_(var1, var2, var3);
+ return var0 + call4;
}
unsigned int _Z3sumIiJiiEET_S0_DpT0_(unsigned int arg0, unsigned int arg1, unsigned int arg2) {
unsigned int var0;
unsigned int var1;
unsigned int var2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int call6;
+ unsigned int call3;
var0 = arg0;
var1 = arg1;
var2 = arg2;
- val3 = var0;
- val4 = var1;
- val5 = var2;
- call6 = _Z3sumIiET_S0_S0_(val4, val5);
- return val3 + call6;
+ call3 = _Z3sumIiET_S0_S0_(var1, var2);
+ return var0 + call3;
}
unsigned int _Z3sumIiET_S0_S0_(unsigned int arg0, unsigned int arg1) {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
var0 = arg0;
var1 = arg1;
- val2 = var0;
- val3 = var1;
- return val2 + val3;
+ return var0 + var1;
}
byval_tail_nogep.ll
byval_tail_gep.ll
For some reason Z3 is not able to recognize the cascading conditions in switch_loop
without the context aware simplifier, but that is too slow to use in that place.
LGTM. Can I ask you to make an issue for the CBR investigation I mentioned above? So that it's not forgotten.
See the diff generated by this PR for the tests here: https://github.com/lifting-bits/rellic/actions/runs/2847400621
fizzbuzz.bc
--- /dev/fd/63 2022-08-12 14:45:07.113272859 +0000
+++ /dev/fd/62 2022-08-12 14:45:07.113272859 +0000
@@ -7,44 +7,24 @@
unsigned int main() {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
var0 = 0U;
var1 = 0U;
- do {
- val2 = var1;
- if ((int)val2 < 30) {
- val3 = var1;
- if ((int)val3 % 3 == 0U) {
- val4 = var1;
- if ((int)val4 % 5 == 0U) {
- printf("fizzbuzz\n");
- }
- }
- if ((int)val3 % 3 != 0U || !((int)val4 % 5 == 0U || (int)val3 % 3 != 0U)) {
- val5 = var1;
- if ((int)val5 % 3 != 0U) {
- val6 = var1;
- if ((int)val6 % 5 != 0U) {
- val7 = var1;
- printf("%d\n", val7);
+ while ((int)var1 < 30)
+ {
+ if ((int)var1 % 3 != 0U || !((int)var1 % 5 == 0U || (int)var1 % 3 != 0U)) {
+ if ((int)var1 % 3 != 0U) {
+ if ((int)var1 % 5 != 0U) {
+ printf("%d\n", var1);
} else {
printf("buzz\n");
}
} else {
printf("fizz\n");
}
+ } else {
+ printf("fizzbuzz\n");
}
- val8 = var1;
- var1 = val8 + 1U;
+ var1 = var1 + 1U;
}
- } while ((int)val2 < 30);
- val9 = var0;
- return val9;
+ return var0;
}
typedefs_of_typedefs.bc
--- /dev/fd/63 2022-08-12 14:45:07.649271723 +0000
+++ /dev/fd/62 2022-08-12 14:45:07.649271723 +0000
@@ -12,44 +12,28 @@
__attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long var5;
__attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long var6;
void *var7;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val8;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val9;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val10;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val11;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val12;
- __attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long val13;
- void *val14;
- unsigned int val15;
- void *val16;
- unsigned int val17;
- unsigned long val18;
- unsigned long val19;
- unsigned long val20;
- unsigned long val21;
+ unsigned int val8;
+ unsigned int val9;
+ unsigned long val10;
+ unsigned long val11;
+ unsigned long val12;
+ unsigned long val13;
var0 = 0U;
var4 = (__attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long){1UL, 2UL};
- val8 = var4;
- var1 = val8;
+ var1 = var4;
var5 = (__attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long){};
- val9 = var5;
- var2 = val9;
+ var2 = var5;
var6 = (__attribute__((__vector_size__(2 * sizeof(unsigned long)))) unsigned long){4UL, 3UL};
- val10 = var6;
- var3 = val10;
- val11 = var1;
- val12 = var2;
- val13 = var3;
- var1 = val11 * val12 + val13;
+ var3 = var6;
+ var1 = var1 * var2 + var3;
var7 = (&var1);
- val14 = var7;
- val15 = *((unsigned int *)val14);
- val16 = var7;
- val17 = ((unsigned int *)val16)[1UL];
- printf("a=[%d %d]\n", val15, val17);
- val18 = *array;
- val19 = array[1UL];
- val20 = array[2UL];
- val21 = array[3UL];
- printf("array=[%lld %lld %lld %lld]\n", val18, val19, val20, val21);
+ val8 = *((unsigned int *)var7);
+ val9 = ((unsigned int *)var7)[1UL];
+ printf("a=[%d %d]\n", val8, val9);
+ val10 = *array;
+ val11 = array[1UL];
+ val12 = array[2UL];
+ val13 = array[3UL];
+ printf("array=[%lld %lld %lld %lld]\n", val10, val11, val12, val13);
return 0U;
}
switch_loop.bc
--- /dev/fd/63 2022-08-12 14:45:07.749271511 +0000
+++ /dev/fd/62 2022-08-12 14:45:07.749271511 +0000
@@ -4,36 +4,26 @@
unsigned int main() {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
var0 = 0U;
var1 = 0U;
- do {
- val2 = var1;
- var1 = val2 + 1U;
- val3 = var1;
- if (!(val3 != 1U && val3 != 2U && val3 != 3U)) {
- if (val3 == 3U) {
- val6 = var1;
- printf("%d\n", val6);
+ while (1U)
+ {
+ var1 = var1 + 1U;
+ if (var1 != 1U && var1 != 2U && var1 != 3U) {
break;
}
- if (val3 == 2U) {
- val5 = var1;
- printf("%d\n", val5);
+ if (var1 == 3U) {
+ printf("%d\n", var1);
+ break;
+ }
+ if (var1 == 2U) {
+ printf("%d\n", var1);
}
- if (val3 == 1U) {
- val4 = var1;
- printf("%d\n", val4);
+ if (var1 == 1U) {
+ printf("%d\n", var1);
}
}
- } while (!(val3 != 1U && val3 != 2U && val3 != 3U));
- if (val3 == 3U || !(val3 == 2U || val3 == 3U || val3 == 1U)) {
- val7 = var0;
- return val7;
+ if (var1 == 3U || !(var1 == 2U || var1 == 3U || var1 == 1U)) {
+ return var0;
}
}
func_cond_zero_arg.bc
--- /dev/fd/63 2022-08-12 14:45:08.097270774 +0000
+++ /dev/fd/62 2022-08-12 14:45:08.097270774 +0000
@@ -8,7 +8,6 @@
unsigned int main() {
unsigned int var0;
unsigned int call1;
- unsigned int val2;
var0 = 0U;
call1 = f();
if (call1 == 0U) {
@@ -16,6 +15,5 @@
} else {
var0 = 1U;
}
- val2 = var0;
- return val2;
+ return var0;
}
conflicting_names.bc
--- /dev/fd/63 2022-08-12 14:45:08.249270452 +0000
+++ /dev/fd/62 2022-08-12 14:45:08.249270452 +0000
@@ -4,17 +4,13 @@
unsigned int atoi(void *arg0);
unsigned int foo() {
unsigned int var0;
- unsigned int val1;
var0 = 0U;
- val1 = var0;
- return val1;
+ return var0;
}
unsigned int bar() {
unsigned int var0;
- unsigned int val1;
var0 = 1U;
- val1 = var0;
- return val1;
+ return var0;
}
unsigned int main() {
unsigned int var0;
@@ -24,35 +20,23 @@
unsigned int var4;
unsigned int var5;
unsigned int var6;
- unsigned int val7;
- void *val8;
- void *val9;
- unsigned int call10;
- unsigned int val11;
- unsigned int val12;
- unsigned int val13;
- unsigned int val14;
+ void *val7;
+ unsigned int call8;
var0 = 0U;
var1 = 0U;
var2 = (void *)0U;
var3 = 0U;
- val7 = var1;
- if (1 >= (int)val7) {
+ if (1 >= (int)var1) {
var6 = 1U;
- val13 = var6;
- var3 = val13;
+ var3 = var6;
} else {
- val8 = var2;
- val9 = ((void **)val8)[1UL];
- call10 = atoi(val9);
- var4 = call10;
- val11 = var4;
- if ((int)val11 > 10) {
+ val7 = ((void **)var2)[1UL];
+ call8 = atoi(val7);
+ var4 = call8;
+ if ((int)var4 > 10) {
var5 = 99U;
- val12 = var5;
- var3 = val12;
+ var3 = var5;
}
}
- val14 = var3;
- return val14;
+ return var3;
}
struct.bc
--- /dev/fd/63 2022-08-12 14:45:08.449270029 +0000
+++ /dev/fd/62 2022-08-12 14:45:08.449270029 +0000
@@ -9,7 +9,6 @@
unsigned int val1;
unsigned int val2;
unsigned int val3;
- unsigned int val4;
var0 = 0U;
val1 = a.field0;
if (val1 == 0U) {
@@ -19,6 +18,5 @@
val2 = a.field0;
var0 = val2;
}
- val4 = var0;
- return val4;
+ return var0;
}
issue_183_literal_structs.bc
issue_127_uint128_t_lit.bc
struct_swap.bc
--- /dev/fd/63 2022-08-12 14:45:08.805269276 +0000
+++ /dev/fd/62 2022-08-12 14:45:08.805269276 +0000
@@ -10,14 +10,12 @@
unsigned int val2;
unsigned int val3;
unsigned int val4;
- unsigned int val5;
var0 = 0U;
val2 = a.field0;
var1 = val2;
val3 = a.field1;
a.field0 = val3;
- val4 = var1;
- a.field1 = val4;
- val5 = a.field0;
- return val5;
+ a.field1 = var1;
+ val4 = a.field0;
+ return val4;
}
init_list.bc
ret0.bc
trunc.bc
short.bc
--- /dev/fd/63 2022-08-12 14:45:09.197268446 +0000
+++ /dev/fd/62 2022-08-12 14:45:09.197268446 +0000
@@ -4,11 +4,9 @@
unsigned int var0;
unsigned short var1;
unsigned short val2;
- unsigned short val3;
var0 = 0U;
a = 13U;
val2 = a;
var1 = val2;
- val3 = var1;
- return (unsigned int)val3;
+ return (unsigned int)var1;
}
cast.bc
nullptr.bc
--- /dev/fd/63 2022-08-12 14:45:09.397268022 +0000
+++ /dev/fd/62 2022-08-12 14:45:09.397268022 +0000
@@ -3,7 +3,6 @@
unsigned int main() {
unsigned int var0;
void *val1;
- unsigned int val2;
var0 = 0U;
val1 = ptr;
if (val1 != (void *)0U) {
@@ -11,6 +10,5 @@
} else {
var0 = 0U;
}
- val2 = var0;
- return val2;
+ return var0;
}
nested_struct.bc
array_swap.bc
--- /dev/fd/63 2022-08-12 14:45:09.653267481 +0000
+++ /dev/fd/62 2022-08-12 14:45:09.653267481 +0000
@@ -6,14 +6,12 @@
unsigned int val2;
unsigned int val3;
unsigned int val4;
- unsigned int val5;
var0 = 0U;
val2 = *a;
var1 = val2;
val3 = a[1UL];
*a = val3;
- val4 = var1;
- a[1UL] = val4;
- val5 = *a;
- return val5;
+ a[1UL] = var1;
+ val4 = *a;
+ return val4;
}
bitmask.bc
--- /dev/fd/63 2022-08-12 14:45:09.753267269 +0000
+++ /dev/fd/62 2022-08-12 14:45:09.753267269 +0000
@@ -3,7 +3,6 @@
unsigned int main() {
unsigned int var0;
unsigned long val1;
- unsigned int val2;
var0 = 0U;
val1 = a;
if ((val1 & 4080UL) >> 4UL != 188UL) {
@@ -11,6 +10,5 @@
} else {
var0 = 0U;
}
- val2 = var0;
- return val2;
+ return var0;
}
binops.bc
--- /dev/fd/63 2022-08-12 14:45:09.909266939 +0000
+++ /dev/fd/62 2022-08-12 14:45:09.909266939 +0000
@@ -4,49 +4,23 @@
unsigned int var0;
unsigned int var1;
unsigned int var2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
- unsigned int val10;
- unsigned int val11;
- unsigned int val12;
- unsigned int val13;
- unsigned int val14;
- unsigned int val15;
var0 = arg0;
- val3 = var0;
- var1 = val3 % 4U;
+ var1 = var0 % 4U;
var2 = 0U;
- val4 = var1;
- if (val4 != 0U) {
- val7 = var1;
- if (val7 != 1U) {
- val10 = var1;
- if (val10 != 2U) {
- val13 = var0;
- val14 = var0;
- var2 = (val13 + 3131756735U) * (5U & val14);
+ if (var1 != 0U) {
+ if (var1 != 1U) {
+ if (var1 != 2U) {
+ var2 = (var0 + 3131756735U) * (5U & var0);
} else {
- val11 = var0;
- val12 = var0;
- var2 = (val11 ^ 3131756735U) * (4U | val12);
+ var2 = (var0 ^ 3131756735U) * (4U | var0);
}
} else {
- val8 = var0;
- val9 = var0;
- var2 = (val8 & 3131756735U) * (3U + val9);
+ var2 = (var0 & 3131756735U) * (3U + var0);
}
} else {
- val5 = var0;
- val6 = var0;
- var2 = (val5 | 3131756735U) * (2U ^ val6);
+ var2 = (var0 | 3131756735U) * (2U ^ var0);
}
- val15 = var2;
- return val15;
+ return var2;
}
unsigned int main() {
unsigned int var0;
float.bc
--- /dev/fd/63 2022-08-12 14:45:10.185266355 +0000
+++ /dev/fd/62 2022-08-12 14:45:10.185266355 +0000
@@ -4,21 +4,15 @@
unsigned int var0;
double var1;
double var2;
- double val3;
- float val4;
- double val5;
- unsigned int val6;
+ float val3;
var0 = 0U;
var1 = 3.1428571428571428;
- val3 = var1;
- val4 = f;
- var2 = val3 - (double)val4;
- val5 = var2;
- if (val5 >= 0.01) {
+ val3 = f;
+ var2 = var1 - (double)val3;
+ if (var2 >= 0.01) {
var0 = 1U;
} else {
var0 = 0U;
}
- val6 = var0;
- return val6;
+ return var0;
}
reg_test_structure_fields.bc
zeroinit.bc
--- /dev/fd/63 2022-08-12 14:45:10.441265813 +0000
+++ /dev/fd/62 2022-08-12 14:45:10.441265813 +0000
@@ -18,7 +18,6 @@
unsigned int var0;
unsigned int val1;
unsigned long val2;
- unsigned int val3;
var0 = 0U;
val1 = r1.field1.field0;
if (val1 == 0U) {
@@ -31,6 +30,5 @@
} else {
var0 = 1U;
}
- val3 = var0;
- return val3;
+ return var0;
}
funcptr.bc
--- /dev/fd/63 2022-08-12 14:45:10.649265372 +0000
+++ /dev/fd/62 2022-08-12 14:45:10.649265372 +0000
@@ -5,31 +5,22 @@
unsigned int add(unsigned int arg0, unsigned int arg1) {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
var0 = arg0;
var1 = arg1;
- val2 = var0;
- val3 = var1;
- return val2 + val3;
+ return var0 + var1;
}
unsigned int sub(unsigned int arg0, unsigned int arg1) {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
var0 = arg0;
var1 = arg1;
- val2 = var0;
- val3 = var1;
- return val2 - val3;
+ return var0 - var1;
}
unsigned int main() {
unsigned int var0;
void *var1;
unsigned int val2;
- void *val3;
- unsigned int call4;
+ unsigned int call3;
var0 = 0U;
val2 = x;
if (val2 == 0U) {
@@ -37,7 +28,6 @@
} else {
var1 = &add;
}
- val3 = var1;
- call4 = ((unsigned int (*)(unsigned int, unsigned int))val3)(2U, 2U);
- return call4;
+ call3 = ((unsigned int (*)(unsigned int, unsigned int))var1)(2U, 2U);
+ return call3;
}
goto_loop.bc
--- /dev/fd/63 2022-08-12 14:45:10.805265042 +0000
+++ /dev/fd/62 2022-08-12 14:45:10.805265042 +0000
@@ -4,41 +4,23 @@
unsigned int main() {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
var0 = 0U;
var1 = 0U;
while (1U)
{
- val2 = var1;
- var1 = val2 + 1U;
- val3 = var1;
- if (val3 == 1U) {
- val4 = var1;
- printf("%d\n", val4);
+ var1 = var1 + 1U;
+ if (var1 == 1U) {
+ printf("%d\n", var1);
+ } else if (var1 != 2U) {
+ break;
} else {
- val5 = var1;
- if (val5 != 2U) {
- break;
- } else {
- val6 = var1;
- printf("%d\n", val6);
- }
+ printf("%d\n", var1);
}
}
- if (val3 != 1U && val5 != 2U) {
- val7 = var1;
- if (val7 == 3U) {
- val8 = var1;
- printf("%d\n", val8);
+ if (var1 != 1U && var1 != 2U) {
+ if (var1 == 3U) {
+ printf("%d\n", var1);
}
- val9 = var0;
- return val9;
+ return var0;
}
}
branch.bc
--- /dev/fd/63 2022-08-12 14:45:11.101264416 +0000
+++ /dev/fd/62 2022-08-12 14:45:11.101264416 +0000
@@ -13,18 +13,15 @@
unsigned long var2;
unsigned int val3;
unsigned int val4;
- unsigned long val5;
- unsigned int val6;
- unsigned long val7;
+ unsigned int val5;
var0 = 0U;
var1 = (unsigned long)(&a);
var2 = (unsigned long)(&c);
val3 = c;
if (val3 == 0U) {
- val6 = c;
- printf("Global variable 'c' of value %u is at ", val6);
- val7 = var2;
- if (val7 % 2UL != 0UL) {
+ val5 = c;
+ printf("Global variable 'c' of value %u is at ", val5);
+ if (var2 % 2UL != 0UL) {
printf("odd ");
} else {
printf("even ");
@@ -32,8 +29,7 @@
} else {
val4 = a;
printf("Global variable 'a' of value %u is at ", val4);
- val5 = var1;
- if (val5 % 2UL != 0UL) {
+ if (var1 % 2UL != 0UL) {
printf("odd ");
} else {
printf("even ");
bitops.bc
--- /dev/fd/63 2022-08-12 14:45:11.377263832 +0000
+++ /dev/fd/62 2022-08-12 14:45:11.377263832 +0000
@@ -10,28 +10,20 @@
unsigned int val5;
unsigned int val6;
unsigned int val7;
- unsigned int val8;
- unsigned int val9;
- unsigned int val10;
- unsigned int val11;
var0 = 0U;
var1 = 0U;
val2 = a;
val3 = b;
if (((int)val2 >> val3 & 1U) != 0U) {
- val4 = var1;
- var1 = val4 + 1U;
+ var1 = var1 + 1U;
}
- val5 = a;
- val6 = b;
- if ((val5 >> val6 ^ 1U) != 0U) {
- val7 = var1;
- var1 = val7 + 2U;
+ val4 = a;
+ val5 = b;
+ if ((val4 >> val5 ^ 1U) != 0U) {
+ var1 = var1 + 2U;
}
- val8 = a;
- val9 = b;
- val10 = var1;
- var1 = val10 + 3U;
- val11 = var1;
- return val11;
+ val6 = a;
+ val7 = b;
+ var1 = var1 + 3U;
+ return var1;
}
vectors.bc
--- /dev/fd/63 2022-08-12 14:45:11.593263374 +0000
+++ /dev/fd/62 2022-08-12 14:45:11.593263374 +0000
@@ -10,43 +10,23 @@
__attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int var5;
__attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int var6;
void *var7;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val8;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val9;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val10;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val11;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val12;
- __attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int val13;
- void *val14;
- unsigned int val15;
- void *val16;
- unsigned int val17;
- void *val18;
- unsigned int val19;
- void *val20;
- unsigned int val21;
+ unsigned int val8;
+ unsigned int val9;
+ unsigned int val10;
+ unsigned int val11;
var0 = 0U;
var4 = (__attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int){1U, 2U, 3U, 4U};
- val8 = var4;
- var1 = val8;
+ var1 = var4;
var5 = (__attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int){};
- val9 = var5;
- var2 = val9;
+ var2 = var5;
var6 = (__attribute__((__vector_size__(4 * sizeof(unsigned int)))) unsigned int){4U, 3U, 2U, 1U};
- val10 = var6;
- var3 = val10;
- val11 = var1;
- val12 = var2;
- val13 = var3;
- var1 = val11 * val12 + val13;
+ var3 = var6;
+ var1 = var1 * var2 + var3;
var7 = (&var1);
- val14 = var7;
- val15 = *((unsigned int *)val14);
- val16 = var7;
- val17 = ((unsigned int *)val16)[1UL];
- val18 = var7;
- val19 = ((unsigned int *)val18)[2UL];
- val20 = var7;
- val21 = ((unsigned int *)val20)[3UL];
- printf("a=[%d %d %d %d]\n", val15, val17, val19, val21);
+ val8 = *((unsigned int *)var7);
+ val9 = ((unsigned int *)var7)[1UL];
+ val10 = ((unsigned int *)var7)[2UL];
+ val11 = ((unsigned int *)var7)[3UL];
+ printf("a=[%d %d %d %d]\n", val8, val9, val10, val11);
return 0U;
}
issue_4.bc
--- /dev/fd/63 2022-08-12 14:45:11.693263163 +0000
+++ /dev/fd/62 2022-08-12 14:45:11.693263163 +0000
@@ -5,32 +5,17 @@
unsigned int var1;
unsigned int var2;
unsigned int var3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
- unsigned int val10;
var0 = arg0;
var1 = arg1;
var2 = 0U;
var3 = 0U;
- do {
- val4 = var3;
- if (val4 != 42U) {
- val5 = var0;
- val6 = var2;
- var2 = val6 + val5;
- val7 = var1;
- val8 = var2;
- var2 = val8 % val7;
- val9 = var3;
- var3 = val9 + 1U;
+ while (var3 != 42U)
+ {
+ var2 = var2 + var0;
+ var2 = var2 % var1;
+ var3 = var3 + 1U;
}
- } while (val4 != 42U);
- val10 = var2;
- return val10;
+ return var2;
}
unsigned int main() {
unsigned int var0;
conflicting_global.bc
--- /dev/fd/63 2022-08-12 14:45:11.873262782 +0000
+++ /dev/fd/62 2022-08-12 14:45:11.873262782 +0000
@@ -5,11 +5,9 @@
unsigned int main() {
unsigned int var0;
unsigned int val1;
- unsigned int val2;
var0 = 4U;
- val1 = var0;
+ printf("%d\n", var0);
+ val1 = a;
printf("%d\n", val1);
- val2 = a;
- printf("%d\n", val2);
return 0U;
}
issue_123_uint128_t.bc
--- /dev/fd/63 2022-08-12 14:45:11.969262579 +0000
+++ /dev/fd/62 2022-08-12 14:45:11.969262579 +0000
@@ -4,13 +4,11 @@
unsigned int var0;
unsigned __int128 var1;
unsigned long val2;
- unsigned __int128 val3;
- unsigned long val4;
+ unsigned long val3;
var0 = 0U;
val2 = x;
var1 = val2;
- val3 = var1;
- x = val3;
- val4 = x;
- return (unsigned int)(val4 & 255UL);
+ x = var1;
+ val3 = x;
+ return (unsigned int)(val3 & 255UL);
}
fizzbuzz_stateful.bc
--- /dev/fd/63 2022-08-12 14:45:12.069262367 +0000
+++ /dev/fd/62 2022-08-12 14:45:12.069262367 +0000
@@ -14,7 +14,6 @@
unsigned int val4;
unsigned int val5;
unsigned int val6;
- unsigned int val7;
val1 = i;
var0 = val1;
val2 = i;
@@ -34,15 +33,13 @@
printf("%d", val6);
}
}
- val7 = var0;
- i = val7;
+ i = var0;
return;
}
unsigned int main() {
unsigned int var0;
unsigned int val1;
unsigned int val2;
- unsigned int val3;
var0 = 0U;
i = 1U;
do {
@@ -54,6 +51,5 @@
i = val2 + 1U;
}
} while ((int)val1 < 16);
- val3 = var0;
- return val3;
+ return var0;
}
issue_94_strncmp.bc
bool.bc
--- /dev/fd/63 2022-08-12 14:45:12.605261232 +0000
+++ /dev/fd/62 2022-08-12 14:45:12.605261232 +0000
@@ -5,7 +5,6 @@
unsigned int var0;
unsigned long val1;
unsigned long val2;
- unsigned int val3;
var0 = 0U;
val1 = a;
val2 = b;
@@ -14,6 +13,5 @@
} else {
var0 = 0U;
}
- val3 = var0;
- return val3;
+ return var0;
}
global_using_function_decl.bc
fcmp.bc
--- /dev/fd/63 2022-08-12 14:45:12.881260648 +0000
+++ /dev/fd/62 2022-08-12 14:45:12.885260640 +0000
@@ -17,56 +17,18 @@
unsigned int var9;
float call10;
float call11;
- float val12;
- float val13;
- float val14;
- float val15;
- float val16;
- float val17;
- float val18;
- float val19;
- float val20;
- float val21;
- float val22;
- float val23;
- float val24;
- unsigned int val25;
- unsigned int val26;
- unsigned int val27;
- unsigned int val28;
- unsigned int val29;
- unsigned int val30;
var0 = __builtin_nan("");
call10 = atof("3");
var1 = call10;
call11 = atof("2");
var2 = call11;
- val12 = var1;
- var3 = -val12;
- val13 = var3;
- val14 = var0;
- var4 = (val13 > val14);
- val15 = var3;
- val16 = var0;
- var5 = (val15 >= val16);
- val17 = var1;
- val18 = var2;
- var6 = (val17 > val18);
- val19 = var1;
- val20 = var2;
- var7 = (val19 >= val20);
- val21 = var1;
- val22 = var0;
- var8 = __builtin_isunordered(val21, val22);
- val23 = var1;
- val24 = var2;
- var9 = __builtin_isunordered(val23, val24);
- val25 = var4;
- val26 = var5;
- val27 = var6;
- val28 = var7;
- val29 = var8;
- val30 = var9;
- printf("%d %d %d %d %d %d\n", val25, val26, val27, val28, val29, val30);
+ var3 = -var1;
+ var4 = (var3 > var0);
+ var5 = (var3 >= var0);
+ var6 = (var1 > var2);
+ var7 = (var1 >= var2);
+ var8 = __builtin_isunordered(var1, var0);
+ var9 = __builtin_isunordered(var1, var2);
+ printf("%d %d %d %d %d %d\n", var4, var5, var6, var7, var8, var9);
return 0U;
}
byval_struct.bc
--- /dev/fd/63 2022-08-12 14:45:12.993260411 +0000
+++ /dev/fd/62 2022-08-12 14:45:12.993260411 +0000
@@ -31,7 +31,6 @@
unsigned int call5;
unsigned long call6;
unsigned long val7;
- unsigned long val8;
call2 = atoi("1");
var0.field0 = (long)call2;
call3 = atoi("2");
@@ -43,7 +42,6 @@
call6 = get_3x(var0);
var1 = call6;
val7 = var0.field0;
- val8 = var1;
- printf("%lld %lld\n", val7, val8);
+ printf("%lld %lld\n", val7, var1);
return 0U;
}
nested_while.bc
--- /dev/fd/63 2022-08-12 14:45:13.093260199 +0000
+++ /dev/fd/62 2022-08-12 14:45:13.093260199 +0000
@@ -8,40 +8,24 @@
unsigned int var0;
unsigned int var1;
unsigned int call2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
- unsigned int val10;
var0 = 0U;
call2 = atoi("5");
var1 = call2;
- val3 = var1;
- if ((int)val3 > 10) {
- do {
- val4 = var1;
- if ((int)val4 < 20) {
- val5 = var1;
- var1 = val5 + 1U;
- val6 = var1;
- printf("loop1 x: %d\n", val6);
+ if ((int)var1 > 10) {
+ while ((int)var1 < 20)
+ {
+ var1 = var1 + 1U;
+ printf("loop1 x: %d\n", var1);
}
- } while ((int)val4 < 20);
}
- if ((int)val4 >= 20 || (int)val3 <= 10) {
- do {
- val7 = var1;
- if ((int)val7 < 20) {
- val8 = var1;
- var1 = val8 + 1U;
- val9 = var1;
- printf("loop2 x: %d\n", val9);
+ if ((int)var1 <= 10 || (int)var1 >= 20) {
+ while ((int)var1 < 20)
+ {
+ var1 = var1 + 1U;
+ printf("loop2 x: %d\n", var1);
}
- } while ((int)val7 < 20);
- val10 = var0;
- return val10;
+ }
+ if (((int)var1 <= 10 || (int)var1 >= 20) && (int)var1 >= 20) {
+ return var0;
}
}
func_cond_two_arg.bc
--- /dev/fd/63 2022-08-12 14:45:13.421259505 +0000
+++ /dev/fd/62 2022-08-12 14:45:13.421259505 +0000
@@ -5,20 +5,15 @@
unsigned int f(unsigned int arg0, unsigned int arg1) {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
var0 = arg0;
var1 = arg1;
- val2 = var0;
- val3 = var1;
- return (unsigned int)((int)val2 < (int)val3);
+ return (unsigned int)((int)var0 < (int)var1);
}
unsigned int main() {
unsigned int var0;
unsigned int val1;
unsigned int val2;
unsigned int call3;
- unsigned int val4;
var0 = 0U;
val1 = x;
val2 = y;
@@ -28,6 +23,5 @@
} else {
var0 = 1U;
}
- val4 = var0;
- return val4;
+ return var0;
}
zext.bc
inttoptr.bc
--- /dev/fd/63 2022-08-12 14:45:13.685258946 +0000
+++ /dev/fd/62 2022-08-12 14:45:13.685258946 +0000
@@ -4,17 +4,13 @@
unsigned int var0;
void *var1;
unsigned long val2;
- void *val3;
- unsigned int val4;
var0 = 0U;
val2 = a;
var1 = (void *)val2;
- val3 = var1;
- if (val3 == (void *)0U) {
+ if (var1 == (void *)0U) {
var0 = 0U;
} else {
var0 = 42U;
}
- val4 = var0;
- return val4;
+ return var0;
}
assert.bc
--- /dev/fd/63 2022-08-12 14:45:13.841258616 +0000
+++ /dev/fd/62 2022-08-12 14:45:13.841258616 +0000
@@ -17,15 +17,17 @@
__assert_fail("a % 3", "assert.c", 6U, "int main(void)");
} else {
val2 = a;
- if (val2 % 7UL == 0UL) {
- __assert_fail("a % 7", "assert.c", 7U, "int main(void)");
- } else {
- val3 = a;
- if (val3 % 15UL == 0UL) {
- __assert_fail("a % 15", "assert.c", 8U, "int main(void)");
- } else {
- return 0U;
- }
- }
+ }
+ if (val1 % 3UL != 0UL && val2 % 7UL == 0UL) {
+ __assert_fail("a % 7", "assert.c", 7U, "int main(void)");
+ }
+ if (val1 % 3UL != 0UL && val2 % 7UL != 0UL) {
+ val3 = a;
+ }
+ if (val1 % 3UL != 0UL && val2 % 7UL != 0UL && val3 % 15UL == 0UL) {
+ __assert_fail("a % 15", "assert.c", 8U, "int main(void)");
+ }
+ if (val1 % 3UL != 0UL && val2 % 7UL != 0UL && val3 % 15UL != 0UL) {
+ return 0U;
}
}
loop.bc
--- /dev/fd/63 2022-08-12 14:45:14.149257964 +0000
+++ /dev/fd/62 2022-08-12 14:45:14.149257964 +0000
@@ -6,26 +6,17 @@
unsigned int main() {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
var0 = 0U;
var1 = 0U;
- do {
- val2 = var1;
- if (val2 != 10U) {
- val3 = var1;
- printf("Variable at %d is ", val3);
- val4 = var1;
- if (val4 % 2U != 0U) {
+ while (var1 != 10U)
+ {
+ printf("Variable at %d is ", var1);
+ if (var1 % 2U != 0U) {
printf("odd.\n");
} else {
printf("even.\n");
}
- val5 = var1;
- var1 = val5 + 1U;
+ var1 = var1 + 1U;
}
- } while (val2 != 10U);
return 0U;
}
switch.bc
--- /dev/fd/63 2022-08-12 14:45:14.377257482 +0000
+++ /dev/fd/62 2022-08-12 14:45:14.377257482 +0000
@@ -4,7 +4,6 @@
unsigned int var0;
unsigned int var1;
unsigned int val2;
- unsigned int val3;
var0 = 0U;
var1 = 0U;
val2 = a;
@@ -30,6 +29,5 @@
}
break;
}
- val3 = var1;
- return val3;
+ return var1;
}
template_parameter_pack.bc
--- /dev/fd/63 2022-08-12 14:45:14.553257109 +0000
+++ /dev/fd/62 2022-08-12 14:45:14.557257101 +0000
@@ -17,71 +17,43 @@
unsigned int var2;
unsigned int var3;
unsigned int var4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int val8;
- unsigned int val9;
- unsigned int call10;
+ unsigned int call5;
var0 = arg0;
var1 = arg1;
var2 = arg2;
var3 = arg3;
var4 = arg4;
- val5 = var0;
- val6 = var1;
- val7 = var2;
- val8 = var3;
- val9 = var4;
- call10 = _Z3sumIiJiiiEET_S0_DpT0_(val6, val7, val8, val9);
- return val5 + call10;
+ call5 = _Z3sumIiJiiiEET_S0_DpT0_(var1, var2, var3, var4);
+ return var0 + call5;
}
unsigned int _Z3sumIiJiiiEET_S0_DpT0_(unsigned int arg0, unsigned int arg1, unsigned int arg2, unsigned int arg3) {
unsigned int var0;
unsigned int var1;
unsigned int var2;
unsigned int var3;
- unsigned int val4;
- unsigned int val5;
- unsigned int val6;
- unsigned int val7;
- unsigned int call8;
+ unsigned int call4;
var0 = arg0;
var1 = arg1;
var2 = arg2;
var3 = arg3;
- val4 = var0;
- val5 = var1;
- val6 = var2;
- val7 = var3;
- call8 = _Z3sumIiJiiEET_S0_DpT0_(val5, val6, val7);
- return val4 + call8;
+ call4 = _Z3sumIiJiiEET_S0_DpT0_(var1, var2, var3);
+ return var0 + call4;
}
unsigned int _Z3sumIiJiiEET_S0_DpT0_(unsigned int arg0, unsigned int arg1, unsigned int arg2) {
unsigned int var0;
unsigned int var1;
unsigned int var2;
- unsigned int val3;
- unsigned int val4;
- unsigned int val5;
- unsigned int call6;
+ unsigned int call3;
var0 = arg0;
var1 = arg1;
var2 = arg2;
- val3 = var0;
- val4 = var1;
- val5 = var2;
- call6 = _Z3sumIiET_S0_S0_(val4, val5);
- return val3 + call6;
+ call3 = _Z3sumIiET_S0_S0_(var1, var2);
+ return var0 + call3;
}
unsigned int _Z3sumIiET_S0_S0_(unsigned int arg0, unsigned int arg1) {
unsigned int var0;
unsigned int var1;
- unsigned int val2;
- unsigned int val3;
var0 = arg0;
var1 = arg1;
- val2 = var0;
- val3 = var1;
- return val2 + val3;
+ return var0 + var1;
}
byval_tail_nogep.ll
byval_tail_gep.ll