diff --git a/clang/test/Analysis/Scalable/call-graph.cpp b/clang/test/Analysis/Scalable/call-graph.cpp index 8ff0a7ee53c72..4a3443b10921e 100644 --- a/clang/test/Analysis/Scalable/call-graph.cpp +++ b/clang/test/Analysis/Scalable/call-graph.cpp @@ -1,40 +1,45 @@ -// RUN: rm -rf %t.summary.json -// RUN: %clang_cc1 -fsyntax-only %s \ +// RUN: rm -rf %t +// RUN: mkdir -p %t +// RUN: split-file %s %t + +// RUN: %clang_cc1 -fsyntax-only %t/caller.cpp \ // RUN: --ssaf-extract-summaries=CallGraph \ -// RUN: --ssaf-tu-summary-file=%t.summary.json -// RUN: FileCheck %s --match-full-lines --input-file=%t.summary.json +// RUN: --ssaf-tu-summary-file=%t/caller.summary.json +// RUN: FileCheck --match-full-lines --check-prefix=CALLER %t/caller.cpp --input-file=%t/caller.summary.json -// caller() has a direct callee and no virtual callees. -// CHECK-LABEL: "entity_summary": { -// CHECK-DAG: "def": { -// CHECK-DAG: "col": {{[0-9]+}}, -// CHECK-DAG: "file": "{{.+}}", -// CHECK-DAG: "line": {{[0-9]+}} -// CHECK-DAG: "pretty_name": "caller()", -// CHECK-DAG: "direct_callees": [ -// CHECK-DAG: "virtual_callees": [] +// RUN: %clang_cc1 -fsyntax-only %t/polymorphic.cpp \ +// RUN: --ssaf-extract-summaries=CallGraph \ +// RUN: --ssaf-tu-summary-file=%t/polymorphic.summary.json +// RUN: FileCheck --match-full-lines --check-prefix=POLYMORPHIC %t/polymorphic.cpp --input-file=%t/polymorphic.summary.json +//--- caller.cpp // polymorphic() has a virtual callee and no direct callees. -// CHECK-LABEL: "entity_summary": { -// CHECK-DAG: "def": { -// CHECK-DAG: "col": {{[0-9]+}}, -// CHECK-DAG: "file": "{{.+}}", -// CHECK-DAG: "line": {{[0-9]+}} -// CHECK-DAG: "pretty_name": "polymorphic(Base &)", -// CHECK-DAG: "direct_callees": [], -// CHECK-DAG: "virtual_callees": [ +// CALLER-DAG: "def": { +// CALLER-DAG: "col": {{[0-9]+}}, +// CALLER-DAG: "file": "{{.+}}", +// CALLER-DAG: "line": {{[0-9]+}} +// CALLER-DAG: "pretty_name": "caller()", +// CALLER-DAG: "direct_callees": [ +// CALLER-DAG: "virtual_callees": [] +void callee(); +void caller() { + callee(); +} +//--- polymorphic.cpp +// polymorphic() has a virtual callee and no direct callees. +// POLYMORPHIC-DAG: "def": { +// POLYMORPHIC-DAG: "col": {{[0-9]+}}, +// POLYMORPHIC-DAG: "file": "{{.+}}", +// POLYMORPHIC-DAG: "line": {{[0-9]+}} +// POLYMORPHIC-DAG: "pretty_name": "polymorphic(Base &)", +// POLYMORPHIC-DAG: "direct_callees": [], +// POLYMORPHIC-DAG: "virtual_callees": [ struct Base { virtual ~Base(); virtual void vmethod(); }; -void callee(); - -void caller() { - callee(); -} - void polymorphic(Base &b) { b.vmethod(); }