[PATCH] D143205: [clang] add __has_extension(gnu_asm_goto_with_outputs_full)
Nick Desaulniers via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Feb 16 14:57:39 PST 2023
nickdesaulniers updated this revision to Diff 498159.
nickdesaulniers added a comment.
- final rebase
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D143205/new/
https://reviews.llvm.org/D143205
Files:
clang/docs/LanguageExtensions.rst
clang/include/clang/Basic/Features.def
clang/test/Parser/asm-goto.c
Index: clang/test/Parser/asm-goto.c
===================================================================
--- clang/test/Parser/asm-goto.c
+++ clang/test/Parser/asm-goto.c
@@ -7,6 +7,9 @@
#if !__has_extension(gnu_asm_goto_with_outputs)
#error Extension 'gnu_asm_goto_with_outputs' should be available by default
#endif
+#if !__has_extension(gnu_asm_goto_with_outputs_full)
+#error Extension 'gnu_asm_goto_with_outputs_full' should be available by default
+#endif
int a, b, c, d, e, f, g, h, i, j, k, l;
Index: clang/include/clang/Basic/Features.def
===================================================================
--- clang/include/clang/Basic/Features.def
+++ clang/include/clang/Basic/Features.def
@@ -268,6 +268,7 @@
EXTENSION(statement_attributes_with_gnu_syntax, true)
EXTENSION(gnu_asm, LangOpts.GNUAsm)
EXTENSION(gnu_asm_goto_with_outputs, LangOpts.GNUAsm)
+EXTENSION(gnu_asm_goto_with_outputs_full, LangOpts.GNUAsm)
EXTENSION(matrix_types, LangOpts.MatrixTypes)
EXTENSION(matrix_types_scalar_division, true)
EXTENSION(cxx_attributes_on_using_declarations, LangOpts.CPlusPlus11)
Index: clang/docs/LanguageExtensions.rst
===================================================================
--- clang/docs/LanguageExtensions.rst
+++ clang/docs/LanguageExtensions.rst
@@ -1591,6 +1591,12 @@
Outputs may be used along any branches from the ``asm goto`` whether the
branches are taken or not.
+Query for this feature with ``__has_extension(gnu_asm_goto_with_outputs)``.
+
+Prior to clang-16, the output may only be used safely when the indirect
+branches are not taken. Query for this difference with
+``__has_extension(gnu_asm_goto_with_outputs_full)``.
+
When using tied-outputs (i.e. outputs that are inputs and outputs, not just
outputs) with the `+r` constraint, there is a hidden input that's created
before the label, so numeric references to operands must account for that.
@@ -1618,8 +1624,6 @@
return -1;
}
-Query for this feature with ``__has_extension(gnu_asm_goto_with_outputs)``.
-
Objective-C Features
====================
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D143205.498159.patch
Type: text/x-patch
Size: 2078 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20230216/114b16c0/attachment.bin>
More information about the cfe-commits
mailing list