[clang] 743ff9c - [clang-repl] Do not assert if we have weak references left.
Vassil Vassilev via cfe-commits
cfe-commits at lists.llvm.org
Mon May 8 02:13:32 PDT 2023
Author: Vassil Vassilev
Date: 2023-05-08T09:13:00Z
New Revision: 743ff9c8bad375d4cea0c44a89cdcc117ffc9bf3
URL: https://github.com/llvm/llvm-project/commit/743ff9c8bad375d4cea0c44a89cdcc117ffc9bf3
DIFF: https://github.com/llvm/llvm-project/commit/743ff9c8bad375d4cea0c44a89cdcc117ffc9bf3.diff
LOG: [clang-repl] Do not assert if we have weak references left.
Non-incremental Clang can also exit with the WeakRefReferences not empty upon
such example. This patch makes clang-repl consistent to what Clang does.
Differential revision: https://reviews.llvm.org/D148435
Added:
Modified:
clang/lib/CodeGen/CodeGenModule.cpp
clang/test/Interpreter/execute-weak.cpp
Removed:
################################################################################
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp
index 367f802253e01..7534304b1878f 100644
--- a/clang/lib/CodeGen/CodeGenModule.cpp
+++ b/clang/lib/CodeGen/CodeGenModule.cpp
@@ -7230,7 +7230,6 @@ void CodeGenModule::moveLazyEmissionStates(CodeGenModule *NewBuilder) {
"Newly created module should not have manglings");
NewBuilder->Manglings = std::move(Manglings);
- assert(WeakRefReferences.empty() && "Not all WeakRefRefs have been applied");
NewBuilder->WeakRefReferences = std::move(WeakRefReferences);
NewBuilder->TBAA = std::move(TBAA);
diff --git a/clang/test/Interpreter/execute-weak.cpp b/clang/test/Interpreter/execute-weak.cpp
index 5b343512c5456..66f2214ab03c0 100644
--- a/clang/test/Interpreter/execute-weak.cpp
+++ b/clang/test/Interpreter/execute-weak.cpp
@@ -2,11 +2,17 @@
// RUN: clang-repl "int i = 10;" 'extern "C" int printf(const char*,...);' \
// RUN: 'auto r1 = printf("i = %d\n", i);' | FileCheck --check-prefix=CHECK-DRIVER %s
// CHECK-DRIVER: i = 10
+//
// UNSUPPORTED: system-aix, system-windows
// RUN: cat %s | clang-repl | FileCheck %s
+
extern "C" int printf(const char *, ...);
int __attribute__((weak)) bar() { return 42; }
auto r4 = printf("bar() = %d\n", bar());
// CHECK: bar() = 42
+int a = 12;
+static __typeof(a) b __attribute__((__weakref__("a")));
+int c = b;
+
%quit
More information about the cfe-commits
mailing list