From: Jinsong Ji Date: Mon, 1 Jul 2019 14:37:48 +0000 (+0000) Subject: [UpdateTestChecks][PowerPC] Avoid empty string when scrubbing loop comments X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=da6a17a7a12a089863aba4356c6f9d54747c6316;p=llvm [UpdateTestChecks][PowerPC] Avoid empty string when scrubbing loop comments Summary: SCRUB_LOOP_COMMENT_RE was introduced in https://reviews.llvm.org/D31285 This works for some loops. However, we may generate lines with loop comments only. And since we don't scrub leading white spaces, this will leave an empty line there, and FileCheck will complain it. eg: llvm/test/CodeGen/PowerPC/PR35812-neg-cmpxchg.ll:27:15: error: found empty check string with prefix 'CHECK:' ; CHECK-NEXT: This prevented us from using the `update_llc_test_checks.py` for quite some cases. We should still keep the comment token there, so that we can safely scrub the loop comment without breaking FileCheck. Reviewers: timshen, hfinkel, lebedev.ri, RKSimon Subscribers: nemanjai, jfb, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D63957 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@364775 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/CodeGen/PowerPC/PR35812-neg-cmpxchg.ll b/test/CodeGen/PowerPC/PR35812-neg-cmpxchg.ll index aa0e1fc1f39..5ecce5ed4d9 100644 --- a/test/CodeGen/PowerPC/PR35812-neg-cmpxchg.ll +++ b/test/CodeGen/PowerPC/PR35812-neg-cmpxchg.ll @@ -10,61 +10,133 @@ define signext i32 @main() { ; CHECK-LABEL: main: -; CHECK: li 3, -32477 -; CHECK: li 6, 234 -; CHECK: sth 3, 46(1) -; CHECK: lis 3, 0 -; CHECK: ori 4, 3, 33059 -; CHECK: sync -; CHECK: .LBB0_1: # %L.entry -; CHECK: lharx 3, 0, 5 -; CHECK: cmpw 4, 3 -; CHECK: bne 0, .LBB0_3 -; CHECK: sthcx. 6, 0, 5 -; CHECK: bne 0, .LBB0_1 -; CHECK: b .LBB0_4 -; CHECK: .LBB0_3: # %L.entry -; CHECK: sthcx. 3, 0, 5 -; CHECK: .LBB0_4: # %L.entry -; CHECK: cmplwi 3, 33059 -; CHECK: lwsync -; CHECK: lhz 3, 46(1) -; CHECK: cmplwi 3, 234 +; CHECK: # %bb.0: # %L.entry +; CHECK-NEXT: mflr 0 +; CHECK-NEXT: std 0, 16(1) +; CHECK-NEXT: stdu 1, -48(1) +; CHECK-NEXT: .cfi_def_cfa_offset 48 +; CHECK-NEXT: .cfi_offset lr, 16 +; CHECK-NEXT: li 3, -32477 +; CHECK-NEXT: li 6, 234 +; CHECK-NEXT: addi 5, 1, 46 +; CHECK-NEXT: sth 3, 46(1) +; CHECK-NEXT: lis 3, 0 +; CHECK-NEXT: ori 4, 3, 33059 +; CHECK-NEXT: sync +; CHECK-NEXT: .LBB0_1: # %L.entry +; CHECK-NEXT: # +; CHECK-NEXT: lharx 3, 0, 5 +; CHECK-NEXT: cmpw 4, 3 +; CHECK-NEXT: bne 0, .LBB0_3 +; CHECK-NEXT: # %bb.2: # %L.entry +; CHECK-NEXT: # +; CHECK-NEXT: sthcx. 6, 0, 5 +; CHECK-NEXT: bne 0, .LBB0_1 +; CHECK-NEXT: b .LBB0_4 +; CHECK-NEXT: .LBB0_3: # %L.entry +; CHECK-NEXT: sthcx. 3, 0, 5 +; CHECK-NEXT: .LBB0_4: # %L.entry +; CHECK-NEXT: cmplwi 3, 33059 +; CHECK-NEXT: lwsync +; CHECK-NEXT: bne 0, .LBB0_7 +; CHECK-NEXT: # %bb.5: # %L.B0000 +; CHECK-NEXT: lhz 3, 46(1) +; CHECK-NEXT: cmplwi 3, 234 +; CHECK-NEXT: bne 0, .LBB0_8 +; CHECK-NEXT: # %bb.6: # %L.B0001 +; CHECK-NEXT: addis 3, 2, .Lstr.2@toc@ha +; CHECK-NEXT: addi 3, 3, .Lstr.2@toc@l +; CHECK-NEXT: bl puts +; CHECK-NEXT: nop +; CHECK-NEXT: li 3, 0 +; CHECK-NEXT: b .LBB0_10 +; CHECK-NEXT: .LBB0_7: # %L.B0003 +; CHECK-NEXT: addis 3, 2, .Lstr@toc@ha +; CHECK-NEXT: addi 3, 3, .Lstr@toc@l +; CHECK-NEXT: b .LBB0_9 +; CHECK-NEXT: .LBB0_8: # %L.B0005 +; CHECK-NEXT: addis 3, 2, .Lstr.1@toc@ha +; CHECK-NEXT: addi 3, 3, .Lstr.1@toc@l +; CHECK-NEXT: .LBB0_9: # %L.B0003 +; CHECK-NEXT: bl puts +; CHECK-NEXT: nop +; CHECK-NEXT: li 3, 1 +; CHECK-NEXT: .LBB0_10: # %L.B0003 +; CHECK-NEXT: addi 1, 1, 48 +; CHECK-NEXT: ld 0, 16(1) +; CHECK-NEXT: mtlr 0 +; CHECK-NEXT: blr ; ; CHECK-P7-LABEL: main: -; CHECK-P7: li 3, -32477 -; CHECK-P7: lis 5, 0 -; CHECK-P7: li 7, 0 -; CHECK-P7: sth 3, 46(1) -; CHECK-P7: li 6, 234 -; CHECK-P7: ori 5, 5, 33059 -; CHECK-P7: rlwinm 3, 4, 3, 27, 27 -; CHECK-P7: ori 7, 7, 65535 -; CHECK-P7: sync -; CHECK-P7: slw 6, 6, 3 -; CHECK-P7: slw 8, 5, 3 -; CHECK-P7: slw 5, 7, 3 -; CHECK-P7: rldicr 4, 4, 0, 61 -; CHECK-P7: and 7, 6, 5 -; CHECK-P7: and 8, 8, 5 -; CHECK-P7: .LBB0_1: # %L.entry -; CHECK-P7: lwarx 9, 0, 4 -; CHECK-P7: and 6, 9, 5 -; CHECK-P7: cmpw 6, 8 -; CHECK-P7: bne 0, .LBB0_3 -; CHECK-P7: andc 9, 9, 5 -; CHECK-P7: or 9, 9, 7 -; CHECK-P7: stwcx. 9, 0, 4 -; CHECK-P7: bne 0, .LBB0_1 -; CHECK-P7: b .LBB0_4 -; CHECK-P7: .LBB0_3: # %L.entry -; CHECK-P7: stwcx. 9, 0, 4 -; CHECK-P7: .LBB0_4: # %L.entry -; CHECK-P7: srw 3, 6, 3 -; CHECK-P7: lwsync -; CHECK-P7: cmplwi 3, 33059 -; CHECK-P7: lhz 3, 46(1) -; CHECK-P7: cmplwi 3, 234 +; CHECK-P7: # %bb.0: # %L.entry +; CHECK-P7-NEXT: mflr 0 +; CHECK-P7-NEXT: std 0, 16(1) +; CHECK-P7-NEXT: stdu 1, -48(1) +; CHECK-P7-NEXT: .cfi_def_cfa_offset 48 +; CHECK-P7-NEXT: .cfi_offset lr, 16 +; CHECK-P7-NEXT: li 3, -32477 +; CHECK-P7-NEXT: lis 5, 0 +; CHECK-P7-NEXT: addi 4, 1, 46 +; CHECK-P7-NEXT: li 7, 0 +; CHECK-P7-NEXT: sth 3, 46(1) +; CHECK-P7-NEXT: li 6, 234 +; CHECK-P7-NEXT: ori 5, 5, 33059 +; CHECK-P7-NEXT: rlwinm 3, 4, 3, 27, 27 +; CHECK-P7-NEXT: ori 7, 7, 65535 +; CHECK-P7-NEXT: sync +; CHECK-P7-NEXT: slw 6, 6, 3 +; CHECK-P7-NEXT: slw 8, 5, 3 +; CHECK-P7-NEXT: slw 5, 7, 3 +; CHECK-P7-NEXT: rldicr 4, 4, 0, 61 +; CHECK-P7-NEXT: and 7, 6, 5 +; CHECK-P7-NEXT: and 8, 8, 5 +; CHECK-P7-NEXT: .LBB0_1: # %L.entry +; CHECK-P7-NEXT: # +; CHECK-P7-NEXT: lwarx 9, 0, 4 +; CHECK-P7-NEXT: and 6, 9, 5 +; CHECK-P7-NEXT: cmpw 6, 8 +; CHECK-P7-NEXT: bne 0, .LBB0_3 +; CHECK-P7-NEXT: # %bb.2: # %L.entry +; CHECK-P7-NEXT: # +; CHECK-P7-NEXT: andc 9, 9, 5 +; CHECK-P7-NEXT: or 9, 9, 7 +; CHECK-P7-NEXT: stwcx. 9, 0, 4 +; CHECK-P7-NEXT: bne 0, .LBB0_1 +; CHECK-P7-NEXT: b .LBB0_4 +; CHECK-P7-NEXT: .LBB0_3: # %L.entry +; CHECK-P7-NEXT: stwcx. 9, 0, 4 +; CHECK-P7-NEXT: .LBB0_4: # %L.entry +; CHECK-P7-NEXT: srw 3, 6, 3 +; CHECK-P7-NEXT: lwsync +; CHECK-P7-NEXT: cmplwi 3, 33059 +; CHECK-P7-NEXT: bne 0, .LBB0_7 +; CHECK-P7-NEXT: # %bb.5: # %L.B0000 +; CHECK-P7-NEXT: lhz 3, 46(1) +; CHECK-P7-NEXT: cmplwi 3, 234 +; CHECK-P7-NEXT: bne 0, .LBB0_8 +; CHECK-P7-NEXT: # %bb.6: # %L.B0001 +; CHECK-P7-NEXT: addis 3, 2, .Lstr.2@toc@ha +; CHECK-P7-NEXT: addi 3, 3, .Lstr.2@toc@l +; CHECK-P7-NEXT: bl puts +; CHECK-P7-NEXT: nop +; CHECK-P7-NEXT: li 3, 0 +; CHECK-P7-NEXT: b .LBB0_10 +; CHECK-P7-NEXT: .LBB0_7: # %L.B0003 +; CHECK-P7-NEXT: addis 3, 2, .Lstr@toc@ha +; CHECK-P7-NEXT: addi 3, 3, .Lstr@toc@l +; CHECK-P7-NEXT: b .LBB0_9 +; CHECK-P7-NEXT: .LBB0_8: # %L.B0005 +; CHECK-P7-NEXT: addis 3, 2, .Lstr.1@toc@ha +; CHECK-P7-NEXT: addi 3, 3, .Lstr.1@toc@l +; CHECK-P7-NEXT: .LBB0_9: # %L.B0003 +; CHECK-P7-NEXT: bl puts +; CHECK-P7-NEXT: nop +; CHECK-P7-NEXT: li 3, 1 +; CHECK-P7-NEXT: .LBB0_10: # %L.B0003 +; CHECK-P7-NEXT: addi 1, 1, 48 +; CHECK-P7-NEXT: ld 0, 16(1) +; CHECK-P7-NEXT: mtlr 0 +; CHECK-P7-NEXT: blr L.entry: %value.addr = alloca i16, align 2 store i16 -32477, i16* %value.addr, align 2 diff --git a/utils/UpdateTestChecks/asm.py b/utils/UpdateTestChecks/asm.py index ab649497e8a..2dc174e0b4d 100644 --- a/utils/UpdateTestChecks/asm.py +++ b/utils/UpdateTestChecks/asm.py @@ -215,8 +215,8 @@ def scrub_asm_powerpc(asm, args): asm = common.SCRUB_WHITESPACE_RE.sub(r' ', asm) # Expand the tabs used for indentation. asm = string.expandtabs(asm, 2) - # Stripe unimportant comments - asm = SCRUB_LOOP_COMMENT_RE.sub(r'', asm) + # Stripe unimportant comments, but leave the token '#' in place. + asm = SCRUB_LOOP_COMMENT_RE.sub(r'#', asm) # Strip trailing whitespace. asm = common.SCRUB_TRAILING_WHITESPACE_RE.sub(r'', asm) return asm