llvm-project/clang/lib/Frontend
Chris Bieneman 19a0a56749 [HLSL] Add utility to convert environment to stage
We had a bunch of places in the code where we were translating triple
environment enum cases to shader stage enum cases. The order of these
enums needs to be kept in sync for the translation to be simple, but we
were not properly handling out-of-bounds cases.

In normal compilation out-of-bounds cases shouldn't be possible because
the driver errors if you don't have a valid shader environment set, but
in clang tooling that error doesn't get treated as fatal and parsing
continues. This can result in crashes in clang tooling for out-of-range
shader stages.

To address this, this patch adds a constexpr method to handle the
conversion which handles out-of-range values by converting them to
`Invalid`.

Since this new method is a constexpr, the tests for this are a group of
static_asserts in the implementation file that verifies the correct
conversion for each valid enum case and validates that other cases are
converted to `Invalid`.

Reviewed By: bogner

Differential Revision: https://reviews.llvm.org/D135595
2022-10-12 16:31:30 -05:00
..
Rewrite Fixed a number of typos 2022-08-01 13:13:18 -04:00
ASTConsumers.cpp [clang] Fix JSON AST output when a filter is used 2021-10-10 07:46:17 +05:30
ASTMerge.cpp
ASTUnit.cpp Remove redundant initialization of Optional (NFC) 2022-08-20 21:18:28 -07:00
CMakeLists.txt [clang] Enable output of SARIF diagnostics 2022-08-26 18:49:29 +00:00
ChainedDiagnosticConsumer.cpp
ChainedIncludesSource.cpp [NFC] Make MultiplexExternalSemaSource own sources 2022-09-02 13:57:39 -05:00
CompilerInstance.cpp [clang] Update ModuleMap::getModuleMapFile* to use FileEntryRef 2022-10-05 13:12:43 -07:00
CompilerInvocation.cpp [Frontend] Recognize environment variable SOURCE_DATE_EPOCH 2022-10-12 11:55:27 -07:00
CreateInvocationFromCommandLine.cpp [clang][driver] Introduce new -fdriver-only flag 2022-06-13 13:30:56 +02:00
DependencyFile.cpp [Lex] Introduce `PPCallbacks::LexedFileChanged()` preprocessor callback 2022-07-01 14:22:31 -07:00
DependencyGraph.cpp [clang][lex] NFCI: Use FileEntryRef in PPCallbacks::InclusionDirective() 2022-04-14 10:46:12 +02:00
DiagnosticRenderer.cpp [clang][Frontend] Fix a crash in DiagnosticRenderer. 2021-02-17 09:02:49 +01:00
FrontendAction.cpp [clang][deps] Prevent emitting diagnostics outside of source file 2022-10-11 15:57:20 -07:00
FrontendActions.cpp Implement DR2565: Invalid types in the parameter-declaration-clause of a 2022-10-04 10:32:48 -07:00
FrontendOptions.cpp [HLSL] Infer language from file extension 2022-08-23 20:52:29 -05:00
HeaderIncludeGen.cpp [clang] Inclusive language: change instances of blacklist/whitelist to allowlist/ignorelist 2021-11-12 15:46:16 +00:00
InitPreprocessor.cpp [HLSL] Add utility to convert environment to stage 2022-10-12 16:31:30 -05:00
InterfaceStubFunctionsConsumer.cpp [ifs] Prepare llvm-ifs for elfabi/ifs merging. 2021-07-19 11:23:00 -07:00
LayoutOverrideSource.cpp [Driver, Frontend] Use StringRef::contains (NFC) 2021-10-19 08:54:02 -07:00
LogDiagnosticPrinter.cpp Remove a few effectively-unused FileEntry APIs. NFC 2022-04-07 16:45:47 +02:00
ModuleDependencyCollector.cpp [clang][lex] NFCI: Use FileEntryRef in PPCallbacks::InclusionDirective() 2022-04-14 10:46:12 +02:00
MultiplexConsumer.cpp [Clang] Override method ModuleImportRead in MultiplexASTDeserializationListener 2022-04-11 08:38:37 -04:00
PrecompiledPreamble.cpp [Frontend] when attaching a preamble, don't generate the long predefines buffer. 2022-05-09 15:55:32 +02:00
PrintPreprocessedOutput.cpp [clang] Use std::size instead of llvm::array_lengthof 2022-09-08 17:20:25 -06:00
SARIFDiagnostic.cpp [clang] Better warning-fix follow-up to D131632 2022-08-26 18:29:20 -04:00
SARIFDiagnosticPrinter.cpp [clang] Enable output of SARIF diagnostics 2022-08-26 18:49:29 +00:00
SerializedDiagnosticPrinter.cpp [clang] Remove redundant member initialization (NFC) 2022-01-02 10:20:23 -08:00
SerializedDiagnosticReader.cpp [clang] LLVM_FALLTHROUGH => [[fallthrough]]. NFC 2022-08-08 09:12:46 -07:00
TestModuleFileExtension.cpp [NFC][clang] Return underlying strings directly instead of OS.str() 2021-12-09 16:05:46 -08:00
TestModuleFileExtension.h [modules] Use `HashBuilder` and `MD5` for the module hash. 2021-09-03 11:13:36 -07:00
TextDiagnostic.cpp Use llvm::none_of (NFC) 2022-08-14 16:25:39 -07:00
TextDiagnosticBuffer.cpp
TextDiagnosticPrinter.cpp [clang-cl] Remove the /fallback option 2021-02-04 10:33:16 +01:00
VerifyDiagnosticConsumer.cpp [clang][lex] NFC: Simplify calls to `LookupFile` 2022-01-18 16:02:18 +01:00