mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-04-02 15:51:54 +00:00
[Utils] Allow update_test_checks to scrub attribute annotations
Attribute annotations on calls, e.g., #0, are not useful on their own. This patch adds a flag to update_test_checks.py to scrub them. Reviewed By: lebedev.ri Differential Revision: https://reviews.llvm.org/D68851
This commit is contained in:
parent
36a442d503
commit
ab978d2cdd
@ -0,0 +1,8 @@
|
||||
; RUN: opt -S < %s | FileCheck %s
|
||||
|
||||
declare void @foo()
|
||||
|
||||
define internal void @bar() {
|
||||
call void @foo() readnone
|
||||
ret void
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt -S < %s | FileCheck %s
|
||||
|
||||
declare void @foo()
|
||||
|
||||
define internal void @bar() {
|
||||
; CHECK-LABEL: @bar(
|
||||
; CHECK-NEXT: call void @foo() #0
|
||||
; CHECK-NEXT: ret void
|
||||
;
|
||||
call void @foo() readnone
|
||||
ret void
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt -S < %s | FileCheck %s
|
||||
|
||||
declare void @foo()
|
||||
|
||||
define internal void @bar() {
|
||||
; CHECK-LABEL: @bar(
|
||||
; CHECK-NEXT: call void @foo()
|
||||
; CHECK-NEXT: ret void
|
||||
;
|
||||
call void @foo() readnone
|
||||
ret void
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
## scrub_attrs test checking that update_test_checks.py works correctly
|
||||
# RUN: cp -f %S/Inputs/scrub_attrs.ll %t.ll && %update_test_checks %t.ll
|
||||
# RUN: diff -u %t.ll %S/Inputs/scrub_attrs.ll.plain.expected
|
||||
## Check that running the script again does not change the result:
|
||||
# RUN: %update_test_checks %t.ll
|
||||
# RUN: diff -u %t.ll %S/Inputs/scrub_attrs.ll.plain.expected
|
||||
## Also try the --scrub-attributes flag
|
||||
# RUN: %update_test_checks %t.ll --scrub-attributes
|
||||
# RUN: diff -u %t.ll %S/Inputs/scrub_attrs.ll.scrub.expected
|
@ -81,6 +81,8 @@ MARCH_ARG_RE = re.compile(r'-march[= ]([^ ]+)')
|
||||
SCRUB_LEADING_WHITESPACE_RE = re.compile(r'^(\s+)')
|
||||
SCRUB_WHITESPACE_RE = re.compile(r'(?!^(| \w))[ \t]+', flags=re.M)
|
||||
SCRUB_TRAILING_WHITESPACE_RE = re.compile(r'[ \t]+$', flags=re.M)
|
||||
SCRUB_TRAILING_WHITESPACE_TEST_RE = SCRUB_TRAILING_WHITESPACE_RE
|
||||
SCRUB_TRAILING_WHITESPACE_AND_ATTRIBUTES_RE = re.compile(r'([ \t]|(#[0-9]+))+$', flags=re.M)
|
||||
SCRUB_KILL_COMMENT_RE = re.compile(r'^ *#+ +kill:.*\n')
|
||||
SCRUB_LOOP_COMMENT_RE = re.compile(
|
||||
r'# =>This Inner Loop Header:.*|# in Loop:.*', flags=re.M)
|
||||
@ -125,7 +127,7 @@ def scrub_body(body):
|
||||
# Expand the tabs used for indentation.
|
||||
body = string.expandtabs(body, 2)
|
||||
# Strip trailing whitespace.
|
||||
body = SCRUB_TRAILING_WHITESPACE_RE.sub(r'', body)
|
||||
body = SCRUB_TRAILING_WHITESPACE_TEST_RE.sub(r'', body)
|
||||
return body
|
||||
|
||||
def do_scrub(body, scrubber, scrubber_args, extra):
|
||||
|
@ -64,6 +64,8 @@ def main():
|
||||
help='Do not scrub IR names')
|
||||
parser.add_argument('--function-signature', action='store_true',
|
||||
help='Keep function signature information around for the check line')
|
||||
parser.add_argument('--scrub-attributes', action='store_true',
|
||||
help='Remove attribute annotations (#0) from the end of check line')
|
||||
parser.add_argument('tests', nargs='+')
|
||||
args = common.parse_commandline_args(parser)
|
||||
|
||||
@ -98,6 +100,13 @@ def main():
|
||||
continue
|
||||
|
||||
run_lines = common.find_run_lines(test, input_lines)
|
||||
|
||||
# If requested we scrub trailing attribute annotations, e.g., '#0', together with whitespaces
|
||||
if args.scrub_attributes:
|
||||
common.SCRUB_TRAILING_WHITESPACE_TEST_RE = common.SCRUB_TRAILING_WHITESPACE_AND_ATTRIBUTES_RE
|
||||
else:
|
||||
common.SCRUB_TRAILING_WHITESPACE_TEST_RE = common.SCRUB_TRAILING_WHITESPACE_RE
|
||||
|
||||
prefix_list = []
|
||||
for l in run_lines:
|
||||
if '|' not in l:
|
||||
|
Loading…
x
Reference in New Issue
Block a user