[clang] Revert "[clang][Sema] Declare builtins used in #pragma intrinsic" (PR #141994)
Nick Sarnie via cfe-commits
cfe-commits at lists.llvm.org
Thu May 29 10:33:23 PDT 2025
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.sarnie at 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 at +10 {{call to undeclared library function '_InterlockedOr64'}}
-// expected-note at +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
More information about the cfe-commits
mailing list