[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / test / Other / pr49950.ll
blob7a65d2670cc078583e38e9e3b5f26887a58af100
1 ; RUN: opt < %s -o /dev/null -enable-new-pm=0 -block-freq -opt-remark-emitter -memoryssa -inject-tli-mappings -pgo-memop-opt -verify-loop-info -debug-pass=Details 2>&1 | FileCheck %s
3 ; REQUIRES: asserts
5 ; This is a heavily reduced reproducer for the problem found in
6 ; https://bugs.llvm.org/show_bug.cgi?id=49950 when doing fuzzy
7 ; testing (including non-standard pipelines).
9 ; The problem manifested as having a pass structure like this
10 ; when it failed (as given by using -debug-pass=Details):
12 ;   Target Library Information
13 ;   Target Transform Information
14 ;   Profile summary info
15 ;   Assumption Cache Tracker
16 ;     ModulePass Manager
17 ;       FunctionPass Manager
18 ;         Dominator Tree Construction
19 ;         Natural Loop Information
20 ;         Post-Dominator Tree Construction
21 ;         Branch Probability Analysis
22 ;         Block Frequency Analysis
23 ;   --      Branch Probability Analysis
24 ;         Lazy Branch Probability Analysis
25 ;         Lazy Block Frequency Analysis
26 ;         Optimization Remark Emitter
27 ;         Basic Alias Analysis (stateless AA impl)
28 ;         Function Alias Analysis Results
29 ;         Memory SSA
30 ;   --      Dominator Tree Construction
31 ;   --      Function Alias Analysis Results
32 ;   --      Basic Alias Analysis (stateless AA impl)
33 ;   --      Memory SSA
34 ;         Inject TLI Mappings
35 ;   --      Inject TLI Mappings
36 ;         PGOMemOPSize
37 ;   --      Block Frequency Analysis
38 ;   --      Post-Dominator Tree Construction
39 ;   --      Optimization Remark Emitter
40 ;   --      Lazy Branch Probability Analysis
41 ;   --      Natural Loop Information
42 ;   --      Lazy Block Frequency Analysis
43 ;   --      PGOMemOPSize
44 ;         Module Verifier
45 ;   --      Module Verifier
46 ;   --    Target Library Information
47 ;   --    Profile summary info
48 ;   --    Assumption Cache Tracker
49 ;       Bitcode Writer
50 ;   --    Bitcode Writer
52 ; One might notice that "Dominator Tree Construction" is dropped after
53 ; "Memory SSA", while for example "Natural Loop Information" stick around
54 ; a bit longer. This despite "Dominator Tree Construction" being transitively
55 ; required by "Natural Loop Information".
56 ; The end result was that we got crashes when doing verification of loop
57 ; info after "Inject TLI Mappings" (since the dominator tree had been
58 ; removed too early).
60 ; Verify that both domintator tree and loop info are kept until after
61 ; PGOMemOPSize:
63 ; CHECK:     Dominator Tree Construction
64 ; CHECK-NOT: --      Dominator Tree Construction
65 ; CHECK:     Memory SSA
66 ; CHECK-NOT: --      Dominator Tree Construction
67 ; CHECK:     Inject TLI Mappings
68 ; CHECK-NOT: --      Dominator Tree Construction
69 ; CHECK:     PGOMemOPSize
70 ; CHECK-DAG: --      Dominator Tree Construction
71 ; CHECK-DAG: --      Natural Loop Information
72 ; CHECK-DAG: --      PGOMemOPSize
73 ; CHECK:     Bitcode Writer
75 define void @foo() {
76 entry:
77   ret void