--- /dev/null
+--- !Missed
+Pass: inline
+Name: NoDefinition
+DebugLoc: { File: Inputs/q3.c, Line: 4, Column: 5 }
+Function: foo
+Args:
+ - Callee: bar
+ - String: ' will not be inlined into '
+ - Caller: foo
+ - String: ' because its definition is unavailable'
+...
+--- !Analysis
+Pass: inline
+Name: CanBeInlined
+DebugLoc: { File: Inputs/q3.c, Line: 8, Column: 3 }
+Function: quack
+Args:
+ - Callee: foo
+ - String: ' can be inlined into '
+ - Caller: quack
+ - String: ' with cost='
+ - Cost: '40'
+ - String: ' (threshold='
+ - Threshold: '275'
+ - String: ')'
+...
+--- !Passed
+Pass: inline
+Name: Inlined
+DebugLoc: { File: Inputs/q3.c, Line: 8, Column: 3 }
+Function: quack
+Args:
+ - Callee: foo
+ - String: ' inlined into '
+ - Caller: quack
+...
+--- !Passed
+Pass: loop-unroll
+Name: FullyUnrolled
+DebugLoc: { File: Inputs/q3.c, Line: 3, Column: 3 }
+Function: quack
+Args:
+ - String: 'completely unrolled loop with '
+ - UnrollCount: '4'
+ - String: ' iterations'
+...
+--- !Analysis
+Pass: inline
+Name: CanBeInlined
+DebugLoc: { File: Inputs/q3.c, Line: 12, Column: 3 }
+Function: quack2
+Args:
+ - Callee: foo
+ - String: ' can be inlined into '
+ - Caller: quack2
+ - String: ' with cost='
+ - Cost: '40'
+ - String: ' (threshold='
+ - Threshold: '275'
+ - String: ')'
+...
+--- !Passed
+Pass: inline
+Name: Inlined
+DebugLoc: { File: Inputs/q3.c, Line: 12, Column: 3 }
+Function: quack2
+Args:
+ - Callee: foo
+ - String: ' inlined into '
+ - Caller: quack2
+...
+--- !Passed
+Pass: loop-unroll
+Name: FullyUnrolled
+DebugLoc: { File: Inputs/q3.c, Line: 3, Column: 3 }
+Function: quack2
+Args:
+ - String: 'completely unrolled loop with '
+ - UnrollCount: '8'
+ - String: ' iterations'
+...
+--- !Analysis
+Pass: loop-vectorize
+Name: CantVectorizeCall
+DebugLoc: { File: Inputs/q3.c, Line: 4, Column: 5 }
+Function: foo
+Args:
+ - String: 'loop not vectorized: '
+ - String: call instruction cannot be vectorized
+...
+--- !Missed
+Pass: loop-vectorize
+Name: MissedDetails
+DebugLoc: { File: Inputs/q3.c, Line: 3, Column: 3 }
+Function: foo
+Args:
+ - String: 'loop not vectorized: use -Rpass-analysis=loop-vectorize for more info'
+...
--- /dev/null
+RUN: llvm-opt-report -r %p %p/Inputs/q3.yaml | FileCheck -strict-whitespace %s
+
+; CHECK: < {{.*[/\]}}q3.c
+; CHECK-NEXT: 1 | void bar();
+; CHECK-NEXT: 2 | void foo(int n) {
+; CHECK-NEXT: {{\[\[}}
+; CHECK-NEXT: > foo:
+; CHECK-NEXT: 3 | for (int i = 0; i < n; ++i)
+; CHECK-NEXT: > quack:
+; CHECK-NEXT: 3 U4 | for (int i = 0; i < n; ++i)
+; CHECK-NEXT: > quack2:
+; CHECK-NEXT: 3 U8 | for (int i = 0; i < n; ++i)
+; CHECK-NEXT: {{\]\]}}
+; CHECK-NEXT: 4 | bar();
+; CHECK-NEXT: 5 | }
+; CHECK-NEXT: 6 |
+; CHECK-NEXT: 7 | void quack() {
+; CHECK-NEXT: 8 I | foo(4);
+; CHECK-NEXT: 9 | }
+; CHECK-NEXT: 10 |
+; CHECK-NEXT: 11 | void quack2() {
+; CHECK-NEXT: 12 I | foo(8);
+; CHECK-NEXT: 13 | }
+; CHECK-NEXT: 14 |
+