Turns out there will be left-over deferred inline methods if there have
been errors, because in that case HandleTopLevelDecl bails out early.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@224649
91177308-0d34-0410-b5e6-
96231b3b80d8
M(new llvm::Module(ModuleName, C)) {}
virtual ~CodeGeneratorImpl() {
- assert(DeferredInlineMethodDefinitions.empty() &&
- "Leftover inline method definitions!");
+ // There should normally not be any leftover inline method definitions.
+ assert(DeferredInlineMethodDefinitions.empty() ||
+ Diags.hasErrorOccurred());
}
llvm::Module* GetModule() override {
--- /dev/null
+// REQUIRES: asserts
+// RUN: not %clang_cc1 -emit-llvm -triple %itanium_abi_triple -o - %s 2>&1 | FileCheck %s
+
+struct {
+ void __attribute__((used)) f() {}
+};
+// CHECK: 2 errors generated.
+
+// Emit the errors, but don't assert.