137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// RUN: llvm-mc -triple i386-unknown-unknown %s | FileCheck %s
237ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines
337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// .exitm is encountered in a normal macro expansion
437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.macro REP
537ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.rept 3
637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.long 0
737ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.exitm
837ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.endr
937ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.endm
1037ed9c199ca639565f6ce88105f9e39e898d82d0Stephen HinesREP
1137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// Only the output from the first rept expansion should make it through:
1237ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// CHECK: .long 0
1337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// CHECK-NOT: .long 0
1437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines
1537ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// .exitm is in a true branch
1637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.macro A
1737ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.if 1
1837ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.long 1
1937ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.exitm
2037ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.endif
2137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.long 1
2237ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.endm
2337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen HinesA
2437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// CHECK: .long 1
2537ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// CHECK-NOT: .long 1
2637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines
2737ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// .exitm is in a false branch
2837ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.macro B
2937ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.if 1
3037ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.long 2
3137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.else
3237ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.exitm
3337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.endif
3437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.long 2
3537ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.endm
3637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen HinesB
3737ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// CHECK: .long 2
3837ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// CHECK: .long 2
3937ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines
4037ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines
4137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// .exitm is in a false branch that is encountered prior to the true branch
4237ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.macro C
4337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.if 0
4437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.exitm
4537ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.else
4637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.long 3
4737ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.endif
4837ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.long 3
4937ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.endm
5037ed9c199ca639565f6ce88105f9e39e898d82d0Stephen HinesC
5137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// CHECK: .long 3
5237ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// CHECK: .long 3
5337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines
5437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// .exitm is in a macro that's expanded in a conditional block.
5537ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.macro D
5637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.long 4
5737ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.exitm
5837ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.long 4
5937ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.endm
6037ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.if 1
6137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen HinesD
6237ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines.endif
6337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// CHECK: .long 4
6437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines// CHECK-NOT: .long 4
65