1*67e74705SXin Li // RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s 2*67e74705SXin Li // Check that no empty blocks are generated for nested ifs. 3*67e74705SXin Li 4*67e74705SXin Li extern void func(); 5*67e74705SXin Li f0(int val)6*67e74705SXin Liint f0(int val) { 7*67e74705SXin Li if (val == 0) { 8*67e74705SXin Li func(); 9*67e74705SXin Li } else if (val == 1) { 10*67e74705SXin Li func(); 11*67e74705SXin Li } 12*67e74705SXin Li return 0; 13*67e74705SXin Li } 14*67e74705SXin Li 15*67e74705SXin Li // CHECK-LABEL: define {{.*}}i32 @f0 16*67e74705SXin Li // CHECK: call void {{.*}} @func 17*67e74705SXin Li // CHECK: call void {{.*}} @func 18*67e74705SXin Li // CHECK: br label %[[RETBLOCK1:[^ ]*]] 19*67e74705SXin Li // CHECK: [[RETBLOCK1]]: 20*67e74705SXin Li // CHECK-NOT: br label 21*67e74705SXin Li // CHECK: ret i32 22*67e74705SXin Li f1(int val,int g)23*67e74705SXin Liint f1(int val, int g) { 24*67e74705SXin Li if (val == 0) 25*67e74705SXin Li if (g == 1) { 26*67e74705SXin Li func(); 27*67e74705SXin Li } 28*67e74705SXin Li return 0; 29*67e74705SXin Li } 30*67e74705SXin Li 31*67e74705SXin Li // CHECK-LABEL: define {{.*}}i32 @f1 32*67e74705SXin Li // CHECK: call void {{.*}} @func 33*67e74705SXin Li // CHECK: br label %[[RETBLOCK2:[^ ]*]] 34*67e74705SXin Li // CHECK: [[RETBLOCK2]]: 35*67e74705SXin Li // CHECK-NOT: br label 36*67e74705SXin Li // CHECK: ret i32 37