brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.4 KiB · ff8491e Raw
174 lines · c
1// RUN: %clang_cc1 -Wno-gcc-compat -emit-llvm -o - %s | FileCheck %s2 3void pr8880_cg_1(int *iptr) {4// CHECK-LABEL: define {{.*}}void @pr8880_cg_1(5  int i, j;6// CHECK: br label %[[OUTER_COND:[0-9A-Za-z$._]+]]7  for (i = 2; i != 10 ; i++ )8// CHECK: [[OUTER_COND]]9// CHECK: label %[[OUTER_BODY:[0-9A-Za-z$._]+]], label %[[OUTER_END:[0-9A-Za-z$._]+]]10// CHECK: [[OUTER_BODY]]11// CHECK: br label %[[INNER_COND:[0-9A-Za-z$._]+]]12    for (j = 3 ; j < 22; (void)({ ++j; break; j;})) {13// CHECK: [[INNER_COND]]14// CHECK: label %[[INNER_BODY:[0-9A-Za-z$._]+]], label %[[INNER_END:[0-9A-Za-z$._]+]]15// CHECK: [[INNER_BODY]]16      *iptr = 7;17// CHECK: store i32 7,18// CHECK: br label %[[INNER_INC:[0-9A-Za-z$._]+]]19// CHECK: [[INNER_INC]]20 21// break in 3rd expression of inner loop causes branch to end of inner loop22 23// CHECK: br label %[[INNER_END:[0-9A-Za-z$._]+]]24// CHECK: [[INNER_END]]25    }26// CHECK: br label %[[OUTER_INC:[0-9A-Za-z$._]+]]27// CHECK: [[OUTER_INC]]28// CHECK: br label %[[OUTER_COND]]29// CHECK: [[OUTER_END]]30// CHECK: ret31}32 33void pr8880_cg_2(int *iptr) {34// CHECK-LABEL: define {{.*}}void @pr8880_cg_2(35  int i, j;36// CHECK: br label %[[OUTER_COND:[0-9A-Za-z$._]+]]37  for (i = 2; i != 10 ; i++ )38// CHECK: [[OUTER_COND]]39// CHECK: label %[[OUTER_BODY:[0-9A-Za-z$._]+]], label %[[OUTER_END:[0-9A-Za-z$._]+]]40// CHECK: [[OUTER_BODY]]41// CHECK: br label %[[INNER_COND:[0-9A-Za-z$._]+]]42    for (j = 3 ; j < 22; (void)({ ++j; continue; j;})) {43// CHECK: [[INNER_COND]]44// CHECK: label %[[INNER_BODY:[0-9A-Za-z$._]+]], label %[[INNER_END:[0-9A-Za-z$._]+]]45// CHECK: [[INNER_BODY]]46      *iptr = 7;47// CHECK: store i32 7,48// CHECK: br label %[[INNER_INC:[0-9A-Za-z$._]+]]49// CHECK: [[INNER_INC]]50 51// continue in 3rd expression of inner loop causes branch to inc of inner loop52 53// CHECK: br label %[[INNER_INC]]54// CHECK: [[INNER_END]]55    }56// CHECK: br label %[[OUTER_INC:[0-9A-Za-z$._]+]]57// CHECK: [[OUTER_INC]]58// CHECK: br label %[[OUTER_COND]]59// CHECK: [[OUTER_END]]60// CHECK: ret61}62 63void pr8880_cg_3(int *iptr) {64// CHECK-LABEL: define {{.*}}void @pr8880_cg_3(65  int i, j;66// CHECK: br label %[[OUTER_COND:[0-9A-Za-z$._]+]]67  for (i = 2 ; i != 10 ; i++ )68// CHECK: [[OUTER_COND]]69// CHECK: label %[[OUTER_BODY:[0-9A-Za-z$._]+]], label %[[OUTER_END:[0-9A-Za-z$._]+]]70// CHECK: [[OUTER_BODY]]71// CHECK: br label %[[INNER_COND:[0-9A-Za-z$._]+]]72    for (j = 3 ; ({break; j;}); j++) {73 74// break in 2nd expression of inner loop causes branch to end of inner loop75 76// CHECK: [[INNER_COND]]77// CHECK: br label %[[INNER_END:[0-9A-Za-z$._]+]]78// CHECK: label %[[INNER_BODY:[0-9A-Za-z$._]+]], label %[[INNER_END:[0-9A-Za-z$._]+]]79// CHECK: [[INNER_BODY]]80      *iptr = 7;81// CHECK: store i32 7,82// CHECK: br label %[[INNER_INC:[0-9A-Za-z$._]+]]83// CHECK: [[INNER_INC]]84// CHECK: br label %[[INNER_COND]]85    }86// CHECK: [[INNER_END]]87// CHECK: br label %[[OUTER_INC:[0-9A-Za-z$._]+]]88// CHECK: [[OUTER_INC]]89// CHECK: br label %[[OUTER_COND]]90// CHECK: [[OUTER_END]]91// CHECK: ret92}93 94void pr8880_cg_4(int *iptr) {95// CHECK-LABEL: define {{.*}}void @pr8880_cg_4(96  int i, j;97// CHECK: br label %[[OUTER_COND:[0-9A-Za-z$._]+]]98  for (i = 2 ; i != 10 ; i++ )99// CHECK: [[OUTER_COND]]100// CHECK: label %[[OUTER_BODY:[0-9A-Za-z$._]+]], label %[[OUTER_END:[0-9A-Za-z$._]+]]101// CHECK: [[OUTER_BODY]]102// CHECK: br label %[[INNER_COND:[0-9A-Za-z$._]+]]103    for (j = 3 ; ({continue; j;}); j++) {104 105// continue in 2nd expression of inner loop causes branch to inc of inner loop106 107// CHECK: [[INNER_COND]]108// CHECK: br label %[[INNER_INC:[0-9A-Za-z$._]+]]109// CHECK: label %[[INNER_BODY:[0-9A-Za-z$._]+]], label %[[INNER_END:[0-9A-Za-z$._]+]]110// CHECK: [[INNER_BODY]]111      *iptr = 7;112// CHECK: store i32 7,113// CHECK: br label %[[INNER_INC]]114// CHECK: [[INNER_INC]]115// CHECK: br label %[[INNER_COND]]116    }117// CHECK: [[INNER_END]]118// CHECK: br label %[[OUTER_INC:[0-9A-Za-z$._]+]]119// CHECK: [[OUTER_INC]]120// CHECK: br label %[[OUTER_COND]]121// CHECK: [[OUTER_END]]122// CHECK: ret123}124 125void pr8880_cg_5(int x, int *iptr) {126// CHECK-LABEL: define {{.*}}void @pr8880_cg_5(127  int y = 5;128// CHECK: br label %[[OUTER_COND:[0-9A-Za-z$._]+]]129// CHECK: [[OUTER_COND]]130  while(--x) {131// CHECK: label %[[OUTER_BODY:[0-9A-Za-z$._]+]], label %[[OUTER_END:[0-9A-Za-z$._]+]]132// CHECK: [[OUTER_BODY]]133// CHECK: br label %[[INNER_COND:[0-9A-Za-z$._]+]]134    while(({ break; --y; })) {135// CHECK: [[INNER_COND]]136// CHECK: br label %[[INNER_END:[0-9A-Za-z$._]+]]137// CHECK: label %[[INNER_BODY:[0-9A-Za-z$._]+]], label %[[INNER_END:[0-9A-Za-z$._]+]]138// CHECK: [[INNER_BODY]]139      *iptr = 7;140// CHECK: store i32 7,141    }142// CHECK: br label %[[INNER_COND]]143  }144// CHECK: [[INNER_END]]145// CHECK: br label %[[OUTER_COND]]146// CHECK: [[OUTER_END]]147// CHECK: ret void148}149 150void pr8880_cg_6(int x, int *iptr) {151// CHECK-LABEL: define {{.*}}void @pr8880_cg_6(152  int y = 5;153// CHECK: br label %[[OUTER_COND:[0-9A-Za-z$._]+]]154// CHECK: [[OUTER_COND]]155  while(--x) {156// CHECK: label %[[OUTER_BODY:[0-9A-Za-z$._]+]], label %[[OUTER_END:[0-9A-Za-z$._]+]]157// CHECK: [[OUTER_BODY]]158// CHECK: br label %[[INNER_BODY:[0-9A-Za-z$._]+]]159// CHECK: [[INNER_BODY]]160    do {161// CHECK: store i32 7,162      *iptr = 7;163// CHECK: br label %[[INNER_COND:[0-9A-Za-z$._]+]]164    } while(({ break; --y; }));165// CHECK: [[INNER_COND]]166// CHECK: br label %[[INNER_END:[0-9A-Za-z$._]+]]167// CHECK: label %[[INNER_BODY:[0-9A-Za-z$._]+]], label %[[INNER_END]]168  }169// CHECK: [[INNER_END]]170// CHECK: br label %[[OUTER_COND]]171// CHECK: [[OUTER_END]]172// CHECK: ret void173}174