Timm =?utf-8?q?Bäder?= <[email protected]> Message-ID: In-Reply-To: <llvm.org/llvm/llvm-project/pull/[email protected]>
https://github.com/tbaederr updated https://github.com/llvm/llvm-project/pull/201845 >From 2287ef041ebfd2e7089bec98c6a9cfb28213cb73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timm=20B=C3=A4der?= <[email protected]> Date: Fri, 5 Jun 2026 16:09:32 +0200 Subject: [PATCH 1/2] asdf --- clang/lib/AST/ByteCode/Interp.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/clang/lib/AST/ByteCode/Interp.cpp b/clang/lib/AST/ByteCode/Interp.cpp index 699b034c3c683..f6cac7aeb9fb5 100644 --- a/clang/lib/AST/ByteCode/Interp.cpp +++ b/clang/lib/AST/ByteCode/Interp.cpp @@ -65,15 +65,17 @@ static bool Jmp(InterpState &S, CodePtr &PC, int32_t Offset) { static bool Jt(InterpState &S, CodePtr &PC, int32_t Offset) { if (S.Stk.pop<bool>()) { PC += Offset; + return S.noteStep(PC); } - return S.noteStep(PC); + return true; } static bool Jf(InterpState &S, CodePtr &PC, int32_t Offset) { if (!S.Stk.pop<bool>()) { PC += Offset; + return S.noteStep(PC); } - return S.noteStep(PC); + return true; } static void diagnoseMissingInitializer(InterpState &S, CodePtr OpPC, >From e8770c7fa9351f87c015fc117a7db7b74c9a29aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timm=20B=C3=A4der?= <[email protected]> Date: Mon, 8 Jun 2026 08:35:33 +0200 Subject: [PATCH 2/2] Add test case --- clang/test/AST/ByteCode/switch-case-steps.cpp | 120 ++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 clang/test/AST/ByteCode/switch-case-steps.cpp diff --git a/clang/test/AST/ByteCode/switch-case-steps.cpp b/clang/test/AST/ByteCode/switch-case-steps.cpp new file mode 100644 index 0000000000000..c3fb10be300bb --- /dev/null +++ b/clang/test/AST/ByteCode/switch-case-steps.cpp @@ -0,0 +1,120 @@ +// RUN: %clang_cc1 -fexperimental-new-constant-interpreter -std=c++23 %s -fconstexpr-steps=2000 +// RUN: %clang_cc1 -std=c++23 %s -fconstexpr-steps=2000 + + + +constexpr int char_to_int(char ch) { + switch (ch) { + case '0': + return 0; + case '1': + return 1; + case '2': + return 2; + case '3': + return 3; + case '4': + return 4; + case '5': + return 5; + case '6': + return 6; + case '7': + return 7; + case '8': + return 8; + case '9': + return 9; + case 'a': + case 'A': + return 10; + case 'b': + case 'B': + return 11; + case 'c': + case 'C': + return 12; + case 'd': + case 'D': + return 13; + case 'e': + case 'E': + return 14; + case 'f': + case 'F': + return 15; + case 'g': + case 'G': + return 16; + case 'h': + case 'H': + return 17; + case 'i': + case 'I': + return 18; + case 'j': + case 'J': + return 19; + case 'k': + case 'K': + return 20; + case 'l': + case 'L': + return 21; + case 'm': + case 'M': + return 22; + case 'n': + case 'N': + return 23; + case 'o': + case 'O': + return 24; + case 'p': + case 'P': + return 25; + case 'q': + case 'Q': + return 26; + case 'r': + case 'R': + return 27; + case 's': + case 'S': + return 28; + case 't': + case 'T': + return 29; + case 'u': + case 'U': + return 30; + case 'v': + case 'V': + return 31; + case 'w': + case 'W': + return 32; + case 'x': + case 'X': + return 33; + case 'y': + case 'Y': + return 34; + case 'z': + case 'Z': + return 35; + default: + return 0; + } +} + +constexpr bool check() { + const char *str = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n"; + unsigned sum = 0; + for (const char *p = str; *p != '\0'; ++p) { + sum+= char_to_int(*p); + } + + return sum != 0; +} +static_assert(check()); _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
