[Clang] Use pattern to match profile metadata in test.
authorFlorian Hahn <flo@fhahn.com>
Fri, 25 Mar 2022 21:05:58 +0000 (21:05 +0000)
committerFlorian Hahn <flo@fhahn.com>
Fri, 25 Mar 2022 21:05:58 +0000 (21:05 +0000)
Make the test more robust to slightly different metadata numbering by
using a pattern instead of hard coding the ids.

clang/test/CodeGenCXX/attr-likelihood-if-vs-builtin-expect.cpp

index b20537b..eeb6a8b 100644 (file)
@@ -9,9 +9,9 @@ extern bool c();
 
 void ab1(int &i) {
   // CHECK-LABEL: define{{.*}}ab1
-  // CHECK: br {{.*}} !prof !6
-  // CHECK: br {{.*}} !prof !6
-  // CHECK: br {{.*}} !prof !6
+  // CHECK: br {{.*}} !prof [[BW_LIKELY:!.+]]
+  // CHECK: br {{.*}} !prof [[BW_LIKELY]]
+  // CHECK: br {{.*}} !prof [[BW_LIKELY]]
   if (__builtin_expect(a() && b() && a(), 1)) {
     ++i;
   } else {
@@ -21,9 +21,9 @@ void ab1(int &i) {
 
 void al(int &i) {
   // CHECK-LABEL: define{{.*}}al
-  // CHECK: br {{.*}} !prof !6
-  // CHECK: br {{.*}} !prof !6
-  // CHECK: br {{.*}} !prof !6
+  // CHECK: br {{.*}} !prof [[BW_LIKELY]]
+  // CHECK: br {{.*}} !prof [[BW_LIKELY]]
+  // CHECK: br {{.*}} !prof [[BW_LIKELY]]
   if (a() && b() && c()) [[likely]] {
     ++i;
   } else {
@@ -36,7 +36,7 @@ void ab0(int &i) {
   // CHECK: br {{.*}}end{{$}}
   // CHECK: br {{.*}}end{{$}}
   // CHECK: br {{.*}}end{{$}}
-  // CHECK: br {{.*}} !prof !9
+  // CHECK: br {{.*}} !prof [[BW_UNLIKELY:!.+]]
   if (__builtin_expect(a() && b() && c(), 0)) {
     ++i;
   } else {
@@ -48,7 +48,7 @@ void au(int &i) {
   // CHECK-LABEL: define{{.*}}au
   // CHECK: br {{.*}}else{{$}}
   // CHECK: br {{.*}}else{{$}}
-  // CHECK: br {{.*}} !prof !9
+  // CHECK: br {{.*}} !prof [[BW_UNLIKELY]]
   if (a() && b() && c()) [[unlikely]] {
     ++i;
   } else {
@@ -61,7 +61,7 @@ void ob1(int &i) {
   // CHECK: br {{.*}}false{{$}}
   // CHECK: br {{.*}}rhs{{$}}
   // CHECK: br {{.*}}end{{$}}
-  // CHECK: br {{.*}} !prof !6
+  // CHECK: br {{.*}} !prof [[BW_LIKELY]]
   if (__builtin_expect(a() || b() || a(), 1)) {
     i = 0;
   } else {
@@ -73,7 +73,7 @@ void ol(int &i) {
   // CHECK-LABEL: define{{.*}}ol
   // CHECK: br {{.*}}false{{$}}
   // CHECK: br {{.*}}false2{{$}}
-  // CHECK: br {{.*}} !prof !6
+  // CHECK: br {{.*}} !prof [[BW_LIKELY]]
   if (a() || b() || c()) [[likely]] {
     i = 0;
   } else {
@@ -83,9 +83,9 @@ void ol(int &i) {
 
 void ob0(int &i) {
   // CHECK-LABEL: define{{.*}}ob0
-  // CHECK: br {{.*}} !prof !9
-  // CHECK: br {{.*}} !prof !9
-  // CHECK: br {{.*}} !prof !9
+  // CHECK: br {{.*}} !prof [[BW_UNLIKELY]]
+  // CHECK: br {{.*}} !prof [[BW_UNLIKELY]]
+  // CHECK: br {{.*}} !prof [[BW_UNLIKELY]]
   if (__builtin_expect(a() || b() || c(), 0)) {
     i = 0;
   } else {
@@ -95,9 +95,9 @@ void ob0(int &i) {
 
 void ou(int &i) {
   // CHECK-LABEL: define{{.*}}ou
-  // CHECK: br {{.*}} !prof !9
-  // CHECK: br {{.*}} !prof !9
-  // CHECK: br {{.*}} !prof !9
+  // CHECK: br {{.*}} !prof [[BW_UNLIKELY]]
+  // CHECK: br {{.*}} !prof [[BW_UNLIKELY]]
+  // CHECK: br {{.*}} !prof [[BW_UNLIKELY]]
   if (a() || b() || c()) [[unlikely]] {
     i = 0;
   } else {
@@ -107,7 +107,7 @@ void ou(int &i) {
 
 void nb1(int &i) {
   // CHECK-LABEL: define{{.*}}nb1
-  // CHECK: br {{.*}} !prof !6
+  // CHECK: br {{.*}} !prof [[BW_LIKELY]]
   if (__builtin_expect(!a(), 1)) {
     ++i;
   } else {
@@ -117,7 +117,7 @@ void nb1(int &i) {
 
 void nl(int &i) {
   // CHECK-LABEL: define{{.*}}nl
-  // CHECK: br {{.*}} !prof !6
+  // CHECK: br {{.*}} !prof [[BW_LIKELY]]
   if (bool d = !a()) [[likely]] {
     ++i;
   } else {
@@ -127,7 +127,7 @@ void nl(int &i) {
 
 void nb0(int &i) {
   // CHECK-LABEL: define{{.*}}nb0
-  // CHECK: br {{.*}} !prof !9
+  // CHECK: br {{.*}} !prof [[BW_UNLIKELY]]
   if (__builtin_expect(!a(), 0)) {
     ++i;
   } else {
@@ -137,7 +137,7 @@ void nb0(int &i) {
 
 void nu(int &i) {
   // CHECK-LABEL: define{{.*}}nu
-  // CHECK: br {{.*}} !prof !9
+  // CHECK: br {{.*}} !prof [[BW_UNLIKELY]]
   if (bool d = !a()) [[unlikely]] {
     ++i;
   } else {
@@ -150,7 +150,7 @@ void tb1(int &i) {
   // CHECK: br {{.*}}false{{$}}
   // CHECK: br {{.*}}end{{$}}
   // CHECK: br {{.*}}end{{$}}
-  // CHECK: br {{.*}} !prof !6
+  // CHECK: br {{.*}} !prof [[BW_LIKELY]]
   if (__builtin_expect(a() ? b() : c(), 1)) {
     ++i;
   } else {
@@ -163,7 +163,7 @@ void tl(int &i) {
   // CHECK: br {{.*}}false{{$}}
   // CHECK: br {{.*}}end{{$}}
   // CHECK: br {{.*}}end{{$}}
-  // CHECK: br {{.*}} !prof !6
+  // CHECK: br {{.*}} !prof [[BW_LIKELY]]
   if (bool d = a() ? b() : c()) [[likely]] {
     ++i;
   } else {
@@ -174,8 +174,8 @@ void tl(int &i) {
 void tl2(int &i) {
   // CHECK-LABEL: define{{.*}}tl
   // CHECK: br {{.*}}false{{$}}
-  // CHECK: br {{.*}} !prof !6
-  // CHECK: br {{.*}} !prof !6
+  // CHECK: br {{.*}} !prof [[BW_LIKELY]]
+  // CHECK: br {{.*}} !prof [[BW_LIKELY]]
   if (a() ? b() : c()) [[likely]] {
     ++i;
   } else {
@@ -188,7 +188,7 @@ void tb0(int &i) {
   // CHECK: br {{.*}}false{{$}}
   // CHECK: br {{.*}}end{{$}}
   // CHECK: br {{.*}}end{{$}}
-  // CHECK: br {{.*}} !prof !9
+  // CHECK: br {{.*}} !prof [[BW_UNLIKELY]]
   if (__builtin_expect(a() ? b() : c(), 0)) {
     ++i;
   } else {
@@ -201,7 +201,7 @@ void tu(int &i) {
   // CHECK: br {{.*}}false{{$}}
   // CHECK: br {{.*}}end{{$}}
   // CHECK: br {{.*}}end{{$}}
-  // CHECK: br {{.*}} !prof !9
+  // CHECK: br {{.*}} !prof [[BW_UNLIKELY]]
   if (bool d = a() ? b() : c()) [[unlikely]] {
     ++i;
   } else {
@@ -212,8 +212,8 @@ void tu(int &i) {
 void tu2(int &i) {
   // CHECK-LABEL: define{{.*}}tu
   // CHECK: br {{.*}}false{{$}}
-  // CHECK: br {{.*}} !prof !9
-  // CHECK: br {{.*}} !prof !9
+  // CHECK: br {{.*}} !prof [[BW_UNLIKELY]]
+  // CHECK: br {{.*}} !prof [[BW_UNLIKELY]]
   if (a() ? b() : c()) [[unlikely]] {
     ++i;
   } else {
@@ -221,5 +221,5 @@ void tu2(int &i) {
   }
 }
 
-// CHECK: !6 = !{!"branch_weights", i32 2000, i32 1}
-// CHECK: !9 = !{!"branch_weights", i32 1, i32 2000}
+// CHECK: [[BW_LIKELY]] = !{!"branch_weights", i32 2000, i32 1}
+// CHECK: [[BW_UNLIKELY]] = !{!"branch_weights", i32 1, i32 2000}