Optimization LLVM if-else优化

Optimization LLVM if-else优化,optimization,clang,llvm,Optimization,Clang,Llvm,LLVM会从这样的代码中删除未使用的else吗 if (some_var) { some_var++; } else { // i will do some day something here } 因此,如果有人怀疑clang在优化方面发挥了巨大的魔力,那么可以使用以下方法检查: clang -c -mllvm -print-after-all -O2 test.c 对于以下代码,我得到了以下IR优化代码: int a(int b) { int i = 2; if (b&g

LLVM会从这样的代码中删除未使用的else吗

if (some_var) {
  some_var++;
}
else {
  // i will do some day something here
}

因此,如果有人怀疑clang在优化方面发挥了巨大的魔力,那么可以使用以下方法检查:

clang -c -mllvm -print-after-all -O2 test.c
对于以下代码,我得到了以下IR优化代码:

int a(int b) {
  int i = 2;
  if (b>=i) {
    b++;
  }
  else{
  }
  return b;
}

define i32 @a(i32 %b) #0 {
  %1 = icmp sgt i32 %b, 1
  %2 = zext i1 %1 to i32
  %.b = add nsw i32 %2, %b
  ret i32 %.b
}


int a(int b) {
  int i = 2;
  if (b>=i) {
    b++;
  }
  else{
    b--;
  }
  return b;
}

define i32 @a(i32 %b) #0 {
  %1 = icmp sgt i32 %b, 1
  %.0.v = select i1 %1, i32 1, i32 -1
  %.0 = add i32 %.0.v, %b
  ret i32 %.0
}
这意味着它会删除其他未使用的内容