1*9880d681SAndroid Build Coastguard Worker// RUN: llvm-mc -triple i386-unknown-unknown %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker// .exitm is encountered in a normal macro expansion 4*9880d681SAndroid Build Coastguard Worker.macro REP 5*9880d681SAndroid Build Coastguard Worker.rept 3 6*9880d681SAndroid Build Coastguard Worker.long 0 7*9880d681SAndroid Build Coastguard Worker.exitm 8*9880d681SAndroid Build Coastguard Worker.endr 9*9880d681SAndroid Build Coastguard Worker.endm 10*9880d681SAndroid Build Coastguard WorkerREP 11*9880d681SAndroid Build Coastguard Worker// Only the output from the first rept expansion should make it through: 12*9880d681SAndroid Build Coastguard Worker// CHECK: .long 0 13*9880d681SAndroid Build Coastguard Worker// CHECK-NOT: .long 0 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Worker// .exitm is in a true branch 16*9880d681SAndroid Build Coastguard Worker.macro A 17*9880d681SAndroid Build Coastguard Worker.if 1 18*9880d681SAndroid Build Coastguard Worker.long 1 19*9880d681SAndroid Build Coastguard Worker.exitm 20*9880d681SAndroid Build Coastguard Worker.endif 21*9880d681SAndroid Build Coastguard Worker.long 1 22*9880d681SAndroid Build Coastguard Worker.endm 23*9880d681SAndroid Build Coastguard WorkerA 24*9880d681SAndroid Build Coastguard Worker// CHECK: .long 1 25*9880d681SAndroid Build Coastguard Worker// CHECK-NOT: .long 1 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Worker// .exitm is in a false branch 28*9880d681SAndroid Build Coastguard Worker.macro B 29*9880d681SAndroid Build Coastguard Worker.if 1 30*9880d681SAndroid Build Coastguard Worker.long 2 31*9880d681SAndroid Build Coastguard Worker.else 32*9880d681SAndroid Build Coastguard Worker.exitm 33*9880d681SAndroid Build Coastguard Worker.endif 34*9880d681SAndroid Build Coastguard Worker.long 2 35*9880d681SAndroid Build Coastguard Worker.endm 36*9880d681SAndroid Build Coastguard WorkerB 37*9880d681SAndroid Build Coastguard Worker// CHECK: .long 2 38*9880d681SAndroid Build Coastguard Worker// CHECK: .long 2 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Worker 41*9880d681SAndroid Build Coastguard Worker// .exitm is in a false branch that is encountered prior to the true branch 42*9880d681SAndroid Build Coastguard Worker.macro C 43*9880d681SAndroid Build Coastguard Worker.if 0 44*9880d681SAndroid Build Coastguard Worker.exitm 45*9880d681SAndroid Build Coastguard Worker.else 46*9880d681SAndroid Build Coastguard Worker.long 3 47*9880d681SAndroid Build Coastguard Worker.endif 48*9880d681SAndroid Build Coastguard Worker.long 3 49*9880d681SAndroid Build Coastguard Worker.endm 50*9880d681SAndroid Build Coastguard WorkerC 51*9880d681SAndroid Build Coastguard Worker// CHECK: .long 3 52*9880d681SAndroid Build Coastguard Worker// CHECK: .long 3 53*9880d681SAndroid Build Coastguard Worker 54*9880d681SAndroid Build Coastguard Worker// .exitm is in a macro that's expanded in a conditional block. 55*9880d681SAndroid Build Coastguard Worker.macro D 56*9880d681SAndroid Build Coastguard Worker.long 4 57*9880d681SAndroid Build Coastguard Worker.exitm 58*9880d681SAndroid Build Coastguard Worker.long 4 59*9880d681SAndroid Build Coastguard Worker.endm 60*9880d681SAndroid Build Coastguard Worker.if 1 61*9880d681SAndroid Build Coastguard WorkerD 62*9880d681SAndroid Build Coastguard Worker.endif 63*9880d681SAndroid Build Coastguard Worker// CHECK: .long 4 64*9880d681SAndroid Build Coastguard Worker// CHECK-NOT: .long 4 65