llvm-project/clang/docs
Erich Keane 349636d2bf Implement VectorType conditional operator GNU extension.
GCC supports the conditional operator on VectorTypes that acts as a
'select' in C++ mode. This patch implements the support. Types are
converted as closely to GCC's behavior as possible, though in a few
places consistency with our existing vector type support was preferred.

Note that this implementation is different from the OpenCL version in a
number of ways, so it unfortunately required a different implementation.

First, the SEMA rules and promotion rules are significantly different.

Secondly, GCC implements COND[i] != 0 ? LHS[i] : RHS[i] (where i is in
the range 0- VectorSize, for each element).  In OpenCL, the condition is
COND[i] < 0 ? LHS[i]: RHS[i].

In the process of implementing this, it was also required to make the
expression COND ? LHS : RHS type dependent if COND is type dependent,
since the type is now dependent on the condition.  For example:

    T ? 1 : 2;

Is not typically type dependent, since the result can be deduced from
the operands.  HOWEVER, if T is a VectorType now, it could change this
to a 'select' (basically a swizzle with a non-constant mask) with the 1
and 2 being promoted to vectors themselves.

While this is a change, it is NOT a standards incompatible change. Based
on my (and D. Gregor's, at the time of writing the code) reading of the
standard, the expression is supposed to be type dependent if ANY
sub-expression is type dependent.

Differential Revision: https://reviews.llvm.org/D71463
2020-01-13 13:27:20 -08:00
..
CommandGuide [Test Commit] Fix typo in diagtool.rst 2019-08-16 20:26:48 +00:00
analyzer [analyzer] Add PlacementNewChecker 2020-01-10 17:59:06 +01:00
tools [clang-format] Ensure dump_format_style.py can generate ClangFormatStyleOptions.rst without manual intervention 2019-11-08 14:40:36 +00:00
AddressSanitizer.rst [Docs] Modernize references to macOS 2019-05-30 16:46:22 +00:00
AttributeReference.rst
AutomaticReferenceCounting.rst Call objc_retainBlock before passing a block as a variadic argument 2019-12-13 13:10:07 -08:00
Block-ABI-Apple.rst Fix an error in the block ABI documentation sample code 2019-12-11 23:18:32 -08:00
Block-ABI-Apple.txt Update our URLs in clang doc to use https 2018-11-04 17:02:00 +00:00
BlockLanguageSpec.rst
CMakeLists.txt
ClangCheck.rst
ClangCommandLineReference.rst [Remarks][Docs] Enhance documentation for opt-remarks driver options 2019-12-10 13:19:49 -08:00
ClangFormat.rst Allow additional file suffixes/extensions considered as source in main include grouping 2019-11-12 21:26:52 +00:00
ClangFormatStyleOptions.rst Correct inf typo 2019-12-13 11:02:40 +08:00
ClangPlugins.rst [PragmaHandler] Expose `#pragma` location 2019-05-21 23:51:38 +00:00
ClangStaticAnalyzer.rst [analyzer]Add user docs rst 2019-07-10 14:49:53 +00:00
ClangTools.rst Fix some sphinx doc errors. 2019-02-01 17:06:41 +00:00
ConstantInterpreter.rst [ConstExprPreter] Removed the flag forcing the use of the interpreter 2019-11-27 20:07:19 +00:00
ControlFlowIntegrity.rst cfi-icall: Allow the jump table to be optionally made non-canonical. 2019-08-09 22:31:59 +00:00
ControlFlowIntegrityDesign.rst Adjust documentation for git migration. 2019-01-29 16:37:27 +00:00
CrossCompilation.rst Update our URLs in clang doc to use https 2018-11-04 17:02:00 +00:00
DataFlowSanitizer.rst
DataFlowSanitizerDesign.rst
DiagnosticsReference.rst fixup: sphinx warning 2019-01-10 19:26:35 +00:00
DriverArchitecture.png
DriverInternals.rst
ExternalClangExamples.rst [Documentation] Use HTTPS whenever possible 2019-01-23 20:39:07 +00:00
FAQ.rst
HardwareAssistedAddressSanitizerDesign.rst hwasan: Improve precision of checks using short granule tags. 2019-07-09 20:22:36 +00:00
HowToSetupToolingForLLVM.rst [Documentation] Use HTTPS whenever possible 2019-01-23 20:39:07 +00:00
InternalsManual.rst [ASTImporter][NFC] Update ASTImporter internals docs 2019-10-07 11:15:18 +00:00
IntroductionToTheClangAST.rst [Documentation] Use HTTPS whenever possible 2019-01-23 20:39:07 +00:00
ItaniumMangleAbiTags.rst
JSONCompilationDatabase.rst [Documentation] Use HTTPS whenever possible 2019-01-23 20:39:07 +00:00
LTOVisibility.rst LTOVisibility.rst: fix up syntax in example 2020-01-08 11:43:11 -08:00
LanguageExtensions.rst Implement VectorType conditional operator GNU extension. 2020-01-13 13:27:20 -08:00
LeakSanitizer.rst [Docs] Modernize references to macOS 2019-05-30 16:46:22 +00:00
LibASTImporter.rst [ASTImporter][NFC] Fix typo in user docs 2019-10-07 11:14:53 +00:00
LibASTMatchers.rst Update our URLs in clang doc to use https 2018-11-04 17:02:00 +00:00
LibASTMatchersReference.html Revert "[ASTMatchers] extract public matchers from const-analysis into own patch" 2020-01-11 19:41:27 +01:00
LibASTMatchersTutorial.rst fix a doc typo to cycle bots 2019-12-20 21:39:01 -05:00
LibFormat.rst Update our URLs in clang doc to use https 2018-11-04 17:02:00 +00:00
LibTooling.rst [Tooling] Migrated APIs that take ownership of objects to unique_ptr 2019-08-30 09:29:34 +00:00
MSVCCompatibility.rst [Documentation] Use HTTPS whenever possible 2019-01-23 20:39:07 +00:00
Makefile.sphinx
MemorySanitizer.rst [ReleaseNotes] MemorySanitizer support of ASLR on FreeBSD 2019-08-27 10:04:03 +00:00
Modules.rst [Implicit Modules] Add -cc1 option -fmodules-strict-context-hash which includes search paths and diagnostics. 2019-10-21 22:51:13 +00:00
ObjectiveCLiterals.rst
OpenCLSupport.rst [OpenCL] Add doc to describe OpenCL support 2019-10-17 12:56:02 +00:00
OpenMPSupport.rst [OPENMP][DOCS]Update status of OpenMP 5.0 features, NFC. 2019-12-24 12:39:59 -05:00
PCHInternals.rst [Documentation] Use HTTPS whenever possible 2019-01-23 20:39:07 +00:00
PCHLayout.graffle
PCHLayout.png
RAVFrontendAction.rst [Tooling] Migrated APIs that take ownership of objects to unique_ptr 2019-08-30 09:29:34 +00:00
README.txt
RefactoringEngine.rst Fix small nits in clang-refactor doc. 2017-10-10 09:00:56 +00:00
ReleaseNotes.rst Add -Wrange-loop-analysis changes to ReleaseNotes 2020-01-11 19:56:34 +01:00
SafeStack.rst [Docs] Modernize references to macOS 2019-05-30 16:46:22 +00:00
SanitizerCoverage.rst Update SanitizerCoverage doc regarding the issue with pc-table and gc-sections. 2019-02-01 17:12:35 +00:00
SanitizerSpecialCaseList.rst Allow specifying sanitizers in blacklists 2017-09-25 22:11:12 +00:00
SanitizerStats.rst [docs] -fsanitize=cfi only allowed with -fvisibility= 2018-06-15 23:11:18 +00:00
ShadowCallStack.rst Delete x86_64 ShadowCallStack support 2019-03-07 18:56:36 +00:00
SourceBasedCodeCoverage.rst [Coverage] Emit a gap region to cover switch bodies 2019-12-03 12:35:54 -08:00
ThinLTO.rst ThinLTO: Document the option BOOTSTRAP_LLVM_ENABLE_LTO 2019-09-02 15:34:53 +00:00
ThreadSafetyAnalysis.rst
ThreadSanitizer.rst [docs] Add some architectures into the list of supported ThreadSanitizer platforms 2019-03-05 21:10:42 +00:00
Toolchain.rst Adjust documentation for git migration. 2019-01-29 16:37:27 +00:00
Tooling.rst Update our URLs in clang doc to use https 2018-11-04 17:02:00 +00:00
UndefinedBehaviorSanitizer.rst [UBSan][clang][compiler-rt] Applying non-zero offset to nullptr is undefined behaviour 2019-10-10 09:25:02 +00:00
UsersManual.rst [OpenCL][Docs] Rename C++ for OpenCL label 2020-01-09 16:31:45 +00:00
conf.py Bump the trunk version to 10.0.0svn 2019-07-18 11:51:05 +00:00
doxygen-mainpage.dox
doxygen.cfg.in [NFC] Remove LLVM_ALIGNAS 2019-07-31 03:22:08 +00:00
index.rst [OpenCL] Add doc to describe OpenCL support 2019-10-17 12:56:02 +00:00
make.bat

README.txt

See llvm/docs/README.txt