Stop depending on the keys in a hash table being in a particular order.
authorRichard Smith <richard-llvm@metafoo.co.uk>
Sat, 26 Mar 2016 03:06:42 +0000 (03:06 +0000)
committerRichard Smith <richard-llvm@metafoo.co.uk>
Sat, 26 Mar 2016 03:06:42 +0000 (03:06 +0000)
llvm-svn: 264488

compiler-rt/test/profile/instrprof-value-prof-2.c

index 989353e..81ca141 100644 (file)
@@ -1,7 +1,13 @@
 // RUN: %clang_profgen -O2 -o %t %s
 // RUN: env LLVM_PROFILE_FILE=%t.profraw %run %t
 // RUN: llvm-profdata merge -o %t.profdata %t.profraw
-// RUN: llvm-profdata show --all-functions -ic-targets  %t.profdata |  FileCheck  %s 
+// RUN: llvm-profdata show --all-functions -ic-targets  %t.profdata > %t.out
+// RUN: FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-1 < %t.out
+// RUN: FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-2 < %t.out
+// RUN: FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-3 < %t.out
+// RUN: FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-4 < %t.out
+// RUN: FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-5 < %t.out
+// RUN: FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-6 < %t.out
 
 #include <stdint.h>
 #include <stdio.h>
@@ -57,79 +63,79 @@ int main(int argc, const char *argv[]) {
   }
 }
 
-// CHECK-LABEL:   caller_with_value_site_never_called2:
-// CHECK-NEXT:    Hash: 0x0000000000000000
-// CHECK-NEXT:    Counters:
-// CHECK-NEXT:    Function count
-// CHECK-NEXT:    Indirect Call Site Count: 10
-// CHECK-NEXT:    Indirect Target Results: 
-// CHECK-LABEL:   caller_with_vp2:
-// CHECK-NEXT:    Hash: 0x0000000000000000
-// CHECK-NEXT:    Counters:
-// CHECK-NEXT:    Function count:
-// CHECK-NEXT:    Indirect Call Site Count: 10
-// CHECK-NEXT:    Indirect Target Results: 
-// CHECK-NEXT: [ 0, callee1, 1 ]
-// CHECK-NEXT: [ 0, callee2, 1 ]
-// CHECK-NEXT: [ 1, callee1, 2 ]
-// CHECK-NEXT: [ 1, callee2, 1 ]
-// CHECK-NEXT: [ 2, callee1, 3 ]
-// CHECK-NEXT: [ 2, callee2, 2 ]
-// CHECK-NEXT: [ 3, callee1, 4 ]
-// CHECK-NEXT: [ 3, callee2, 2 ]
-// CHECK-NEXT: [ 4, callee1, 5 ]
-// CHECK-NEXT: [ 4, callee2, 3 ]
-// CHECK-NEXT: [ 5, callee1, 6 ]
-// CHECK-NEXT: [ 5, callee2, 3 ]
-// CHECK-NEXT: [ 6, callee1, 7 ]
-// CHECK-NEXT: [ 6, callee2, 4 ]
-// CHECK-NEXT: [ 7, callee1, 8 ]
-// CHECK-NEXT: [ 7, callee2, 4 ]
-// CHECK-NEXT: [ 8, callee1, 9 ]
-// CHECK-NEXT: [ 8, callee2, 5 ]
-// CHECK-NEXT: [ 9, callee1, 10 ]
-// CHECK-NEXT: [ 9, callee2, 5 ]
-// CHECK-LABEL:   caller_with_vp1:
-// CHECK-NEXT:    Hash: 0x0000000000000000
-// CHECK-NEXT:    Counters:
-// CHECK-NEXT:    Function count
-// CHECK-NEXT:    Indirect Call Site Count: 10
-// CHECK-NEXT:    Indirect Target Results: 
-// CHECK-NEXT: [ 0, callee1, 1 ]
-// CHECK-NEXT: [ 0, callee2, 1 ]
-// CHECK-NEXT: [ 1, callee1, 2 ]
-// CHECK-NEXT: [ 1, callee2, 1 ]
-// CHECK-NEXT: [ 2, callee1, 3 ]
-// CHECK-NEXT: [ 2, callee2, 2 ]
-// CHECK-NEXT: [ 3, callee1, 4 ]
-// CHECK-NEXT: [ 3, callee2, 2 ]
-// CHECK-NEXT: [ 4, callee1, 5 ]
-// CHECK-NEXT: [ 4, callee2, 3 ]
-// CHECK-NEXT: [ 5, callee1, 6 ]
-// CHECK-NEXT: [ 5, callee2, 3 ]
-// CHECK-NEXT: [ 6, callee1, 7 ]
-// CHECK-NEXT: [ 6, callee2, 4 ]
-// CHECK-NEXT: [ 7, callee1, 8 ]
-// CHECK-NEXT: [ 7, callee2, 4 ]
-// CHECK-NEXT: [ 8, callee1, 9 ]
-// CHECK-NEXT: [ 8, callee2, 5 ]
-// CHECK-NEXT: [ 9, callee1, 10 ]
-// CHECK-NEXT: [ 9, callee2, 5 ]
-// CHECK-LABEL:   caller_with_value_site_never_called1:
-// CHECK-NEXT:    Hash: 0x0000000000000000
-// CHECK-NEXT:    Counters:
-// CHECK-NEXT:    Function count:
-// CHECK-NEXT:    Indirect Call Site Count: 10
-// CHECK-NEXT:    Indirect Target Results: 
-// CHECK-LABEL:   caller_without_value_site2:
-// CHECK-NEXT:    Hash: 0x0000000000000000
-// CHECK-NEXT:    Counters:
-// CHECK-NEXT:    Function count:
-// CHECK-NEXT:    Indirect Call Site Count: 0
-// CHECK-NEXT:    Indirect Target Results: 
-// CHECK-LABEL:   caller_without_value_site1:
-// CHECK-NEXT:    Hash: 0x0000000000000000
-// CHECK-NEXT:    Counters:
-// CHECK-NEXT:    Function count:
-// CHECK-NEXT:    Indirect Call Site Count: 0
-// CHECK-NEXT:    Indirect Target Results: 
+// CHECK-1-LABEL:   caller_with_value_site_never_called2:
+// CHECK-1-NEXT:    Hash: 0x0000000000000000
+// CHECK-1-NEXT:    Counters:
+// CHECK-1-NEXT:    Function count
+// CHECK-1-NEXT:    Indirect Call Site Count: 10
+// CHECK-1-NEXT:    Indirect Target Results: 
+// CHECK-2-LABEL:   caller_with_vp2:
+// CHECK-2-NEXT:    Hash: 0x0000000000000000
+// CHECK-2-NEXT:    Counters:
+// CHECK-2-NEXT:    Function count:
+// CHECK-2-NEXT:    Indirect Call Site Count: 10
+// CHECK-2-NEXT:    Indirect Target Results: 
+// CHECK-2-NEXT:       [ 0, callee1, 1 ]
+// CHECK-2-NEXT:       [ 0, callee2, 1 ]
+// CHECK-2-NEXT:       [ 1, callee1, 2 ]
+// CHECK-2-NEXT:       [ 1, callee2, 1 ]
+// CHECK-2-NEXT:       [ 2, callee1, 3 ]
+// CHECK-2-NEXT:       [ 2, callee2, 2 ]
+// CHECK-2-NEXT:       [ 3, callee1, 4 ]
+// CHECK-2-NEXT:       [ 3, callee2, 2 ]
+// CHECK-2-NEXT:       [ 4, callee1, 5 ]
+// CHECK-2-NEXT:       [ 4, callee2, 3 ]
+// CHECK-2-NEXT:       [ 5, callee1, 6 ]
+// CHECK-2-NEXT:       [ 5, callee2, 3 ]
+// CHECK-2-NEXT:       [ 6, callee1, 7 ]
+// CHECK-2-NEXT:       [ 6, callee2, 4 ]
+// CHECK-2-NEXT:       [ 7, callee1, 8 ]
+// CHECK-2-NEXT:       [ 7, callee2, 4 ]
+// CHECK-2-NEXT:       [ 8, callee1, 9 ]
+// CHECK-2-NEXT:       [ 8, callee2, 5 ]
+// CHECK-2-NEXT:       [ 9, callee1, 10 ]
+// CHECK-2-NEXT:       [ 9, callee2, 5 ]
+// CHECK-3-LABEL:   caller_with_vp1:
+// CHECK-3-NEXT:    Hash: 0x0000000000000000
+// CHECK-3-NEXT:    Counters:
+// CHECK-3-NEXT:    Function count
+// CHECK-3-NEXT:    Indirect Call Site Count: 10
+// CHECK-3-NEXT:    Indirect Target Results: 
+// CHECK-3-NEXT:       [ 0, callee1, 1 ]
+// CHECK-3-NEXT:       [ 0, callee2, 1 ]
+// CHECK-3-NEXT:       [ 1, callee1, 2 ]
+// CHECK-3-NEXT:       [ 1, callee2, 1 ]
+// CHECK-3-NEXT:       [ 2, callee1, 3 ]
+// CHECK-3-NEXT:       [ 2, callee2, 2 ]
+// CHECK-3-NEXT:       [ 3, callee1, 4 ]
+// CHECK-3-NEXT:       [ 3, callee2, 2 ]
+// CHECK-3-NEXT:       [ 4, callee1, 5 ]
+// CHECK-3-NEXT:       [ 4, callee2, 3 ]
+// CHECK-3-NEXT:       [ 5, callee1, 6 ]
+// CHECK-3-NEXT:       [ 5, callee2, 3 ]
+// CHECK-3-NEXT:       [ 6, callee1, 7 ]
+// CHECK-3-NEXT:       [ 6, callee2, 4 ]
+// CHECK-3-NEXT:       [ 7, callee1, 8 ]
+// CHECK-3-NEXT:       [ 7, callee2, 4 ]
+// CHECK-3-NEXT:       [ 8, callee1, 9 ]
+// CHECK-3-NEXT:       [ 8, callee2, 5 ]
+// CHECK-3-NEXT:       [ 9, callee1, 10 ]
+// CHECK-3-NEXT:       [ 9, callee2, 5 ]
+// CHECK-4-LABEL:   caller_with_value_site_never_called1:
+// CHECK-4-NEXT:    Hash: 0x0000000000000000
+// CHECK-4-NEXT:    Counters:
+// CHECK-4-NEXT:    Function count:
+// CHECK-4-NEXT:    Indirect Call Site Count: 10
+// CHECK-4-NEXT:    Indirect Target Results: 
+// CHECK-5-LABEL:   caller_without_value_site2:
+// CHECK-5-NEXT:    Hash: 0x0000000000000000
+// CHECK-5-NEXT:    Counters:
+// CHECK-5-NEXT:    Function count:
+// CHECK-5-NEXT:    Indirect Call Site Count: 0
+// CHECK-5-NEXT:    Indirect Target Results: 
+// CHECK-6-LABEL:   caller_without_value_site1:
+// CHECK-6-NEXT:    Hash: 0x0000000000000000
+// CHECK-6-NEXT:    Counters:
+// CHECK-6-NEXT:    Function count:
+// CHECK-6-NEXT:    Indirect Call Site Count: 0
+// CHECK-6-NEXT:    Indirect Target Results: