[PATCH] D156537: [CodeGen] Keep track of eagerly emitted globals
Jonas Hahnfeld via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Aug 17 23:57:02 PDT 2023
Hahnfeld updated this revision to Diff 551401.
Hahnfeld added a comment.
Disable RTTI to (hopefully) avoid problems on Windows.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D156537/new/
https://reviews.llvm.org/D156537
Files:
clang/lib/CodeGen/CodeGenModule.cpp
clang/test/Interpreter/inline-virtual.cpp
Index: clang/test/Interpreter/inline-virtual.cpp
===================================================================
--- /dev/null
+++ clang/test/Interpreter/inline-virtual.cpp
@@ -0,0 +1,24 @@
+// REQUIRES: host-supports-jit
+// UNSUPPORTED: system-aix
+//
+// We disable RTTI to avoid problems on Windows for non-RTTI builds of LLVM
+// where the JIT cannot find ??_7type_info@@6B at .
+// RUN: cat %s | clang-repl -Xcc -fno-rtti | FileCheck %s
+// RUN: cat %s | clang-repl -Xcc -fno-rtti -Xcc -O2 | FileCheck %s
+
+extern "C" int printf(const char *, ...);
+
+struct A { int a; A(int a) : a(a) {} virtual ~A(); };
+
+// Then define the virtual destructor as inline out-of-line, in a separate
+// PartialTranslationUnit.
+inline A::~A() { printf("~A(%d)\n", a); }
+
+// Create one instance with new and delete it.
+A *a1 = new A(1);
+delete a1;
+// CHECK: ~A(1)
+
+// Also create one global that will be auto-destructed.
+A a2(2);
+// CHECK: ~A(2)
Index: clang/lib/CodeGen/CodeGenModule.cpp
===================================================================
--- clang/lib/CodeGen/CodeGenModule.cpp
+++ clang/lib/CodeGen/CodeGenModule.cpp
@@ -3658,6 +3658,7 @@
if (MustBeEmitted(Global) && MayBeEmittedEagerly(Global)) {
// Emit the definition if it can't be deferred.
EmitGlobalDefinition(GD);
+ addEmittedDeferredDecl(GD);
return;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D156537.551401.patch
Type: text/x-patch
Size: 1360 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20230818/e3be59b3/attachment-0001.bin>
More information about the cfe-commits
mailing list