llvm-project/clang/docs
Bill Wendling 50cac24877 Support output constraints on "asm goto"
Summary:
Clang's "asm goto" feature didn't initially support outputs constraints. That
was the same behavior as gcc's implementation. The decision by gcc not to
support outputs was based on a restriction in their IR regarding terminators.
LLVM doesn't restrict terminators from returning values (e.g. 'invoke'), so
it made sense to support this feature.

Output values are valid only on the 'fallthrough' path. If an output value's used
on an indirect branch, then it's 'poisoned'.

In theory, outputs *could* be valid on the 'indirect' paths, but it's very
difficult to guarantee that the original semantics would be retained. E.g.
because indirect labels could be used as data, we wouldn't be able to split
critical edges in situations where two 'callbr' instructions have the same
indirect label, because the indirect branch's destination would no longer be
the same.

Reviewers: jyknight, nickdesaulniers, hfinkel

Reviewed By: jyknight, nickdesaulniers

Subscribers: MaskRay, rsmith, hiraditya, llvm-commits, cfe-commits, craig.topper, rnk

Tags: #clang, #llvm

Differential Revision: https://reviews.llvm.org/D69876
2020-02-24 18:51:29 -08:00
..
CommandGuide Re-add documentation for -flax-vector-conversions= removed in 2020-01-23 12:28:03 -08:00
analyzer [analyzer] CERT: POS34-C 2020-02-19 18:12:19 +01:00
tools [docs] dump_ast_matchers strips internal::(Bindable)?Matcher from Result_type 2020-02-25 00:00:39 +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 some typos to cycle bots 2020-02-10 13:51:23 -05: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 Support -fstack-clash-protection for x86 2020-02-09 10:42:45 +01: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 [clang-format] Add new option BeforeLambdaBody in Allman style. 2020-02-13 22:16:41 +01: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 Update hwasan docs to cover outlined checks and globals. 2020-02-06 17:44:43 -08:00
HowToSetupToolingForLLVM.rst [NFC] Removing experimental designation for ninja in docs. 2020-01-28 15:28:40 -08:00
InternalsManual.rst Add a bit of documentation on attribute spellings that were missing. 2020-01-22 15:22:40 -05: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 Support output constraints on "asm goto" 2020-02-24 18:51:29 -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 [docs] dump_ast_matchers strips internal::(Bindable)?Matcher from Result_type 2020-02-25 00:00:39 +00: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][NFC] Update OpenMPSupport table 2020-02-15 00:40:39 -06: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 release notes for ffp-model and ffp-exception-behavior 2020-02-24 06:42:05 -08:00
SafeStack.rst [Docs] Modernize references to macOS 2019-05-30 16:46:22 +00:00
SanitizerCoverage.rst fix doc typos to cycle bots 2020-01-19 09:51:25 -05: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 fix some typos to cycle bots 2020-02-10 13:51:23 -05: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 Revert "Reland D74436 "Change clang option -ffp-model=precise to select ffp-contract=on""" 2020-02-19 12:03:27 +00:00
conf.py Bump the trunk major version to 11 2020-01-15 13:38:01 +01: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