--- /dev/null
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature
+; RUN: opt < %s -S | FileCheck %s
+
+define i32 @reuse_arg_names(i32 %X, i32 %Y) {
+; CHECK-LABEL: define {{[^@]+}}@reuse_arg_names
+; CHECK-SAME: (i32 [[X:%.*]], i32 [[Y:%.*]])
+; CHECK-NEXT: [[Z:%.*]] = sub i32 [[X]], [[Y]]
+; CHECK-NEXT: [[Q:%.*]] = add i32 [[Z]], [[Y]]
+; CHECK-NEXT: ret i32 [[Q]]
+;
+ %Z = sub i32 %X, %Y
+ %Q = add i32 %Z, %Y
+ ret i32 %Q
+}
--- /dev/null
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
+; RUN: opt < %s -S | FileCheck %s
+
+define i32 @reuse_arg_names(i32 %X, i32 %Y) {
+; CHECK-LABEL: @reuse_arg_names(
+; CHECK-NEXT: [[Z:%.*]] = sub i32 [[X:%.*]], [[Y:%.*]]
+; CHECK-NEXT: [[Q:%.*]] = add i32 [[Z]], [[Y]]
+; CHECK-NEXT: ret i32 [[Q]]
+;
+ %Z = sub i32 %X, %Y
+ %Q = add i32 %Z, %Y
+ ret i32 %Q
+}
--- /dev/null
+# Verify we reuse the argument regexps with --function-signature
+# RUN: cp -f %S/Inputs/argument_name_reuse.ll %t.ll && %update_test_checks %t.ll --function-signature
+# RUN: diff -u %t.ll %S/Inputs/argument_name_reuse.ll.expected
+# Verify we do not reuse the argument regexps, as there are none, without --function-signature
+# RUN: cp -f %S/Inputs/argument_name_reuse.ll %t.ll && %update_test_checks %t.ll
+# RUN: diff -u %t.ll %S/Inputs/argument_name_reuse.ll.plain.expected
return '[[' + get_value_name(var) + ']]'
# Replace IR value defs and uses with FileCheck variables.
-def genericize_check_lines(lines, is_analyze):
+def genericize_check_lines(lines, is_analyze, vars_seen):
# This gets called for each match that occurs in
# a line. We transform variables we haven't seen
# into defs, and variables we have seen into uses.
# including the commas and spaces.
return match.group(1) + rv + match.group(3)
- vars_seen = set()
lines_with_def = []
for i, line in enumerate(lines):
if len(printed_prefixes) != 0:
output_lines.append(comment_marker)
+ vars_seen = set()
printed_prefixes.append(checkprefix)
args_and_sig = str(func_dict[checkprefix][func_name].args_and_sig)
- args_and_sig = genericize_check_lines([args_and_sig], is_analyze)[0]
+ args_and_sig = genericize_check_lines([args_and_sig], is_analyze, vars_seen)[0]
if '[[' in args_and_sig:
output_lines.append(check_label_format % (checkprefix, func_name, ''))
output_lines.append('%s %s-SAME: %s' % (comment_marker, checkprefix, args_and_sig))
# For IR output, change all defs to FileCheck variables, so we're immune
# to variable naming fashions.
- func_body = genericize_check_lines(func_body, is_analyze)
+ func_body = genericize_check_lines(func_body, is_analyze, vars_seen)
# This could be selectively enabled with an optional invocation argument.
# Disabled for now: better to check everything. Be safe rather than sorry.