diff options
author | Simon Atanasyan <simon@atanasyan.com> | 2019-10-30 19:52:16 +0300 |
---|---|---|
committer | Simon Atanasyan <simon@atanasyan.com> | 2019-11-01 09:42:48 +0300 |
commit | a8a89c77ea3c16b45763fca6940bbfd3bef7884f (patch) | |
tree | cae4f9d2687502e387ff47f54fbceb4db1d92b20 | |
parent | 622176705550d5af5e2837f4b2188ce9f7590887 (diff) | |
download | bcm5719-llvm-a8a89c77ea3c16b45763fca6940bbfd3bef7884f.tar.gz bcm5719-llvm-a8a89c77ea3c16b45763fca6940bbfd3bef7884f.zip |
[utils] Reflow asm check generation to tolerate blank lines
This change introduces two fixes. The second fix allows to generate
a test to check the first fix.
- Output `CHECK-EMPTY` prefix for an empty line in ASM output. Before that
fix `update_llc_test_checks.py` incorrectly emits `CHECK-NEXT: <space>`
prefix.
- Fix the `ASM_FUNCTION_MIPS_RE` regex to stop on a real function
epilogue not on an inline assembler prologue and include inline
assembler code into a test.
Differential Revision: https://reviews.llvm.org/D47192
-rw-r--r-- | llvm/test/CodeGen/Mips/inlineasm-constraint-reg64.ll | 19 | ||||
-rw-r--r-- | llvm/utils/UpdateTestChecks/asm.py | 3 | ||||
-rw-r--r-- | llvm/utils/UpdateTestChecks/common.py | 5 |
3 files changed, 22 insertions, 5 deletions
diff --git a/llvm/test/CodeGen/Mips/inlineasm-constraint-reg64.ll b/llvm/test/CodeGen/Mips/inlineasm-constraint-reg64.ll index 3b078d6f70d..ae0504980cc 100644 --- a/llvm/test/CodeGen/Mips/inlineasm-constraint-reg64.ll +++ b/llvm/test/CodeGen/Mips/inlineasm-constraint-reg64.ll @@ -1,3 +1,4 @@ +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py ; ; Register constraint "r" shouldn't take long long unless ; The target is 64 bit. @@ -7,13 +8,25 @@ define i32 @main() nounwind { +; CHECK-LABEL: main: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: daddiu $1, $zero, 7 +; CHECK-NEXT: #APP +; CHECK-NEXT: .set push +; CHECK-NEXT: .set at +; CHECK-NEXT: .set macro +; CHECK-NEXT: .set reorder +; CHECK-EMPTY: +; CHECK-NEXT: addiu $1, $1, 3 +; CHECK-EMPTY: +; CHECK-NEXT: .set pop +; CHECK-NEXT: #NO_APP +; CHECK-NEXT: jr $ra +; CHECK-NEXT: addiu $2, $zero, 0 entry: ; r with long long -;CHECK: #APP -;CHECK: addiu ${{[0-9]+}}, ${{[0-9]+}}, 3 -;CHECK: #NO_APP tail call i64 asm sideeffect "addiu $0, $1, $2", "=r,r,i"(i64 7, i64 3) nounwind ret i32 0 } diff --git a/llvm/utils/UpdateTestChecks/asm.py b/llvm/utils/UpdateTestChecks/asm.py index 2c9f4d9c506..06f8a22ad45 100644 --- a/llvm/utils/UpdateTestChecks/asm.py +++ b/llvm/utils/UpdateTestChecks/asm.py @@ -53,7 +53,8 @@ ASM_FUNCTION_MIPS_RE = re.compile( r'^_?(?P<func>[^:]+):[ \t]*#+[ \t]*@(?P=func)\n[^:]*?' # f: (name of func) r'(?:^[ \t]+\.(frame|f?mask|set).*?\n)+' # Mips+LLVM standard asm prologue r'(?P<body>.*?)\n' # (body of the function) - r'(?:^[ \t]+\.(set|end).*?\n)+' # Mips+LLVM standard asm epilogue + # Mips+LLVM standard asm epilogue + r'(?:(^[ \t]+\.set[^\n]*?\n)*^[ \t]+\.end.*?\n)' r'(\$|\.L)func_end[0-9]+:\n', # $func_end0: (mips32 - O32) or # .Lfunc_end0: (mips64 - NewABI) flags=(re.M | re.S)) diff --git a/llvm/utils/UpdateTestChecks/common.py b/llvm/utils/UpdateTestChecks/common.py index 76b9d4e80c9..9da8619915b 100644 --- a/llvm/utils/UpdateTestChecks/common.py +++ b/llvm/utils/UpdateTestChecks/common.py @@ -260,7 +260,10 @@ def add_checks(output_lines, comment_marker, prefix_list, func_dict, func_name, if is_asm: output_lines.append('%s %s: %s' % (comment_marker, checkprefix, func_body[0])) for func_line in func_body[1:]: - output_lines.append('%s %s-NEXT: %s' % (comment_marker, checkprefix, func_line)) + if func_line.strip() == '': + output_lines.append('%s %s-EMPTY:' % (comment_marker, checkprefix)) + else: + output_lines.append('%s %s-NEXT: %s' % (comment_marker, checkprefix, func_line)) break # For IR output, change all defs to FileCheck variables, so we're immune |