[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