[clang] f9e4964 - Revert "wip"

Chris Bieneman via cfe-commits cfe-commits at lists.llvm.org
Fri Jun 17 11:37:03 PDT 2022


Author: Chris Bieneman
Date: 2022-06-17T13:36:53-05:00
New Revision: f9e49644f4875ba1807781b1224b3136fefe38e9

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

LOG: Revert "wip"

This reverts commit 0dd243fa8a4ec98d6cabbad16e6b485a093c6dea.

I accidentally pushed this! Oops!

Added: 
    

Modified: 
    clang/lib/Frontend/FrontendAction.cpp
    clang/lib/Headers/hlsl/hlsl_basic_types.h
    clang/lib/Sema/CMakeLists.txt

Removed: 
    clang/include/clang/Sema/HLSLExternalSemaSource.h
    clang/lib/Sema/HLSLExternalSemaSource.cpp
    clang/test/SemaHLSL/BuiltIns/vectors.hlsl


################################################################################
diff  --git a/clang/include/clang/Sema/HLSLExternalSemaSource.h b/clang/include/clang/Sema/HLSLExternalSemaSource.h
deleted file mode 100644
index 23dd02ef611e3..0000000000000
--- a/clang/include/clang/Sema/HLSLExternalSemaSource.h
+++ /dev/null
@@ -1,45 +0,0 @@
-//===--- HLSLExternalSemaSource.h - HLSL Sema Source ------------*- C++ -*-===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-//
-//  This file defines the HLSLExternalSemaSource interface.
-//
-//===----------------------------------------------------------------------===//
-#ifndef CLANG_SEMA_HLSLEXTERNALSEMASOURCE_H
-#define CLANG_SEMA_HLSLEXTERNALSEMASOURCE_H
-
-#include "clang/Sema/ExternalSemaSource.h"
-
-namespace clang {
-class NamespaceDecl;
-class Sema;
-
-class HLSLExternalSemaSource : public ExternalSemaSource {
-  static char ID;
-
-  Sema *SemaPtr = nullptr;
-  NamespaceDecl *HLSLNamespace;
-
-  void defineHLSLVectorAlias();
-public:
-  ~HLSLExternalSemaSource() override;
-
-  /// Initialize the semantic source with the Sema instance
-  /// being used to perform semantic analysis on the abstract syntax
-  /// tree.
-  void InitializeSema(Sema &S) override;
-
-  /// Inform the semantic consumer that Sema is no longer available.
-  void ForgetSema() override {
-    SemaPtr = nullptr;
-  }
-
-};
-
-} // namespace clang
-
-#endif // CLANG_SEMA_HLSLEXTERNALSEMASOURCE_H

diff  --git a/clang/lib/Frontend/FrontendAction.cpp b/clang/lib/Frontend/FrontendAction.cpp
index 4a141e6200030..6b1f6364b13c3 100644
--- a/clang/lib/Frontend/FrontendAction.cpp
+++ b/clang/lib/Frontend/FrontendAction.cpp
@@ -24,7 +24,6 @@
 #include "clang/Lex/Preprocessor.h"
 #include "clang/Lex/PreprocessorOptions.h"
 #include "clang/Parse/ParseAST.h"
-#include "clang/Sema/HLSLExternalSemaSource.h"
 #include "clang/Serialization/ASTDeserializationListener.h"
 #include "clang/Serialization/ASTReader.h"
 #include "clang/Serialization/GlobalModuleIndex.h"
@@ -1015,13 +1014,6 @@ bool FrontendAction::BeginSourceFile(CompilerInstance &CI,
     CI.getASTContext().setExternalSource(Override);
   }
 
-  // Setup HLSL External Sema Source
-  if (CI.getLangOpts().HLSL && CI.hasASTContext()) {
-    IntrusiveRefCntPtr<ExternalASTSource> HLSLSema(
-        new HLSLExternalSemaSource());
-    CI.getASTContext().setExternalSource(HLSLSema);
-  }
-
   FailureCleanup.release();
   return true;
 }

diff  --git a/clang/lib/Headers/hlsl/hlsl_basic_types.h b/clang/lib/Headers/hlsl/hlsl_basic_types.h
index e68715f1a6a45..2069990f5c06c 100644
--- a/clang/lib/Headers/hlsl/hlsl_basic_types.h
+++ b/clang/lib/Headers/hlsl/hlsl_basic_types.h
@@ -27,38 +27,38 @@ typedef long int64_t;
 // built-in vector data types:
 
 #ifdef __HLSL_ENABLE_16_BIT
-typedef vector<int16_t, 2> int16_t2;
-typedef vector<int16_t, 3> int16_t3;
-typedef vector<int16_t, 4> int16_t4;
-typedef vector<uint16_t, 2> uint16_t2;
-typedef vector<uint16_t, 3> uint16_t3;
-typedef vector<uint16_t, 4> uint16_t4;
+typedef int16_t int16_t2 __attribute__((ext_vector_type(2)));
+typedef int16_t int16_t3 __attribute__((ext_vector_type(3)));
+typedef int16_t int16_t4 __attribute__((ext_vector_type(4)));
+typedef uint16_t uint16_t2 __attribute__((ext_vector_type(2)));
+typedef uint16_t uint16_t3 __attribute__((ext_vector_type(3)));
+typedef uint16_t uint16_t4 __attribute__((ext_vector_type(4)));
 #endif
 
-typedef vector<int, 2> int2;
-typedef vector<int, 3> int3;
-typedef vector<int, 4> int4;
-typedef vector<uint, 2> uint2;
-typedef vector<uint, 3> uint3;
-typedef vector<uint, 4> uint4;
-typedef vector<int64_t, 2> int64_t2;
-typedef vector<int64_t, 3> int64_t3;
-typedef vector<int64_t, 4> int64_t4;
-typedef vector<uint64_t, 2> uint64_t2;
-typedef vector<uint64_t, 3> uint64_t3;
-typedef vector<uint64_t, 4> uint64_t4;
+typedef int int2 __attribute__((ext_vector_type(2)));
+typedef int int3 __attribute__((ext_vector_type(3)));
+typedef int int4 __attribute__((ext_vector_type(4)));
+typedef uint uint2 __attribute__((ext_vector_type(2)));
+typedef uint uint3 __attribute__((ext_vector_type(3)));
+typedef uint uint4 __attribute__((ext_vector_type(4)));
+typedef int64_t int64_t2 __attribute__((ext_vector_type(2)));
+typedef int64_t int64_t3 __attribute__((ext_vector_type(3)));
+typedef int64_t int64_t4 __attribute__((ext_vector_type(4)));
+typedef uint64_t uint64_t2 __attribute__((ext_vector_type(2)));
+typedef uint64_t uint64_t3 __attribute__((ext_vector_type(3)));
+typedef uint64_t uint64_t4 __attribute__((ext_vector_type(4)));
 
 #ifdef __HLSL_ENABLE_16_BIT
-typedef vector<half, 2> half2;
-typedef vector<half, 3> half3;
-typedef vector<half, 4> half4;
+typedef half half2 __attribute__((ext_vector_type(2)));
+typedef half half3 __attribute__((ext_vector_type(3)));
+typedef half half4 __attribute__((ext_vector_type(4)));
 #endif
 
-typedef vector<float, 2> float2;
-typedef vector<float, 3> float3;
-typedef vector<float, 4> float4;
-typedef vector<double, 2> double2;
-typedef vector<double, 3> double3;
-typedef vector<double, 4> double4;
+typedef float float2 __attribute__((ext_vector_type(2)));
+typedef float float3 __attribute__((ext_vector_type(3)));
+typedef float float4 __attribute__((ext_vector_type(4)));
+typedef double double2 __attribute__((ext_vector_type(2)));
+typedef double double3 __attribute__((ext_vector_type(3)));
+typedef double double4 __attribute__((ext_vector_type(4)));
 
 #endif //_HLSL_HLSL_BASIC_TYPES_H_

diff  --git a/clang/lib/Sema/CMakeLists.txt b/clang/lib/Sema/CMakeLists.txt
index 2901dc4401a30..0e0681a8e2927 100644
--- a/clang/lib/Sema/CMakeLists.txt
+++ b/clang/lib/Sema/CMakeLists.txt
@@ -15,7 +15,6 @@ add_clang_library(clangSema
   CodeCompleteConsumer.cpp
   DeclSpec.cpp
   DelayedDiagnostic.cpp
-  HLSLExternalSemaSource.cpp
   IdentifierResolver.cpp
   JumpDiagnostics.cpp
   MultiplexExternalSemaSource.cpp

diff  --git a/clang/lib/Sema/HLSLExternalSemaSource.cpp b/clang/lib/Sema/HLSLExternalSemaSource.cpp
deleted file mode 100644
index 7013e878cf9a2..0000000000000
--- a/clang/lib/Sema/HLSLExternalSemaSource.cpp
+++ /dev/null
@@ -1,98 +0,0 @@
-//===--- HLSLExternalSemaSource.cpp - HLSL Sema Source --------------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-//
-//
-//===----------------------------------------------------------------------===//
-
-#include "clang/Sema/HLSLExternalSemaSource.h"
-#include "clang/AST/ASTContext.h"
-#include "clang/AST/DeclCXX.h"
-#include "clang/Basic/AttrKinds.h"
-#include "clang/Sema/Sema.h"
-
-using namespace clang;
-
-char HLSLExternalSemaSource::ID;
-
-HLSLExternalSemaSource::~HLSLExternalSemaSource() {}
-
-void HLSLExternalSemaSource::InitializeSema(Sema &S) {
-  SemaPtr = &S;
-  ASTContext &AST = SemaPtr->getASTContext();
-  IdentifierInfo &HLSL = AST.Idents.get("hlsl", tok::TokenKind::identifier);
-  HLSLNamespace =
-      NamespaceDecl::Create(AST, AST.getTranslationUnitDecl(), false,
-                            SourceLocation(), SourceLocation(), &HLSL, nullptr);
-  HLSLNamespace->setImplicit(true);
-  AST.getTranslationUnitDecl()->addDecl(HLSLNamespace);
-  defineHLSLVectorAlias();
-
-  // This adds a `using namespace hlsl` directive. In DXC, we don't put HLSL's
-  // built in types inside a namespace, but we are planning to change that in
-  // the near future. In order to be source compatible older versions of HLSL
-  // will need to implicitly use the hlsl namespace. For now in clang everything
-  // will get added to the namespace, and we can remove the using directive for
-  // future language versions to match HLSL's evolution.
-  auto *UsingDecl = UsingDirectiveDecl::Create(
-      AST, AST.getTranslationUnitDecl(), SourceLocation(), SourceLocation(),
-      NestedNameSpecifierLoc(), SourceLocation(), HLSLNamespace,
-      AST.getTranslationUnitDecl());
-
-  AST.getTranslationUnitDecl()->addDecl(UsingDecl);
-}
-
-void HLSLExternalSemaSource::defineHLSLVectorAlias() {
-  ASTContext &AST = SemaPtr->getASTContext();
-
-  llvm::SmallVector<NamedDecl *> TemplateArgs;
-
-  auto *TypeParam = TemplateTypeParmDecl::Create(
-      AST, HLSLNamespace, SourceLocation(), SourceLocation(), 0, 0,
-      &AST.Idents.get("element", tok::TokenKind::identifier), false, false);
-  TypeParam->setDefaultArgument(AST.getTrivialTypeSourceInfo(AST.FloatTy));
-
-  TemplateArgs.emplace_back(TypeParam);
-
-  auto *SizeParam = NonTypeTemplateParmDecl::Create(
-      AST, HLSLNamespace, SourceLocation(), SourceLocation(), 0, 1,
-      &AST.Idents.get("element_count", tok::TokenKind::identifier), AST.IntTy,
-      false, AST.getTrivialTypeSourceInfo(AST.IntTy));
-  Expr *LiteralExpr =
-      IntegerLiteral::Create(AST, llvm::APInt(AST.getIntWidth(AST.IntTy), 4),
-                             AST.IntTy, SourceLocation());
-  SizeParam->setDefaultArgument(LiteralExpr);
-  TemplateArgs.emplace_back(SizeParam);
-
-  auto *ParamList =
-      TemplateParameterList::Create(AST, SourceLocation(), SourceLocation(),
-                                    TemplateArgs, SourceLocation(), nullptr);
-
-  IdentifierInfo &II = AST.Idents.get("vector", tok::TokenKind::identifier);
-
-  QualType AliasType = AST.getDependentSizedExtVectorType(
-      AST.getTemplateTypeParmType(0, 0, false, TypeParam),
-      DeclRefExpr::Create(
-          AST, NestedNameSpecifierLoc(), SourceLocation(), SizeParam, false,
-          DeclarationNameInfo(SizeParam->getDeclName(), SourceLocation()),
-          AST.IntTy, VK_LValue),
-      SourceLocation());
-
-  auto *Record = TypeAliasDecl::Create(AST, HLSLNamespace, SourceLocation(),
-                                       SourceLocation(), &II,
-                                       AST.getTrivialTypeSourceInfo(AliasType));
-  Record->setImplicit(true);
-
-  auto *Template =
-      TypeAliasTemplateDecl::Create(AST, HLSLNamespace, SourceLocation(),
-                                    Record->getIdentifier(), ParamList, Record);
-
-  Record->setDescribedAliasTemplate(Template);
-  Template->setImplicit(true);
-  Template->setLexicalDeclContext(Record->getDeclContext());
-  HLSLNamespace->addDecl(Template);
-}

diff  --git a/clang/test/SemaHLSL/BuiltIns/vectors.hlsl b/clang/test/SemaHLSL/BuiltIns/vectors.hlsl
deleted file mode 100644
index 54a8fad9d4e56..0000000000000
--- a/clang/test/SemaHLSL/BuiltIns/vectors.hlsl
+++ /dev/null
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-compute -x hlsl -ast-dump -o - %s | FileCheck %s 
-
-#include "hlsl.h"
-
-[numthreads(1,1,1)]
-int entry() {
-  // verify that the alias is generated inside the hlsl namespace
-  hlsl::vector<float, 2> Vec2 = {1.0, 2.0};
-
-  // verify that you don't need to specify the namespace
-  vector<float, 2> Vec2a = {1.0, 2.0};
-
-  // verify the typedef works
-  uint3 UVec = {1, 2, 3};
-
-  // build a big vector
-  vector<float, 4> Vec4 = {1.0, 2.0, 3.0, 4.0};
-  // verify swizzles work
-  vector<float, 3> Vec3 = Vec4.xyz;
-  return 1;
-}


        


More information about the cfe-commits mailing list