Author: Timm Bäder Date: 2024-06-21T13:15:35+02:00 New Revision: c7c636189adc45251be2b7cc53b6b047e1ac3536
URL: https://github.com/llvm/llvm-project/commit/c7c636189adc45251be2b7cc53b6b047e1ac3536 DIFF: https://github.com/llvm/llvm-project/commit/c7c636189adc45251be2b7cc53b6b047e1ac3536.diff LOG: [clang][Interp] Don't try to decay non-pointers to pointers Added: Modified: clang/lib/AST/Interp/ByteCodeExprGen.cpp clang/test/CXX/temp/temp.res/temp.dep/temp.dep.constexpr/p2-0x.cpp Removed: ################################################################################ diff --git a/clang/lib/AST/Interp/ByteCodeExprGen.cpp b/clang/lib/AST/Interp/ByteCodeExprGen.cpp index 034e479ff3a32..edc2ec8e50952 100644 --- a/clang/lib/AST/Interp/ByteCodeExprGen.cpp +++ b/clang/lib/AST/Interp/ByteCodeExprGen.cpp @@ -4250,7 +4250,7 @@ bool ByteCodeExprGen<Emitter>::visitDeclRef(const ValueDecl *D, const Expr *E) { if (E->getType()->isVoidType()) return true; // Convert the dummy pointer to another pointer type if we have to. - if (PrimType PT = classifyPrim(E); PT != PT_Ptr) { + if (PrimType PT = classifyPrim(E); PT != PT_Ptr && isPtrType(PT)) { if (!this->emitDecayPtr(PT_Ptr, PT, E)) return false; } diff --git a/clang/test/CXX/temp/temp.res/temp.dep/temp.dep.constexpr/p2-0x.cpp b/clang/test/CXX/temp/temp.res/temp.dep/temp.dep.constexpr/p2-0x.cpp index 11dd5194192be..a63ffa92d726a 100644 --- a/clang/test/CXX/temp/temp.res/temp.dep/temp.dep.constexpr/p2-0x.cpp +++ b/clang/test/CXX/temp/temp.res/temp.dep/temp.dep.constexpr/p2-0x.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -std=c++11 -verify %s +// RUN: %clang_cc1 -std=c++11 -verify %s -fexperimental-new-constant-interpreter template<int n> struct S; // expected-note 3{{here}} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits