From 2b3a54bafc38fd096986e401eedd49b88c9cf576 Mon Sep 17 00:00:00 2001 From: Sean Callanan Date: Mon, 7 Aug 2017 22:27:30 +0000 Subject: This adds the argument --dump-ir to clang-import-test, which allows viewing of the final IR. This is useful for confirming that structure layout was correct. I've added two tests: - A test that checks that structs in top-level code are completed correctly during struct layout (they are) - A test that checks that structs defined in function bodies are cpmpleted correctly during struct layout (currently they are not, so this is XFAIL). The second test fails because LookupSameContext() (ExternalASTMerger.cpp) can't find the struct. This is an issue I intend to resolve separately. Differential Revision: https://reviews.llvm.org/D36429 llvm-svn: 310318 --- clang/test/Import/local-struct/Inputs/Callee.cpp | 12 ++++++++++++ clang/test/Import/local-struct/test.cpp | 8 ++++++++ 2 files changed, 20 insertions(+) create mode 100644 clang/test/Import/local-struct/Inputs/Callee.cpp create mode 100644 clang/test/Import/local-struct/test.cpp (limited to 'clang/test/Import/local-struct') diff --git a/clang/test/Import/local-struct/Inputs/Callee.cpp b/clang/test/Import/local-struct/Inputs/Callee.cpp new file mode 100644 index 00000000000..96cd2f22e49 --- /dev/null +++ b/clang/test/Import/local-struct/Inputs/Callee.cpp @@ -0,0 +1,12 @@ +struct Bar { + void bar(int _a, bool _b) { + { + struct S { int a; }; + S s = { _a }; + } + { + struct S { bool b; }; + S t = { _b }; + } + }; +}; diff --git a/clang/test/Import/local-struct/test.cpp b/clang/test/Import/local-struct/test.cpp new file mode 100644 index 00000000000..8f6e38138f2 --- /dev/null +++ b/clang/test/Import/local-struct/test.cpp @@ -0,0 +1,8 @@ +// RUN: clang-import-test -dump-ir -import %S/Inputs/Callee.cpp -expression %s | FileCheck %s +// XFAIL: * +// CHECK: %struct.S = type { i +// CHECK: %struct.S.0 = type { i1 } + +void foo() { + return Bar().bar(3, true); +} -- cgit v1.2.3