[clang] 0e69014 - [clang][Interp][NFC] Add a failing test case

Timm Bäder via cfe-commits cfe-commits at lists.llvm.org
Fri Oct 14 04:39:23 PDT 2022


Author: Timm Bäder
Date: 2022-10-14T13:31:52+02:00
New Revision: 0e6901421247b1c7ce0a2e925666d5314a34fffa

URL: https://github.com/llvm/llvm-project/commit/0e6901421247b1c7ce0a2e925666d5314a34fffa
DIFF: https://github.com/llvm/llvm-project/commit/0e6901421247b1c7ce0a2e925666d5314a34fffa.diff

LOG: [clang][Interp][NFC] Add a failing test case

Added: 
    

Modified: 
    clang/test/AST/Interp/cxx20.cpp

Removed: 
    


################################################################################
diff  --git a/clang/test/AST/Interp/cxx20.cpp b/clang/test/AST/Interp/cxx20.cpp
index e088f6bafb7e..1b1a613b34b6 100644
--- a/clang/test/AST/Interp/cxx20.cpp
+++ b/clang/test/AST/Interp/cxx20.cpp
@@ -60,3 +60,21 @@ constexpr int unInitLocal() {
 static_assert(unInitLocal() == 0, ""); // expected-error {{not an integral constant expression}} \
                                        // ref-error {{not an integral constant expression}} \
                                        // ref-note {{in call to 'unInitLocal()'}}
+
+/// TODO: The example above is correctly rejected by the new constexpr
+///   interpreter, but for the wrong reasons. We don't reject it because
+///   it is an uninitialized read, we reject it simply because
+///   the local variable does not have an initializer.
+///
+///   The code below should be accepted but is also being rejected
+///   right now.
+#if 0
+constexpr int initializedLocal() {
+  int a;
+  int b;
+
+  a = 20;
+  return a;
+}
+static_assert(initializedLocal() == 20);
+#endif


        


More information about the cfe-commits mailing list