[clang][Interp] Fix double-printing InterpFrame::describe()
authorTimm Bäder <tbaeder@redhat.com>
Mon, 16 Jan 2023 10:13:52 +0000 (11:13 +0100)
committerTimm Bäder <tbaeder@redhat.com>
Fri, 31 Mar 2023 13:25:30 +0000 (15:25 +0200)
Differential Revision: https://reviews.llvm.org/D141831

clang/lib/AST/Interp/InterpFrame.cpp
clang/test/AST/Interp/constexpr-nqueens.cpp

index 584cf1a..897d420 100644 (file)
@@ -126,6 +126,9 @@ void print(llvm::raw_ostream &OS, const Pointer &P, ASTContext &Ctx,
     F = F.isArrayElement() ? F.getArray().expand() : F.getBase();
   }
 
+  // Drop the first pointer since we print it unconditionally anyway.
+  Levels.erase(Levels.begin());
+
   printDesc(P.getDeclDesc());
   for (const auto &It : Levels) {
     if (It.inArray()) {
index ffe8553..5aeb7af 100644 (file)
@@ -6,9 +6,6 @@
 /// Board constructors.
 /// This tests that InterpFrame::describe().
 
-// FIXME: With the new interpreter, most of the described frames are
-//  currently broken in one way or another.
-
 typedef unsigned long uint64_t;
 
 struct Board {