Skip to content

Commit

Permalink
[UpdateTestChecks] Match define for labels
Browse files Browse the repository at this point in the history
Previously, the label also matched function calls with the function
name, which caused tests to fail because the label matched on the wrong
line.
Add the `define` prefix, so only function defines are matched.

Differential Revision: https://reviews.llvm.org/D139006
  • Loading branch information
Flakebi committed Dec 12, 2022
1 parent bea4502 commit a888825
Show file tree
Hide file tree
Showing 35 changed files with 124 additions and 92 deletions.
Expand Up @@ -8,7 +8,7 @@ class Foo {
public:
explicit Foo(int x);
~Foo();
// CHECK-LABEL: @_ZNK3Foo23function_defined_inlineEi(
// CHECK-LABEL: define {{[^@]+}}@_ZNK3Foo23function_defined_inlineEi(
// CHECK-NEXT: entry:
// CHECK-NEXT: [[THIS_ADDR:%.*]] = alloca %class.Foo*, align 8
// CHECK-NEXT: [[ARG_ADDR:%.*]] = alloca i32, align 4
Expand All @@ -27,7 +27,7 @@ public:
inline int function_defined_out_of_line(int arg) const;
};

// CHECK-LABEL: @_ZN3FooC1Ei(
// CHECK-LABEL: define {{[^@]+}}@_ZN3FooC1Ei(
// CHECK-NEXT: entry:
// CHECK-NEXT: [[THIS_ADDR:%.*]] = alloca %class.Foo*, align 8
// CHECK-NEXT: [[X_ADDR:%.*]] = alloca i32, align 4
Expand All @@ -39,7 +39,7 @@ public:
// CHECK-NEXT: ret void
//
Foo::Foo(int x) : x(x) {}
// CHECK-LABEL: @_ZN3FooD1Ev(
// CHECK-LABEL: define {{[^@]+}}@_ZN3FooD1Ev(
// CHECK-NEXT: entry:
// CHECK-NEXT: [[THIS_ADDR:%.*]] = alloca %class.Foo*, align 8
// CHECK-NEXT: store %class.Foo* [[THIS:%.*]], %class.Foo** [[THIS_ADDR]], align 8
Expand All @@ -48,7 +48,7 @@ Foo::Foo(int x) : x(x) {}
// CHECK-NEXT: ret void
//
Foo::~Foo() {}
// CHECK-LABEL: @_ZNK3Foo28function_defined_out_of_lineEi(
// CHECK-LABEL: define {{[^@]+}}@_ZNK3Foo28function_defined_out_of_lineEi(
// CHECK-NEXT: entry:
// CHECK-NEXT: [[THIS_ADDR:%.*]] = alloca %class.Foo*, align 8
// CHECK-NEXT: [[ARG_ADDR:%.*]] = alloca i32, align 4
Expand All @@ -64,7 +64,7 @@ Foo::~Foo() {}
int Foo::function_defined_out_of_line(int arg) const { return x - arg; }

// Call the inline methods to ensure the LLVM IR is generated:
// CHECK-LABEL: @main(
// CHECK-LABEL: define {{[^@]+}}@main(
// CHECK-NEXT: entry:
// CHECK-NEXT: [[F:%.*]] = alloca [[CLASS_FOO:%.*]], align 4
// CHECK-NEXT: call void @_ZN3FooC1Ei(%class.Foo* noundef nonnull align 4 dereferenceable(4) [[F]], i32 noundef 1)
Expand Down
Expand Up @@ -12,7 +12,7 @@ struct ST {
};

// CHECK: Function Attrs: mustprogress noinline nounwind optnone
// CHECK-LABEL: @_Z3fooP2ST(
// CHECK-LABEL: define {{[^@]+}}@_Z3fooP2ST(
// CHECK-NEXT: entry:
// CHECK-NEXT: [[S_ADDR:%.*]] = alloca %struct.ST*, align 8
// CHECK-NEXT: store %struct.ST* [[S:%.*]], %struct.ST** [[S_ADDR]], align 8
Expand Down
Expand Up @@ -11,7 +11,7 @@ struct ST {
struct RT Z;
};

// CHECK-LABEL: @_Z3fooP2ST(
// CHECK-LABEL: define {{[^@]+}}@_Z3fooP2ST(
// CHECK-NEXT: entry:
// CHECK-NEXT: [[S_ADDR:%.*]] = alloca %struct.ST*, align 8
// CHECK-NEXT: store %struct.ST* [[S:%.*]], %struct.ST** [[S_ADDR]], align 8
Expand Down
Expand Up @@ -6,7 +6,7 @@ int foo(int arg);

void empty_function(void);

// CHECK-LABEL: @main(
// CHECK-LABEL: define {{[^@]+}}@main(
// CHECK-NEXT: entry:
// CHECK-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
// CHECK-NEXT: store i32 0, i32* [[RETVAL]], align 4
Expand All @@ -19,7 +19,7 @@ int main(void) {
return foo(1);
}

// CHECK-LABEL: @foo(
// CHECK-LABEL: define {{[^@]+}}@foo(
// CHECK-NEXT: entry:
// CHECK-NEXT: [[ARG_ADDR:%.*]] = alloca i32, align 4
// CHECK-NEXT: store i32 [[ARG:%.*]], i32* [[ARG_ADDR]], align 4
Expand All @@ -30,7 +30,7 @@ int foo(int arg) {
return arg;
}

// CHECK-LABEL: @empty_function(
// CHECK-LABEL: define {{[^@]+}}@empty_function(
// CHECK-NEXT: entry:
// CHECK-NEXT: ret void
//
Expand Down
Expand Up @@ -15,19 +15,19 @@

void use(int);

// CHECK1-LABEL: @test(
// CHECK1-LABEL: define {{[^@]+}}@test(
// CHECK1-NEXT: entry:
// CHECK1-NEXT: [[A_ADDR:%.*]] = alloca i32, align 4
// CHECK1-NEXT: store i32 [[A:%.*]], i32* [[A_ADDR]], align 4
// CHECK1-NEXT: ret void
//
// CHECK2-LABEL: @test(
// CHECK2-LABEL: define {{[^@]+}}@test(
// CHECK2-NEXT: entry:
// CHECK2-NEXT: [[A_ADDR:%.*]] = alloca i32, align 4
// CHECK2-NEXT: store i32 [[A:%.*]], i32* [[A_ADDR]], align 4
// CHECK2-NEXT: ret void
//
// CHECK3-LABEL: @test(
// CHECK3-LABEL: define {{[^@]+}}@test(
// CHECK3-NEXT: entry:
// CHECK3-NEXT: [[A_ADDR:%.*]] = alloca i32, align 4
// CHECK3-NEXT: store i32 [[A:%.*]], i32* [[A_ADDR]], align 4
Expand Down
Expand Up @@ -36,7 +36,7 @@ public:

// These two specializations should generate lines for all of Foo's methods.

// CHECK-LABEL: @_ZN3FooIcEC1Ec(
// CHECK-LABEL: define {{[^@]+}}@_ZN3FooIcEC1Ec(
// CHECK-NEXT: entry:
// CHECK-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.Foo*, align 8
// CHECK-NEXT: [[X_ADDR:%.*]] = alloca i8, align 1
Expand All @@ -47,15 +47,15 @@ public:
// CHECK-NEXT: call void @_ZN3FooIcEC2Ec(%struct.Foo* noundef nonnull align 1 dereferenceable(1) [[THIS1]], i8 noundef signext [[TMP0]])
// CHECK-NEXT: ret void
//
// CHECK-LABEL: @_ZN3FooIcED1Ev(
// CHECK-LABEL: define {{[^@]+}}@_ZN3FooIcED1Ev(
// CHECK-NEXT: entry:
// CHECK-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.Foo*, align 8
// CHECK-NEXT: store %struct.Foo* [[THIS:%.*]], %struct.Foo** [[THIS_ADDR]], align 8
// CHECK-NEXT: [[THIS1:%.*]] = load %struct.Foo*, %struct.Foo** [[THIS_ADDR]], align 8
// CHECK-NEXT: call void @_ZN3FooIcED2Ev(%struct.Foo* noundef nonnull align 1 dereferenceable(1) [[THIS1]]) #[[ATTR2:[0-9]+]]
// CHECK-NEXT: ret void
//
// CHECK-LABEL: @_ZN3FooIcE3getEv(
// CHECK-LABEL: define {{[^@]+}}@_ZN3FooIcE3getEv(
// CHECK-NEXT: entry:
// CHECK-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.Foo*, align 8
// CHECK-NEXT: store %struct.Foo* [[THIS:%.*]], %struct.Foo** [[THIS_ADDR]], align 8
Expand All @@ -64,7 +64,7 @@ public:
// CHECK-NEXT: [[TMP0:%.*]] = load i8, i8* [[X]], align 1
// CHECK-NEXT: ret i8 [[TMP0]]
//
// CHECK-LABEL: @_ZN3FooIcE3setEc(
// CHECK-LABEL: define {{[^@]+}}@_ZN3FooIcE3setEc(
// CHECK-NEXT: entry:
// CHECK-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.Foo*, align 8
// CHECK-NEXT: [[_X_ADDR:%.*]] = alloca i8, align 1
Expand All @@ -78,7 +78,7 @@ public:
//
template struct Foo<char>;

// CHECK-LABEL: @_ZN3FooIsEC1Es(
// CHECK-LABEL: define {{[^@]+}}@_ZN3FooIsEC1Es(
// CHECK-NEXT: entry:
// CHECK-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.Foo.0*, align 8
// CHECK-NEXT: [[X_ADDR:%.*]] = alloca i16, align 2
Expand All @@ -89,15 +89,15 @@ template struct Foo<char>;
// CHECK-NEXT: call void @_ZN3FooIsEC2Es(%struct.Foo.0* noundef nonnull align 2 dereferenceable(2) [[THIS1]], i16 noundef signext [[TMP0]])
// CHECK-NEXT: ret void
//
// CHECK-LABEL: @_ZN3FooIsED1Ev(
// CHECK-LABEL: define {{[^@]+}}@_ZN3FooIsED1Ev(
// CHECK-NEXT: entry:
// CHECK-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.Foo.0*, align 8
// CHECK-NEXT: store %struct.Foo.0* [[THIS:%.*]], %struct.Foo.0** [[THIS_ADDR]], align 8
// CHECK-NEXT: [[THIS1:%.*]] = load %struct.Foo.0*, %struct.Foo.0** [[THIS_ADDR]], align 8
// CHECK-NEXT: call void @_ZN3FooIsED2Ev(%struct.Foo.0* noundef nonnull align 2 dereferenceable(2) [[THIS1]]) #[[ATTR2]]
// CHECK-NEXT: ret void
//
// CHECK-LABEL: @_ZN3FooIsE3getEv(
// CHECK-LABEL: define {{[^@]+}}@_ZN3FooIsE3getEv(
// CHECK-NEXT: entry:
// CHECK-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.Foo.0*, align 8
// CHECK-NEXT: store %struct.Foo.0* [[THIS:%.*]], %struct.Foo.0** [[THIS_ADDR]], align 8
Expand All @@ -106,7 +106,7 @@ template struct Foo<char>;
// CHECK-NEXT: [[TMP0:%.*]] = load i16, i16* [[X]], align 2
// CHECK-NEXT: ret i16 [[TMP0]]
//
// CHECK-LABEL: @_ZN3FooIsE3setEs(
// CHECK-LABEL: define {{[^@]+}}@_ZN3FooIsE3setEs(
// CHECK-NEXT: entry:
// CHECK-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.Foo.0*, align 8
// CHECK-NEXT: [[_X_ADDR:%.*]] = alloca i16, align 2
Expand All @@ -123,7 +123,7 @@ template struct Foo<short>;
// This should not generate lines for the implicit specialization of Foo, but
// should generate lines for the explicit specialization of Bar.

// CHECK-LABEL: @_ZN3BarIiEC1Ei(
// CHECK-LABEL: define {{[^@]+}}@_ZN3BarIiEC1Ei(
// CHECK-NEXT: entry:
// CHECK-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.Bar*, align 8
// CHECK-NEXT: [[X_ADDR:%.*]] = alloca i32, align 4
Expand All @@ -134,15 +134,15 @@ template struct Foo<short>;
// CHECK-NEXT: call void @_ZN3BarIiEC2Ei(%struct.Bar* noundef nonnull align 4 dereferenceable(4) [[THIS1]], i32 noundef [[TMP0]])
// CHECK-NEXT: ret void
//
// CHECK-LABEL: @_ZN3BarIiED1Ev(
// CHECK-LABEL: define {{[^@]+}}@_ZN3BarIiED1Ev(
// CHECK-NEXT: entry:
// CHECK-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.Bar*, align 8
// CHECK-NEXT: store %struct.Bar* [[THIS:%.*]], %struct.Bar** [[THIS_ADDR]], align 8
// CHECK-NEXT: [[THIS1:%.*]] = load %struct.Bar*, %struct.Bar** [[THIS_ADDR]], align 8
// CHECK-NEXT: call void @_ZN3BarIiED2Ev(%struct.Bar* noundef nonnull align 4 dereferenceable(4) [[THIS1]]) #[[ATTR2]]
// CHECK-NEXT: ret void
//
// CHECK-LABEL: @_ZN3BarIiE3getEv(
// CHECK-LABEL: define {{[^@]+}}@_ZN3BarIiE3getEv(
// CHECK-NEXT: entry:
// CHECK-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.Bar*, align 8
// CHECK-NEXT: store %struct.Bar* [[THIS:%.*]], %struct.Bar** [[THIS_ADDR]], align 8
Expand All @@ -151,7 +151,7 @@ template struct Foo<short>;
// CHECK-NEXT: [[CALL:%.*]] = call noundef i32 @_ZN3FooIiE3getEv(%struct.Foo.1* noundef nonnull align 4 dereferenceable(4) [[FOO]])
// CHECK-NEXT: ret i32 [[CALL]]
//
// CHECK-LABEL: @_ZN3BarIiE3setEi(
// CHECK-LABEL: define {{[^@]+}}@_ZN3BarIiE3setEi(
// CHECK-NEXT: entry:
// CHECK-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.Bar*, align 8
// CHECK-NEXT: [[_X_ADDR:%.*]] = alloca i32, align 4
Expand All @@ -168,7 +168,7 @@ template struct Bar<int>;
// This should not generate lines for the implicit specialization of Foo, but
// should generate lines for the explicit specialization of Baz.

// CHECK-LABEL: @_ZN3BazIlEC1El(
// CHECK-LABEL: define {{[^@]+}}@_ZN3BazIlEC1El(
// CHECK-NEXT: entry:
// CHECK-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.Baz*, align 8
// CHECK-NEXT: [[X_ADDR:%.*]] = alloca i64, align 8
Expand All @@ -179,7 +179,7 @@ template struct Bar<int>;
// CHECK-NEXT: call void @_ZN3BazIlEC2El(%struct.Baz* noundef nonnull align 8 dereferenceable(8) [[THIS1]], i64 noundef [[TMP0]])
// CHECK-NEXT: ret void
//
// CHECK-LABEL: @_ZN3BazIlED1Ev(
// CHECK-LABEL: define {{[^@]+}}@_ZN3BazIlED1Ev(
// CHECK-NEXT: entry:
// CHECK-NEXT: [[THIS_ADDR:%.*]] = alloca %struct.Baz*, align 8
// CHECK-NEXT: store %struct.Baz* [[THIS:%.*]], %struct.Baz** [[THIS_ADDR]], align 8
Expand Down
Expand Up @@ -12,7 +12,7 @@ void foo(int a)
__test_offloading_42_abcdef_bar_l123();
int somevar_abc123_;
}
// CHECK-LABEL: @foo(
// CHECK-LABEL: define {{[^@]+}}@foo(
// CHECK-NEXT: entry:
// CHECK-NEXT: [[A_ADDR:%.*]] = alloca i32, align 4
// CHECK-NEXT: [[A_CASTED:%.*]] = alloca i64, align 8
Expand All @@ -27,7 +27,7 @@ void foo(int a)
// CHECK-NEXT: ret void
//
//
// CHECK-LABEL: @{{__omp_offloading_[a-z0-9]+_[a-z0-9]+_foo_l[0-9]+}}(
// CHECK-LABEL: define {{[^@]+}}@{{__omp_offloading_[a-z0-9]+_[a-z0-9]+_foo_l[0-9]+}}(
// CHECK-NEXT: entry:
// CHECK-NEXT: [[A_ADDR:%.*]] = alloca i64, align 8
// CHECK-NEXT: store i64 [[A:%.*]], i64* [[A_ADDR]], align 8
Expand Down
Expand Up @@ -30,7 +30,7 @@ void foo(void) {
A[i] = 1.0;
}
}
// OMP-LABEL: @main(
// OMP-LABEL: define {{[^@]+}}@main(
// OMP-NEXT: entry:
// OMP-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
// OMP-NEXT: [[I:%.*]] = alloca i32, align 4
Expand All @@ -41,7 +41,7 @@ void foo(void) {
// OMP-NEXT: ret i32 0
//
//
// OMP-LABEL: @.omp_outlined.(
// OMP-LABEL: define {{[^@]+}}@.omp_outlined.(
// OMP-NEXT: entry:
// OMP-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
// OMP-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
Expand Down Expand Up @@ -104,15 +104,15 @@ void foo(void) {
// OMP-NEXT: ret void
//
//
// OMP-LABEL: @foo(
// OMP-LABEL: define {{[^@]+}}@foo(
// OMP-NEXT: entry:
// OMP-NEXT: [[I:%.*]] = alloca i32, align 4
// OMP-NEXT: store i32 0, i32* [[I]], align 4
// OMP-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_call(%struct.ident_t* @[[GLOB2]], i32 0, void (i32*, i32*, ...)* bitcast (void (i32*, i32*)* @.omp_outlined..1 to void (i32*, i32*, ...)*))
// OMP-NEXT: ret void
//
//
// OMP-LABEL: @.omp_outlined..1(
// OMP-LABEL: define {{[^@]+}}@.omp_outlined..1(
// OMP-NEXT: entry:
// OMP-NEXT: [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
// OMP-NEXT: [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
Expand Down Expand Up @@ -175,7 +175,7 @@ void foo(void) {
// OMP-NEXT: ret void
//
//
// NOOMP-LABEL: @main(
// NOOMP-LABEL: define {{[^@]+}}@main(
// NOOMP-NEXT: entry:
// NOOMP-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
// NOOMP-NEXT: [[I:%.*]] = alloca i32, align 4
Expand Down Expand Up @@ -203,7 +203,7 @@ void foo(void) {
// NOOMP-NEXT: ret i32 0
//
//
// NOOMP-LABEL: @foo(
// NOOMP-LABEL: define {{[^@]+}}@foo(
// NOOMP-NEXT: entry:
// NOOMP-NEXT: [[I:%.*]] = alloca i32, align 4
// NOOMP-NEXT: store i32 0, i32* [[I]], align 4
Expand Down
Expand Up @@ -9,7 +9,7 @@ double A[size];

void foo(void);

// OMP-LABEL: @main(
// OMP-LABEL: define {{[^@]+}}@main(
// OMP-NEXT: entry:
// OMP-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
// OMP-NEXT: [[I:%.*]] = alloca i32, align 4
Expand All @@ -19,7 +19,7 @@ void foo(void);
// OMP-NEXT: call void @foo()
// OMP-NEXT: ret i32 0
//
// NOOMP-LABEL: @main(
// NOOMP-LABEL: define {{[^@]+}}@main(
// NOOMP-NEXT: entry:
// NOOMP-NEXT: [[RETVAL:%.*]] = alloca i32, align 4
// NOOMP-NEXT: [[I:%.*]] = alloca i32, align 4
Expand Down Expand Up @@ -59,14 +59,14 @@ int main(void) {
return 0;
}

// OMP-LABEL: @foo(
// OMP-LABEL: define {{[^@]+}}@foo(
// OMP-NEXT: entry:
// OMP-NEXT: [[I:%.*]] = alloca i32, align 4
// OMP-NEXT: store i32 0, i32* [[I]], align 4
// OMP-NEXT: call void (%struct.ident_t*, i32, void (i32*, i32*, ...)*, ...) @__kmpc_fork_call(%struct.ident_t* @[[GLOB2]], i32 0, void (i32*, i32*, ...)* bitcast (void (i32*, i32*)* @.omp_outlined..1 to void (i32*, i32*, ...)*))
// OMP-NEXT: ret void
//
// NOOMP-LABEL: @foo(
// NOOMP-LABEL: define {{[^@]+}}@foo(
// NOOMP-NEXT: entry:
// NOOMP-NEXT: [[I:%.*]] = alloca i32, align 4
// NOOMP-NEXT: store i32 0, i32* [[I]], align 4
Expand Down
Expand Up @@ -7,15 +7,15 @@
// CHECK: @bar.hex = internal global i32 [[#0x20]], align 4
// CHECK: @bar.dec = internal global i32 20, align 4
//.
// CHECK-LABEL: @foo(
// CHECK-LABEL: define {{[^@]+}}@foo(
// CHECK-NEXT: entry:
// CHECK-NEXT: ret void
//
void foo(void) {
static int hex = 0x10;
static int dec = 10;
}
// CHECK-LABEL: @bar(
// CHECK-LABEL: define {{[^@]+}}@bar(
// CHECK-NEXT: entry:
// CHECK-NEXT: ret void
//
Expand Down
Expand Up @@ -5,14 +5,14 @@
// CHECK: @foo.i = internal global i32 0, align 4
// CHECK: @foo.j = internal global i32 0, align 4
//.
// CHECK-LABEL: @foo(
// CHECK-LABEL: define {{[^@]+}}@foo(
// CHECK-NEXT: entry:
// CHECK-NEXT: ret void
//
void foo(void) {
static int i, j;
}
// CHECK-LABEL: @bar(
// CHECK-LABEL: define {{[^@]+}}@bar(
// CHECK-NEXT: entry:
// CHECK-NEXT: ret void
//
Expand Down
Expand Up @@ -3,7 +3,7 @@
// RUN: %clang_cc1 -triple=x86_64-unknown-linux-gnu -emit-llvm -o - %s -DFOO | FileCheck -check-prefixes=CHECK,FOO %s

#ifdef FOO
// FOO-LABEL: @foo(
// FOO-LABEL: define {{[^@]+}}@foo(
// FOO-NEXT: entry:
// FOO-NEXT: ret i32 1
//
Expand All @@ -12,7 +12,7 @@ int foo() {
}
#endif

// CHECK-LABEL: @bar(
// CHECK-LABEL: define {{[^@]+}}@bar(
// CHECK-NEXT: entry:
// CHECK-NEXT: ret i32 2
//
Expand Down

0 comments on commit a888825

Please sign in to comment.