https://github.com/sarnex created https://github.com/llvm/llvm-project/pull/141994
Reverts llvm/llvm-project#138205 Breaks Chrome. >From fb79103e3dca8a2a0f5732aefbc9cf71b967d357 Mon Sep 17 00:00:00 2001 From: Nick Sarnie <nick.sar...@intel.com> Date: Thu, 29 May 2025 17:33:04 +0000 Subject: [PATCH] Revert "[clang][Sema] Declare builtins used in #pragma intrinsic (#138205)" This reverts commit 95bd9eef42679f3d13e3279204c75372e2c062f0. --- clang/lib/Parse/ParsePragma.cpp | 18 +++---------- .../test/Sema/Inputs/builtin-system-header.h | 9 ------- clang/test/Sema/builtin-pragma-intrinsic.c | 25 ------------------- 3 files changed, 3 insertions(+), 49 deletions(-) delete mode 100644 clang/test/Sema/Inputs/builtin-system-header.h delete mode 100644 clang/test/Sema/builtin-pragma-intrinsic.c diff --git a/clang/lib/Parse/ParsePragma.cpp b/clang/lib/Parse/ParsePragma.cpp index 4e67fd033b9aa..77b61af768993 100644 --- a/clang/lib/Parse/ParsePragma.cpp +++ b/clang/lib/Parse/ParsePragma.cpp @@ -301,13 +301,9 @@ struct PragmaMSRuntimeChecksHandler : public EmptyPragmaHandler { }; struct PragmaMSIntrinsicHandler : public PragmaHandler { - PragmaMSIntrinsicHandler(Sema &Actions) - : PragmaHandler("intrinsic"), Actions(Actions) {} + PragmaMSIntrinsicHandler() : PragmaHandler("intrinsic") {} void HandlePragma(Preprocessor &PP, PragmaIntroducer Introducer, Token &FirstToken) override; - -private: - Sema &Actions; }; // "\#pragma fenv_access (on)". @@ -521,7 +517,7 @@ void Parser::initializePragmaHandlers() { PP.AddPragmaHandler(MSOptimize.get()); MSRuntimeChecks = std::make_unique<PragmaMSRuntimeChecksHandler>(); PP.AddPragmaHandler(MSRuntimeChecks.get()); - MSIntrinsic = std::make_unique<PragmaMSIntrinsicHandler>(Actions); + MSIntrinsic = std::make_unique<PragmaMSIntrinsicHandler>(); PP.AddPragmaHandler(MSIntrinsic.get()); MSFenvAccess = std::make_unique<PragmaMSFenvAccessHandler>(); PP.AddPragmaHandler(MSFenvAccess.get()); @@ -3797,15 +3793,7 @@ void PragmaMSIntrinsicHandler::HandlePragma(Preprocessor &PP, if (!II->getBuiltinID()) PP.Diag(Tok.getLocation(), diag::warn_pragma_intrinsic_builtin) << II << SuggestIntrinH; - // If the builtin hasn't already been declared, declare it now. - DeclarationNameInfo NameInfo(II, Tok.getLocation()); - LookupResult Previous(Actions, NameInfo, Sema::LookupOrdinaryName, - Actions.forRedeclarationInCurContext()); - Actions.LookupName(Previous, Actions.getCurScope(), - /*CreateBuiltins*/ false); - if (Previous.empty()) - Actions.LazilyCreateBuiltin(II, II->getBuiltinID(), Actions.getCurScope(), - /*ForRedeclaration*/ true, Tok.getLocation()); + PP.Lex(Tok); if (Tok.isNot(tok::comma)) break; diff --git a/clang/test/Sema/Inputs/builtin-system-header.h b/clang/test/Sema/Inputs/builtin-system-header.h deleted file mode 100644 index 7eeb8d811fcfa..0000000000000 --- a/clang/test/Sema/Inputs/builtin-system-header.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifdef USE_PRAGMA_BEFORE -#pragma intrinsic(_InterlockedOr64) -#endif - -#define MACRO(x,y) _InterlockedOr64(x,y); - -#ifdef USE_PRAGMA_AFTER -#pragma intrinsic(_InterlockedOr64) -#endif diff --git a/clang/test/Sema/builtin-pragma-intrinsic.c b/clang/test/Sema/builtin-pragma-intrinsic.c deleted file mode 100644 index 1e8507bfd37df..0000000000000 --- a/clang/test/Sema/builtin-pragma-intrinsic.c +++ /dev/null @@ -1,25 +0,0 @@ -// RUN: %clang_cc1 -fms-extensions -fsyntax-only -verify -triple arm64-windows -isystem %S/Inputs %s -DUSE_PRAGMA_BEFORE -// RUN: %clang_cc1 -fms-extensions -fsyntax-only -verify -triple arm64-windows -isystem %S/Inputs %s -DUSE_PRAGMA_AFTER -// RUN: %clang_cc1 -fms-extensions -fsyntax-only -verify -triple arm64-windows -isystem %S/Inputs %s -DUSE_PRAGMA_AFTER_USE -// RUN: %clang_cc1 -fms-extensions -fsyntax-only -verify -triple arm64-windows -isystem %S/Inputs %s -DUSE_PRAGMA_SAME_FILE -// RUN: %clang_cc1 -fms-extensions -fsyntax-only -verify -triple arm64-windows -isystem %S/Inputs %s - -#if defined(USE_PRAGMA_BEFORE) || defined(USE_PRAGMA_AFTER) || defined(USE_PRAGMA_SAME_FILE) -// expected-no-diagnostics -#else -// expected-error@+10 {{call to undeclared library function '_InterlockedOr64'}} -// expected-note@+9 {{include the header <intrin.h> or explicitly provide a declaration for '_InterlockedOr64'}} -#endif -#include <builtin-system-header.h> - -#ifdef USE_PRAGMA_SAME_FILE -#pragma intrinsic(_InterlockedOr64) -#endif - -void foo() { - MACRO(0,0); -} - -#ifdef USE_PRAGMA_AFTER_USE -#pragma intrinsic(_InterlockedOr64) -#endif _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits