diff options
author | Andi Kleen <ak@linux.intel.com> | 2024-06-12 09:09:37 -0700 |
---|---|---|
committer | Andi Kleen <ak@linux.intel.com> | 2024-06-12 22:08:08 -0700 |
commit | 6f1f1657cd7a8472b4a4aeef60f1c59606ee011b (patch) | |
tree | fdf22713fbeeb14abdf0bc759ecfe1b346e8f867 /gcc | |
parent | f8bf80a4e1682b2238baad8c44939682f96b1fe0 (diff) | |
download | gcc-6f1f1657cd7a8472b4a4aeef60f1c59606ee011b.zip gcc-6f1f1657cd7a8472b4a4aeef60f1c59606ee011b.tar.gz gcc-6f1f1657cd7a8472b4a4aeef60f1c59606ee011b.tar.bz2 |
Remove const char * support for asm constexpr
asm constexpr now only accepts the same string types as C++26 assert,
e.g. string_view and string. Adjust test suite and documentation.
gcc/cp/ChangeLog:
* parser.cc (cp_parser_asm_string_expression): Remove support
for const char * for asm constexpr.
gcc/ChangeLog:
* doc/extend.texi: Use std::string_view in asm constexpr
example.
gcc/testsuite/ChangeLog:
* g++.dg/cpp1z/constexpr-asm-1.C: Use std::std_string_view.
* g++.dg/cpp1z/constexpr-asm-3.C: Dito.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/parser.cc | 7 | ||||
-rw-r--r-- | gcc/doc/extend.texi | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp1z/constexpr-asm-1.C | 12 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp1z/constexpr-asm-3.C | 12 |
4 files changed, 16 insertions, 18 deletions
diff --git a/gcc/cp/parser.cc b/gcc/cp/parser.cc index de5f048..98e8ca1 100644 --- a/gcc/cp/parser.cc +++ b/gcc/cp/parser.cc @@ -22852,13 +22852,6 @@ cp_parser_asm_string_expression (cp_parser *parser) tree string = cp_parser_constant_expression (parser); if (string != error_mark_node) string = cxx_constant_value (string, tf_error); - if (TREE_CODE (string) == NOP_EXPR) - string = TREE_OPERAND (string, 0); - if (TREE_CODE (string) == ADDR_EXPR - && TREE_CODE (TREE_OPERAND (string, 0)) == STRING_CST) - string = TREE_OPERAND (string, 0); - if (TREE_CODE (string) == VIEW_CONVERT_EXPR) - string = TREE_OPERAND (string, 0); cexpr_str cstr (string); if (!cstr.type_check (tok->location)) return error_mark_node; diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index 17e26c5..ee3644a 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -10716,7 +10716,8 @@ message. Any string is converted to the character set of the source code. When this feature is available the @code{__GXX_CONSTEXPR_ASM__} cpp symbol is defined. @example -constexpr const char *genfoo() @{ return "foo"; @} +#include <string> +constexpr std::string_view genfoo() @{ return "foo"; @} void function() @{ diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-asm-1.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-asm-1.C index 7cc6b37..311209a 100644 --- a/gcc/testsuite/g++.dg/cpp1z/constexpr-asm-1.C +++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-asm-1.C @@ -1,22 +1,24 @@ /* { dg-do compile } */ -/* { dg-options "-std=gnu++11" } */ +/* { dg-options "-std=gnu++17" } */ -constexpr const char *genfoo () +#include <string> + +constexpr std::string_view genfoo () { return "foo %1,%0"; } -constexpr const char *genoutput () +constexpr std::string_view genoutput () { return "=r"; } -constexpr const char *geninput () +constexpr std::string_view geninput () { return "r"; } -constexpr const char *genclobber () +constexpr std::string_view genclobber () { return "memory"; } diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-asm-3.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-asm-3.C index d336318..ef8a35a 100644 --- a/gcc/testsuite/g++.dg/cpp1z/constexpr-asm-3.C +++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-asm-3.C @@ -1,22 +1,24 @@ /* { dg-do compile } */ -/* { dg-options "-std=gnu++11" } */ +/* { dg-options "-std=gnu++17" } */ -constexpr const char *genfoo () +#include <string> + +constexpr std::string_view genfoo () { return "foo %1,%0"; } -constexpr const char *genoutput () +constexpr std::string_view genoutput () { return "=r"; } -constexpr const char *geninput () +constexpr std::string_view geninput () { return "r"; } -constexpr const char *genclobber () +constexpr std::string_view genclobber () { return "memory"; } |