[llvm-branch-commits] [clang] fb79103 - Revert "[clang][Sema] Declare builtins used in #pragma intrinsic (#138205)"

via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Thu May 29 10:33:06 PDT 2025


Author: Nick Sarnie
Date: 2025-05-29T17:33:04Z
New Revision: fb79103e3dca8a2a0f5732aefbc9cf71b967d357

URL: https://github.com/llvm/llvm-project/commit/fb79103e3dca8a2a0f5732aefbc9cf71b967d357
DIFF: https://github.com/llvm/llvm-project/commit/fb79103e3dca8a2a0f5732aefbc9cf71b967d357.diff

LOG: Revert "[clang][Sema] Declare builtins used in #pragma intrinsic (#138205)"

This reverts commit 95bd9eef42679f3d13e3279204c75372e2c062f0.

Added: 
    

Modified: 
    clang/lib/Parse/ParsePragma.cpp

Removed: 
    clang/test/Sema/Inputs/builtin-system-header.h
    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 llvm-branch-commits mailing list