From 48727f1a5c5402eb380ef69a77d8ac2702412d7f Mon Sep 17 00:00:00 2001 From: Devon Loehr Date: Thu, 2 Oct 2025 18:41:26 +0000 Subject: [PATCH] Revert "[clang] Convert second arg of __builtin_assume_aligned to ConstantExpr (#161314)" This reverts commit 8f77621574176387f906b8ceef9e1abb90bf22f6. --- clang/docs/ReleaseNotes.rst | 2 -- clang/lib/Sema/SemaChecking.cpp | 3 --- clang/test/SemaCXX/builtin-assume-aligned.cpp | 6 ------ 3 files changed, 11 deletions(-) diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst index 74b0647f38795..145a83af514ed 100644 --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -246,8 +246,6 @@ Non-comprehensive list of changes in this release - ``__builtin_assume_dereferenceable`` now accepts non-constant size operands. -- Fixed a crash when the second argument to ``__builtin_assume_aligned`` was not constant (#GH161314) - New Compiler Flags ------------------ - New option ``-fno-sanitize-debug-trap-reasons`` added to disable emitting trap reasons into the debug info when compiling with trapping UBSan (e.g. ``-fsanitize-trap=undefined``). diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp index 3cc61b167ba98..7ce3513fe0969 100644 --- a/clang/lib/Sema/SemaChecking.cpp +++ b/clang/lib/Sema/SemaChecking.cpp @@ -5954,9 +5954,6 @@ bool Sema::BuiltinAssumeAligned(CallExpr *TheCall) { if (Result > Sema::MaximumAlignment) Diag(TheCall->getBeginLoc(), diag::warn_assume_aligned_too_great) << SecondArg->getSourceRange() << Sema::MaximumAlignment; - - TheCall->setArg(1, - ConstantExpr::Create(Context, SecondArg, APValue(Result))); } if (NumArgs > 2) { diff --git a/clang/test/SemaCXX/builtin-assume-aligned.cpp b/clang/test/SemaCXX/builtin-assume-aligned.cpp index afc11cc694705..48bd8414fc50a 100644 --- a/clang/test/SemaCXX/builtin-assume-aligned.cpp +++ b/clang/test/SemaCXX/builtin-assume-aligned.cpp @@ -47,9 +47,3 @@ constexpr void *s1 = __builtin_assume_aligned(x, 32); constexpr void *s2 = __builtin_assume_aligned(x, 32, 5); constexpr void *s3 = __builtin_assume_aligned(x, 32, -1); - -constexpr int add(int a, int b) { - return a+b; -} -constexpr void *c1 = __builtin_assume_aligned(p, add(1,1)); -constexpr void *c2 = __builtin_assume_aligned(p, add(2,1)); // expected-error {{not a power of 2}}