Souper Index

This is Souper 55285f2 from May 7 2014
clang version 3.5.0 (205611)
gcc version 4.10.0 20140427 (experimental) (GCC)
Program 228:
; Function: fn1
%0:i32 = var 
%1:i32 = var 
%2:i32 = and %0, %1
%3:i1 = slt %2, 0:i32
pc %3 1:i1
%4:i32 = subnsw 0:i32, %0
%5:i1 = slt %1, %4
cand %5 1:i1

int a, b, c;
void fn1() { c = a < 0 && b < 0 && a < -b; }
Program 6:
; Function: fn1
%0:i32 = var 
%1:i32 = mul 4294967294:i32, %0
%2:i1 = eq 1:i32, %1
cand %2 0:i1

int a, b;
void fn1() { b = a * ~1 == 1; }
Program 543:
; Function: fn2
%0 = block
%1:i32 = var 
%2:i32 = lshr %1, 31:i32
%3:i32 = var 
%4:i32 = udiv %2, %3
%5:i1 = eq 0:i32, %3
%6:i32 = zext %5
%7:i32 = phi %0, %4, %6
%8:i32 = ashr %7, 1:i32
%9:i1 = eq 0:i32, %8
cand %9 1:i1

int a, c, d;
int *b;
int fn1(unsigned p1) { return a == 0 ?: p1 / a; }

void fn2() {
  for (;;) {
    d = fn1(0 > *b);
    c = d >> 1;
    if (c)
      break;
  }
}
Program 165:
; Function: fn1
%0:i32 = var 
%1:i64 = sext %0
%2:i64 = and 9223372036854775808:i64, %1
%3:i64 = addnsw 18446744073709551611:i64, %2
%4:i1 = slt %3, 0:i64
cand %4 1:i1

int a, b;
void fn1() { b = (a & ~9223372036854775807LL) - 5 < 0 ?: 0; }
Program 164:
; Function: fn1
%0:i32 = var 
%1:i1 = eq 0:i32, %0
pc %1 1:i1
%2:i32 = addnsw 4294967295:i32, %0
%3:i16 = var 
%4:i32 = zext %3
%5:i1 = eq %2, %4
cand %5 0:i1

int a, b;
unsigned short c;
void fn1() {
  int *d = &a;
  *d = b - 1;
  if (b)
    ;
  else if (*d != c)
    for (;;)
      ;
}
Program 77:
; Function: fn1
%0:i8 = var 
%1:i1 = eq 0:i8, %0
%2:i32 = var 
%3:i1 = eq 0:i32, %2
%4:i1 = or %1, %3
pc %4 1:i1
%5:i1 = xor 1:i1, %3
%6:i1 = ne 0:i8, %0
%7:i1 = and %5, %6
cand %7 0:i1

int a;
char b;
int fn1() { return a && b || a && b; }
Program 427:
; Function: fn1
%0:i32 = var 
%1:i32 = subnsw 0:i32, %0
%2:i32 = and %0, %1
%3:i1 = slt %2, 4294967294:i32
cand %3 0:i1

int a, b, c;
void fn1() {
  c = a & -a;
  b = c <= -3L;
}
Program 624:
; Function: fn1
%0:i1 = var 
pc %0 1:i1
%1:i32 = zext %0
%2:i32 = xor 1:i32, %1
%3:i32 = lshr 1:i32, %2
%4:i1 = ne 0:i32, %3
cand %4 1:i1

static int a = 1;
int b;
int c;
void fn1() {
  b = a;
  c = a || 1 >> a;
  a = 0;
}
Program 378:
; Function: fn1
%0:i8 = var 
%1:i1 = slt 255:i8, %0
pc %1 1:i1
%2:i8 = sub 0:i8, %0
%3:i1 = slt 0:i8, %2
cand %3 0:i1

char a;
int b;
void fn1() {
  for (; a >= 0; a--)
    b = 0;
}
Program 795:
; Function: fn1
%0:i32 = var 
%1:i64 = sext %0
%2:i32 = lshr %0, 31:i32
%3:i32 = xor 1:i32, %2
%4:i64 = zext %3
%5:i64 = xor 4842753371:i64, %4
%6:i1 = sle %1, %5
cand %6 1:i1

int a, b;
void fn1() { a = (0 <= b ^ 4842753371) >= b; }
Program 307:
; Function: fn1
%0:i32 = var 
%1:i1 = eq 0:i32, %0
%2:i32 = zext %1
%3:i32 = var 
%4:i1 = ne 0:i32, %3
%5:i32 = zext %4
%6:i32 = subnsw %2, %5
%7:i1 = slt %6, 2:i32
cand %7 1:i1

int a, b, c;
void fn1() { a = (0 == c) - (b != 0) <= 1; }
Program 435:
; Function: fn1
%0:i32 = var 
%1:i32 = or 5529:i32, %0
%2:i1 = var 
%3:i32 = select %2, 0:i32, 4294967283:i32
%4:i1 = eq %1, %3
cand %4 0:i1

int a;
static int b = 13;
void fn1() {
  if ((a | 5529) + b)
    b = 0;
}
Program 549:
; Function: fn2
%0:i8 = var 
%1:i32 = sext %0
%2:i32 = addnsw 4294966725:i32, %1
%3:i1 = slt %2, 0:i32
cand %3 1:i1

char a;
int b;
int fn1(p1) { return p1 < 0 ?: 0; }

void fn2() { b = fn1(a - 571); }
Program 320:
; Function: fn1
%0:i32 = var 
%1:i1 = slt %0, 0:i32
%2:i32 = var 
%3:i32 = sdiv 1:i32, %2
%4:i1 = slt %3, %0
%5:i1 = and %1, %4
cand %5 0:i1

int a, b, c, d;
void fn1() {
  d = 1 / a;
  c = b < 0 && d < b;
}
Program 512:
; Function: fn3
%0:i32 = var 
%1:i32 = and 1:i32, %0
%2:i1 = eq 0:i32, %1
%3:i1 = xor 1:i1, %2
%4:i1 = ne 0:i32, %1
%5:i1 = and %3, %4
%6:i1 = or %5, %2
cand %6 1:i1

int a;
int fn1(p1) { return p1 == 0 ? 0 : 1 % p1; }

void fn2();
void fn3() {
  int b = fn1(!0 & a);
  fn2(b == 0);
}
Program 97:
; Function: main
%0:i32 = var 
%1:i1 = ne 0:i32, %0
%2:i32 = select %1, %0, 1:i32
%3:i1 = eq 0:i32, %2
cand %3 0:i1

int a, b;
int fn1() { return a ?: 1; }

int main() {
  for (;;) {
    b = fn1();
    if (b)
      for (;;)
        ;
  }
}
Program 187:
; Function: fn1
%0:i32 = var 
%1:i1 = eq 0:i32, %0
%2:i32 = addnsw 1:i32, %0
%3:i32 = select %1, %2, 0:i32
%4:i1 = slt %3, 2:i32
cand %4 1:i1

int a;
void fn1() {
lbl_2195:
  for (a = 0; a <= 1; ++a)
    if (a)
      goto lbl_2195;
}
Program 580:
; Function: fn1
%0:i32 = var 
%1:i1 = ne 0:i32, %0
%2:i32 = zext %1
%3:i32 = sdiv %2, 4294967294:i32
%4:i16 = trunc %3
%5:i1 = eq 0:i16, %4
cand %5 1:i1

int a, b;
short c;
void fn1() {
  c = (0 || a) / (short)65534;
  if (c)
    b = 0;
}
Program 701:
; Function: fn1
%0:i32 = var 
%1:i1 = ne 0:i32, %0
%2:i32 = var 
%3:i1 = slt 4294967295:i32, %2
%4:i1 = and %1, %3
pc %4 1:i1
%5:i1 = slt %2, 0:i32
cand %5 0:i1

int a, b;
void fn1() {
  if (b)
    for (; a >= 0; a = a - 1)
      ;
}
Program 436:
; Function: fn1
%0:i32 = var 
%1:i32 = srem %0, 7:i32
%2:i16 = trunc %1
%3:i1 = slt 9:i16, %2
cand %3 0:i1

int a, b;
short c;
void fn1() {
  c = a % 7;
  b = c >= 10;
}
Program 276:
; Function: fn1
%0:i32 = var 
%1:i64 = sext %0
%2:i64 = sdiv 2036854775807:i64, %1
%3:i1 = ne 0:i64, %2
cand %3 1:i1

int a;
int fn1() { return 1 && 2036854775807 / a; }
Program 388:
; Function: fn1
%0:i32 = var 
%1:i64 = sext %0
%2:i64 = and 9223372036854775807:i64, %1
%3:i1 = ne 0:i64, %2
%4:i32 = select %3, %0, 1:i32
%5:i1 = eq 0:i32, %4
cand %5 0:i1

int a, b;
void fn1() {
  b = a & 9223372036854775807 ?: 1;
  if (b)
    for (;;)
      ;
}
Program 802:
; Function: fn1
%0:i32 = var 
%1:i32 = and 4294967294:i32, %0
%2:i32 = xor 4294967294:i32, %1
%3:i32 = srem 1:i32, %2
%4:i1 = eq 0:i32, %3
cand %4 0:i1

int a, b, c;
void fn1() {
  b = ~(a |= 1);
  c = 1 % b;
  if (c)
    for (;;)
      ;
}
Program 685:
; Function: fn2
%0:i32 = var 
%1:i32 = lshr 1:i32, %0
%2:i1 = slt 4294967295:i32, %1
cand %2 1:i1

int a, b, c, d;
int fn1(p1) { return p1 >= 0 ?: 0; }

void fn2() {
  int *e = &c;
  d = 1 >> a;
  c = d;
  b = fn1(*e);
}
Program 397:
; Function: fn1
%0:i32 = var 
%1:i32 = var 
%2:i32 = mul %0, %1
%3:i1 = eq 0:i32, %2
pc %3 0:i1
%4:i1 = eq 0:i32, %0
cand %4 0:i1

int a, b, c;
void fn1() {
  c = a * b;
  if (c)
    for (;;)
      if (b)
        for (;;)
          ;
}
Program 602:
; Function: fn1
%0:i32 = var 
%1:i32 = var 
%2:i32 = xor %0, %1
%3:i32 = xor 2147483648:i32, %0, %1
%4:i32 = and %2, %3
%5:i1 = slt %4, 0:i32
cand %5 0:i1

int a, b, c;
void fn1() { c = ((a ^ b) & (a ^ ~b)) < 0 ?: 0; }
Program 236:
; Function: fn1
%0:i32 = var 
%1:i1 = slt 4294967295:i32, %0
pc %1 1:i1
%2:i32 = xor 4294967295:i32, %0
%3:i1 = slt 4294967295:i32, %2
cand %3 0:i1

int a, b;
void fn1() {
  for (; a >= 0; a--)
    for (; b;)
      ;
}
Program 500:
; Function: main
%0:i32 = var 
%1:i1 = eq 0:i32, %0
pc %1 0:i1
%2:i32 = var 
%3:i1 = ne 0:i32, %2
%4:i32 = zext %3
%5:i32 = select %3, %4, %0
%6:i1 = eq 0:i32, %5
cand %6 0:i1

int a, b;
int fn1() { return a && b ?: a; }

static int fn2() {
  for (;;)
    if (fn1())
      for (;;)
        ;
}

int main() {
  fn2();
  for (;;)
    ;
}
Program 763:
; Function: main
%0:i32 = var 
%1:i1 = eq 0:i32, %0
pc %1 1:i1
%2:i32 = addnsw 1:i32, %0
%3:i1 = slt %2, 2:i32
cand %3 1:i1

int a;
int main() {
lbl_8:
  --a;
  for (; a <= 1; a++)
    if (a)
      goto lbl_8;
  for (;;)
    ;
}
Program 495:
; Function: fn1
%0:i32 = var 
%1:i32 = srem 1:i32, %0
%2:i32 = and 32768:i32, %1
%3:i1 = ne 0:i32, %2
cand %3 0:i1

int a, c;
short b;
void fn1() {
  c = 1 % a;
  b = c;
  c = b < 0 ?: 0;
}
Program 111:
; Function: fn2
%0:i32 = var 
%1:i1 = slt 0:i32, %0
%2:i32 = zext %1
%3:i32 = or 4:i32, %2
%4:i32 = sub 0:i32, %3
%5:i1 = slt %4, 0:i32
cand %5 1:i1

int a, b;
int fn1(p1) { return p1 < 0 ?: 0; }

void fn2() { b = fn1(-(4L ^ a > 0)); }
Program 642:
; Function: fn1
%0:i32 = var 
%1:i1 = slt %0, 1:i32
pc %1 1:i1
%2:i1 = slt 0:i32, %0
cand %2 0:i1

int a, b;
void fn1() {
  for (; b <= 0; b++)
    for (; a;)
      ;
}
Program 789:
; Function: fn2
%0:i32 = var 
%1:i1 = ne 0:i32, %0
%2:i32 = zext %1
%3:i32 = udiv 1:i32, %2
%4:i1 = ne 0:i32, %3
cand %4 1:i1

int a, b;
int fn1(p1) { return 1 / p1 ?: 1; }

void fn2() {
  int c = fn1(a && 1);
  b = c;
}
Program 146:
; Function: fn1
%0:i32 = var 
%1:i32 = subnsw 2147483647:i32, %0
%2:i1 = slt %1, 0:i32
cand %2 0:i1

int a, b, c;
void fn1() {
  c = 0 > 2147483647 - a;
  if (c)
    b--;
}
Program 139:
; Function: fn1
%0:i32 = var 
%1:i1 = slt %0, 0:i32
%2:i32 = lshr %0, 31:i32
%3:i32 = subnsw 0:i32, %0
%4:i32 = select %1, %2, %3
%5:i1 = eq 7:i32, %4
cand %5 0:i1

int a, b, c;
void fn1() {
  c = a < 0 ?: -a;
  b = c == 7;
}
Program 569:
; Function: fn2
%0:i32 = var 
%1:i32 = sdiv %0, 0:i32
%2:i1 = ne 0:i32, %1
cand %2 1:i1

int a, b;
void fn1();
void fn2() { fn1(); }

void fn1(p1) { b = a / p1 ?: 1; }
Program 373:
; Function: fn1
%0:i8 = var 
%1:i32 = zext %0
%2:i32 = var 
%3:i1 = ne 0:i32, %2
%4:i32 = sext %3
%5:i1 = slt %1, %4
cand %5 0:i1

int a, c;
unsigned char b;
void fn1() { c = (0 == a) - 1 > b; }
Program 780:
; Function: fn1
%0:i32 = var 
%1:i1 = slt 0:i32, %0
%2:i32 = var 
%3:i1 = slt 0:i32, %2
%4:i32 = zext %3
%5:i1 = slt %0, %4
%6:i1 = and %1, %5
cand %6 0:i1

int a, b, c, d;
void fn1() {
  d = 0 < b;
  c = a > 0 && d > a;
}
Program 157:
; Function: fn1
%0:i8 = var 
%1:i32 = sext %0
%2:i32 = or 1:i32, %1
%3:i1 = eq 217:i32, %2
cand %3 0:i1

char a;
void fn1(p1) {
  if ((1 | p1 ^ 216) == 1) {
    a = 0;
    for (;;)
      ;
  }
  fn1(a);
}
Program 395:
; Function: fn1
%0:i32 = var 
%1:i32 = and 4294967292:i32, %0
%2:i32 = srem 1:i32, %1
%3:i1 = eq 0:i32, %2
cand %3 0:i1

int a, c, d, e;
static int *b = &a;
void fn1() {
  a &= -4L;
  d = *b;
  e = 1 % d;
  if (e)
    c = 0;
}
Program 66:
; Function: fn1
%0:i32 = var 
%1:i1 = slt 0:i32, %0
%2:i32 = sext %1
%3:i32 = var 
%4:i1 = eq 0:i32, %3
%5:i32 = zext %4
%6:i1 = sle %2, %5
cand %6 1:i1

int a, b, c, d, e;
void fn1() {
  d = 0 < a;
  e = -d;
  c = (0 == b) >= e;
}
Program 1:
; Function: fn2
%0:i32 = var 
%1:i1 = eq 0:i32, %0
%2:i32 = var 
%3:i1 = eq 0:i32, %2
%4:i32 = zext %3
%5:i32 = xor %0, %4
%6:i1 = eq 8:i32, %5
%7:i1 = and %1, %6
cand %7 0:i1

int a, b, c, d;
int fn1(p1, p2) { return p1 == 8 && p2 == 0; }

void fn2() {
  c = a == 0;
  d = fn1(c ^ b, b);
}
Program 138:
; Function: fn1
%0:i32 = var 
%1:i1 = slt %0, 1:i32
%2:i32 = zext %1
%3:i1 = eq %0, %2
cand %3 0:i1

int a, c;
static int *b = &a;
void fn1() {
  int d = *b;
  c = 0 >= a == d;
}
Program 22:
; Function: fn1
%0:i32 = var 
%1:i1 = slt 0:i32, %0
pc %1 1:i1
%2:i32 = var 
%3:i1 = ne 0:i32, %2
%4:i1 = slt %2, %0
%5:i1 = or %3, %4
cand %5 1:i1

int a, b;
void fn1() {
  int c = 0;
  for (; c >= 0; c--)
    a = b > 0 && a || a < b ?: 0;
}
Program 696:
; Function: fn1
%0:i32 = var 
%1:i1 = ult 1:i32, %0
%2:i32 = shl %0, 1:i32
%3:i32 = select %1, 0:i32, %2
%4:i1 = ne 1:i32, %3
cand %4 1:i1

int a, b, c;
void fn1() {
  c = a >> 1 ? 0 : a << 1;
  b = c != 1;
}
Program 141:
; Function: fn1
%0:i32 = var 
%1:i32 = or 1:i32, %0
%2:i1 = sle %0, %1
cand %2 1:i1

int a, b;
void fn1() {
  int c = (b | 0 == 0) >= b;
  a = c;
}
Program 540:
; Function: fn1
%0:i32 = var 
%1:i32 = lshr %0, 31:i32
%2:i32 = xor 1:i32, %1
%3:i32 = udiv 2:i32, %2
%4:i1 = ne 0:i32, %3
cand %4 1:i1

int a, b;
void fn1() { b = 2 / (a >= 0) >= 1; }
Program 675:
; Function: fn1
%0:i32 = var 
%1:i1 = slt %0, 2:i32
pc %1 1:i1
%2:i32 = add 1:i32, %0
%3:i1 = slt 2:i32, %2
cand %3 0:i1

int a, b;
void fn1() {
  for (; b <= 1; b++)
    a = 0;
}
Program 51:
; Function: fn1
%0:i16 = var 
%1:i32 = sext %0
%2:i32 = and 4294959104:i32, %1
%3:i1 = ne 40960:i32, %2
cand %3 1:i1

short a;
int b;
void fn1() { b = a >> 13 != 5; }
Program 463:
; Function: fn1
%0:i32 = var 
%1:i1 = ne 0:i32, %0
%2:i32 = var 
%3:i1 = slt 0:i32, %2
%4:i1 = slt %2, 1:i32
%5:i1 = and %1, %3, %4
cand %5 0:i1

int a, b;
int fn1() { return a && b > 0 && b <= 0; }
Program 744:
; Function: fn2
%0:i32 = var 
%1:i32 = ashr 4294955978:i32, %0
%2:i1 = slt %1, 1:i32
cand %2 1:i1

int a;
void fn1(unsigned long long);
void fn2() { fn1(54218); }

void fn1(unsigned long long p1) {
  short b = p1;
  a = b >> a < 1;
}
Program 147:
; Function: fn2
%0:i32 = var 
%1:i32 = subnsw 0:i32, %0
%2:i32 = and %0, %1
%3:i1 = eq 14:i32, %2
cand %3 0:i1

int a, b;
static unsigned char fn1();
void fn2() { fn1(14); }

unsigned char fn1(p1) {
  for (;;) {
    b = a & -a;
    if (p1 ^ b)
      for (;;)
        ;
  }
}
Program 658:
; Function: fn1
%0:i32 = var 
%1:i1 = slt 0:i32, %0
pc %1 1:i1
%2:i32 = sub 0:i32, %0
%3:i1 = slt 4294967295:i32, %2
cand %3 0:i1

int a, b;
void fn1() {
  for (; a > 0; --a)
    b = 0;
}
Program 743:
; Function: fn1
%0:i32 = var 
%1:i64 = sext %0
%2:i64 = subnsw 2036854775807:i64, %1
%3:i1 = slt %2, 1:i64
cand %3 0:i1

int a, b;
void fn1() { b = 2036854775807 - a < 1; }
Program 497:
; Function: fn1
%0:i32 = var 
%1:i32 = sdiv 1:i32, %0
%2:i1 = eq 3:i32, %1
cand %2 0:i1

int a;
void fn1() { a = 1 / a == 3; }
Program 702:
; Function: fn1
%0:i32 = var 
%1:i1 = ne 0:i32, %0
%2:i32 = zext %1
%3:i32 = or 12:i32, %2
%4:i32 = urem 4:i32, %3
%5:i1 = ne 0:i32, %4
cand %5 1:i1

int a, b;
void fn1() { b = 4 % ((a || 0) | 12) || 0; }
Program 693:
; Function: fn1
%0:i16 = var 
%1:i32 = sext %0
%2:i32 = subnsw 37606:i32, %1
%3:i1 = slt %2, 1:i32
cand %3 0:i1

int a;
short b;
void fn1() { a = 0 >= 37606 - b; }
Program 298:
; Function: fn1
%0:i16 = var 
%1:i32 = sext %0
%2:i32 = addnsw 4294902868:i32, %1
%3:i1 = slt 0:i32, %2
cand %3 0:i1

short a;
int b;
void fn1() { b = a - 64428 >= 1; }
Program 202:
; Function: fn1
%0:i16 = var 
%1:i32 = sext %0
%2:i32 = sdiv 327671:i32, %1
%3:i1 = ne 0:i32, %2
cand %3 1:i1

short a;
int fn1() { return 327671 / a && 1; }
Program 440:
; Function: fn1
%0:i32 = var 
%1:i32 = sdiv 1:i32, %0
%2:i32 = or %0, %1
%3:i1 = ne 0:i32, %2
cand %3 1:i1

int a;
int fn1() { return 1 / a || a; }
Program 385:
; Function: fn1
%0:i32 = var 
%1:i1 = eq 0:i32, %0
%2:i32 = zext %1
%3:i32 = select %1, %2, %0
%4:i1 = eq 0:i32, %3
cand %4 0:i1

int a, b, c;
void fn1() {
  c = a == 0 ?: a;
  if (c)
    b = 0;
}
Program 140:
; Function: fn1
%0:i32 = var 
%1:i32 = lshr 1:i32, %0
%2:i1 = slt %1, 0:i32
cand %2 0:i1

int a, b, c;
void fn1() {
  c = 1 >> a;
  0 > c || (b = 0);
}
Program 537:
; Function: fn1
%0:i32 = var 
%1:i32 = srem 1:i32, %0
%2:i32 = lshr %1, 1:i32
%3:i1 = ne 0:i32, %2
cand %3 0:i1

int a;
void fn1() { a = 1 % a >> 1 ?: 1; }
Program 538:
; Function: fn1
%0:i16 = var 
%1:i1 = slt %0, 1:i16
pc %1 1:i1
%2:i16 = add 1:i16, %0
%3:i1 = slt 1:i16, %2
cand %3 0:i1

short a;
int b;
void fn1() {
  for (; a <= 0; a++)
    b = 0;
}
Program 296:
; Function: fn1
%0:i32 = var 
%1:i64 = sext %0
%2:i64 = sdiv 21474836471:i64, %1
%3:i1 = ne 0:i64, %2
cand %3 1:i1

int a;
int fn1() { return 21474836471 / a || 0; }
Program 341:
; Function: fn1
%0:i32 = var 
%1:i32 = subnsw 1:i32, %0
%2:i1 = ne %0, %1
cand %2 1:i1

int a;
int fn1() { return 1 - a ^ a ?: 1; }
Program 455:
; Function: fn1
%0:i32 = var 
%1:i32 = lshr 1:i32, %0
%2:i1 = ne 7:i32, %1
cand %2 1:i1

int a, b;
int fn1() {
  b = 1 >> a;
  if (b != 7)
    return 1;
  return 0;
}
Program 783:
; Function: fn1
%0:i32 = var 
%1:i1 = eq 0:i32, %0
%2:i32 = zext %1
%3:i32 = or %0, %2
%4:i1 = eq 0:i32, %3
cand %4 0:i1

int a, b;
void fn1() {
  b = a == 0;
  if (b | a)
    for (;;)
      ;
}
Program 448:
; Function: fn1
%0:i32 = var 
%1:i32 = srem 1:i32, %0
%2:i1 = ult 1:i32, %1
cand %2 0:i1

int a, b, c;
void fn1() {
  c = 1 % a;
  b = 1 < c;
}
Program 377:
; Function: fn1
%0:i8 = var 
%1:i32 = sext %0
%2:i32 = addnsw 4294967168:i32, %1
%3:i1 = ne 0:i32, %2
cand %3 1:i1

char a;
int fn1() { return a - 128 ?: 1; }
Program 354:
; Function: fn1
%0:i32 = var 
%1:i1 = slt %0, 0:i32
pc %1 1:i1
%2:i32 = subnsw 1:i32, %0
%3:i1 = slt 0:i32, %2
cand %3 1:i1

int a;
int fn1() { return a < 0 && 0 < 1 - a; }
Program 704:
; Function: fn1
%0:i8 = var 
%1:i32 = zext %0
%2:i32 = subnsw 0:i32, %1
%3:i1 = slt %2, 1:i32
cand %3 1:i1

unsigned char a;
int b;
void fn1() { b = 1 > -a; }
Program 17:
; Function: fn1
%0:i8 = var 
%1:i32 = sext %0
%2:i32 = sdiv 128:i32, %1
%3:i1 = ne 0:i32, %2
cand %3 1:i1

char a;
int fn1() { return 128 / a || 0; }
Program 304:
; Function: fn1
%0:i32 = var 
%1:i32 = lshr 1:i32, %0
%2:i1 = slt 1:i32, %1
cand %2 0:i1

int a;
void fn1() { a = 1 >> a > 1; }
Program 644:
; Function: main
%0:i32 = var 
%1:i1 = slt %0, 0:i32
pc %1 1:i1
%2:i32 = add 1:i32, %0
%3:i1 = slt 0:i32, %2
cand %3 0:i1

int a, b;
int main() {
  for (; b < 0; b++)
    a = 0;
  return 0;
}
Program 404:
; Function: fn1
%0:i32 = var 
%1:i1 = eq 0:i32, %0
%2:i32 = zext %1
%3:i32 = udiv 1:i32, %2
%4:i1 = eq 0:i32, %3
cand %4 0:i1

int a, b;
void fn1() { 1 / (b == 0) || (a = 0); }
Program 178:
; Function: fn1
%0:i32 = var 
%1:i32 = sdiv %0, 0:i32
%2:i1 = eq 0:i32, %1
cand %2 0:i1

int a, b;
void fn1() {
  int c = 0;
  b = a / c;
  if (b)
    for (;;)
      ;
}
Program 534:
; Function: fn1
%0:i32 = var 
%1:i32 = sdiv 1:i32, %0
%2:i1 = ne 4:i32, %1
cand %2 1:i1

int a;
void fn1() { a = 1 / a != 4; }
Program 587:
; Function: fn1
%0:i32 = var 
%1:i32 = sdiv 1:i32, %0
%2:i1 = slt 1:i32, %1
cand %2 0:i1

int a;
int fn1() { return 1 < 1 / a; }
Program 787:
; Function: fn1
%0:i32 = var 
%1:i32 = lshr 1:i32, %0
%2:i1 = eq 8:i32, %1
cand %2 0:i1

int a;
void fn1() { a = 1 >> a == 8; }
Program 75:
; Function: fn1
%0:i32 = var 
%1:i1 = eq 0:i32, %0
pc %1 1:i1
%2:i32 = addnsw 1:i32, %0
%3:i1 = slt %2, 6:i32
cand %3 1:i1

int a, b;
void fn1() {
  a = 0;
  for (; a <= 5; a++) {
    --b;
    if (a)
      goto lbl_16;
  }
lbl_16:
  ;
}
Program 621:
; Function: fn2
%0:i32 = var 
%1:i1 = ne 0:i32, %0
%2:i32 = zext %1
%3:i32 = lshr 5:i32, %2
%4:i1 = ne 0:i32, %3
cand %4 1:i1

int a, b;
int fn1(p1) { return 5 >> p1 ?: 1; }

void fn2() { b = fn1(0 || a); }
Program 80:
; Function: fn1
%0:i32 = var 
%1:i32 = lshr %0, 31:i32
%2:i32 = xor 1:i32, %1
%3:i32 = lshr 7:i32, %2
%4:i1 = ne 0:i32, %3
cand %4 1:i1

int a, b;
void fn1() { b = 0 || 7 >> (a >= 0); }
Program 198:
; Function: fn1
%0:i32 = var 
%1:i1 = ne 0:i32, %0
%2:i32 = select %1, %0, 1:i32
%3:i1 = eq 0:i32, %2
cand %3 0:i1

int a, b;
void fn1() {
  b = a ?: 1;
  for (; b;)
    ;
}
Program 367:
; Function: fn1
%0:i32 = var 
%1:i1 = slt 0:i32, %0
%2:i32 = zext %1
%3:i32 = udiv 1:i32, %2
%4:i1 = ne 0:i32, %3
cand %4 1:i1

int a, b, c;
void fn1() {
  b = a > 0;
  c = 1 / b ?: 1;
}
Program 123:
; Function: fn3
%0:i32 = var 
%1:i1 = eq 0:i32, %0
pc %1 0:i1
%2:i32 = var 
%3:i1 = ne 0:i32, %2
%4:i32 = zext %3
%5:i32 = select %3, %4, %0
%6:i1 = eq 0:i32, %5
cand %6 0:i1

int a, b;
int fn1() { return a && b ?: a; }

static int fn2() {
  for (;;) {
    int c = fn1();
    if (c)
      for (;;)
        ;
  }
}

void fn3() { fn2(); }
Program 574:
; Function: fn1
%0:i32 = var 
%1:i32 = srem %0, 2:i32
%2:i16 = trunc %1
%3:i1 = slt 2:i16, %2
cand %3 0:i1

int a;
short b;
void fn1() {
  b = a % 2;
  for (; b >= 3;)
    ;
}
Program 756:
; Function: fn1
%0:i32 = var 
%1:i1 = slt %0, 0:i32
pc %1 1:i1
%2:i32 = add 1:i32, %0
%3:i1 = slt 0:i32, %2
cand %3 0:i1

int a, b;
void fn1() {
  for (; b < 0; b++)
    a = 0;
}
Program 646:
; Function: fn1
%0:i32 = var 
%1:i32 = sdiv %0, 0:i32
%2:i1 = ne 0:i32, %1
cand %2 1:i1

int a, b;
void fn1() {
  int c = 0;
  b = a / c != 0;
}
Program 493:
; Function: fn1
%0:i32 = var 
%1:i64 = sext %0
%2:i64 = subnsw 2036854775807:i64, %1
%3:i1 = slt %2, 0:i64
cand %3 0:i1

int a;
int fn1() { return 2036854775807 - a < 0 ?: 0; }
Program 380:
; Function: fn2
%0:i32 = var 
%1:i1 = eq 0:i32, %0
%2:i32 = zext %1
%3:i32 = udiv 1:i32, %2
%4:i1 = eq 0:i32, %3
cand %4 0:i1

int a, b, c;
void fn1();
void fn2() { fn1(0 == a); }

void fn1(p1) {
  c = 1 / p1;
  if (c)
    b = 0;
}