[gcc r15-3376] Rename ASM_INPUT_P to ASM_BASIC_P
Richard Sandiford
rsandifo@gcc.gnu.org
Mon Sep 2 08:57:07 GMT 2024
https://gcc.gnu.org/g:a4b6c6ab0ba04a4fa409608a860067770317d0de
commit r15-3376-ga4b6c6ab0ba04a4fa409608a860067770317d0de
Author: Richard Sandiford <richard.sandiford@arm.com>
Date: Mon Sep 2 09:56:56 2024 +0100
Rename ASM_INPUT_P to ASM_BASIC_P
ASM_INPUT_P is so named because it causes the eventual rtl insn
pattern to be a top-level ASM_INPUT rather than an ASM_OPERANDS.
However, this name has caused confusion, partly due to earlier
documentation. The name also sounds related to ASM_INPUTS but
is for a different piece of state.
This patch renames it to ASM_BASIC_P, with the inverse meaning
an extended asm. ("Basic asm" is the term used in extend.texi.)
gcc/
* doc/generic.texi (ASM_BASIC_P): Document.
* tree.h (ASM_INPUT_P): Rename to...
(ASM_BASIC_P): ...this.
(ASM_VOLATILE_P, ASM_INLINE_P): Reindent.
* gimplify.cc (gimplify_asm_expr): Update after above renaming.
* tree-core.h (tree_base): Likewise.
gcc/c/
* c-typeck.cc (build_asm_expr): Rename ASM_INPUT_P to ASM_BASIC_P.
gcc/cp/
* pt.cc (tsubst_stmt): Rename ASM_INPUT_P to ASM_BASIC_P.
* parser.cc (cp_parser_asm_definition): Likewise.
gcc/d/
* toir.cc (IRVisitor): Rename ASM_INPUT_P to ASM_BASIC_P.
gcc/jit/
* jit-playback.cc (playback::block::add_extended_asm): Rename
ASM_INPUT_P to ASM_BASIC_P.
gcc/m2/
* gm2-gcc/m2block.cc (flush_pending_note): Rename ASM_INPUT_P
to ASM_BASIC_P.
* gm2-gcc/m2statement.cc (m2statement_BuildAsm): Likewise.
Diff:
---
gcc/c/c-typeck.cc | 2 +-
gcc/cp/parser.cc | 2 +-
gcc/cp/pt.cc | 2 +-
gcc/d/toir.cc | 5 ++---
gcc/doc/generic.texi | 16 +++++++++++-----
gcc/gimplify.cc | 2 +-
gcc/jit/jit-playback.cc | 2 +-
gcc/m2/gm2-gcc/m2block.cc | 2 +-
gcc/m2/gm2-gcc/m2statement.cc | 2 +-
gcc/tree-core.h | 2 +-
gcc/tree.h | 6 +++---
11 files changed, 24 insertions(+), 19 deletions(-)
diff --git a/gcc/c/c-typeck.cc b/gcc/c/c-typeck.cc
index 094e41fa2021..58b2724b39e3 100644
--- a/gcc/c/c-typeck.cc
+++ b/gcc/c/c-typeck.cc
@@ -11672,7 +11672,7 @@ build_asm_expr (location_t loc, tree string, tree outputs, tree inputs,
/* asm statements without outputs, including simple ones, are treated
as volatile. */
- ASM_INPUT_P (args) = simple;
+ ASM_BASIC_P (args) = simple;
ASM_VOLATILE_P (args) = (noutputs == 0);
ASM_INLINE_P (args) = is_inline;
diff --git a/gcc/cp/parser.cc b/gcc/cp/parser.cc
index 632d3dc5ecf4..edfa5a494405 100644
--- a/gcc/cp/parser.cc
+++ b/gcc/cp/parser.cc
@@ -23143,7 +23143,7 @@ cp_parser_asm_definition (cp_parser* parser)
if (TREE_CODE (temp) == CLEANUP_POINT_EXPR)
temp = TREE_OPERAND (temp, 0);
- ASM_INPUT_P (temp) = 1;
+ ASM_BASIC_P (temp) = 1;
}
}
else
diff --git a/gcc/cp/pt.cc b/gcc/cp/pt.cc
index 9e0f0486ffbc..024fa8a55290 100644
--- a/gcc/cp/pt.cc
+++ b/gcc/cp/pt.cc
@@ -18930,7 +18930,7 @@ tsubst_stmt (tree t, tree args, tsubst_flags_t complain, tree in_decl)
tree asm_expr = tmp;
if (TREE_CODE (asm_expr) == CLEANUP_POINT_EXPR)
asm_expr = TREE_OPERAND (asm_expr, 0);
- ASM_INPUT_P (asm_expr) = ASM_INPUT_P (t);
+ ASM_BASIC_P (asm_expr) = ASM_BASIC_P (t);
}
break;
diff --git a/gcc/d/toir.cc b/gcc/d/toir.cc
index 9f5531ce5cdf..a6848f2ffa2c 100644
--- a/gcc/d/toir.cc
+++ b/gcc/d/toir.cc
@@ -1491,10 +1491,9 @@ public:
outputs, inputs, clobbers, labels);
SET_EXPR_LOCATION (exp, make_location_t (s->loc));
- /* If the extended syntax was not used, mark the ASM_EXPR as being an
- ASM_INPUT expression instead of an ASM_OPERAND with no operands. */
+ /* Record whether the basic rather than extended syntax was used. */
if (s->args == NULL && s->clobbers == NULL)
- ASM_INPUT_P (exp) = 1;
+ ASM_BASIC_P (exp) = 1;
/* All asm statements are assumed to have a side effect. As a future
optimization, this could be unset when building in release mode. */
diff --git a/gcc/doc/generic.texi b/gcc/doc/generic.texi
index c596b7d44b21..3de394fd6e0a 100644
--- a/gcc/doc/generic.texi
+++ b/gcc/doc/generic.texi
@@ -2095,11 +2095,17 @@ asm ("fsinx %1,%0" : "=f" (result) : "f" (angle));
@end smallexample
The first string is the @code{ASM_STRING}, containing the instruction
template. The next two strings are the output and inputs, respectively;
-this statement has no clobbers. As this example indicates, ``plain''
-assembly statements are merely a special case of extended assembly
-statements; they have no cv-qualifiers, outputs, inputs, or clobbers.
-All of the strings will be @code{NUL}-terminated, and will contain no
-embedded @code{NUL}-characters.
+this statement has no clobbers. All of the strings will be
+@code{NUL}-terminated, and will contain no embedded @code{NUL}-characters.
+
+@code{ASM_BASIC_P} indicates whether the assembly statement used the
+``basic'' syntax (as for the first example above) or whether it used
+the extended syntax (as for the second example above). In many cases
+this information could be inferred from other accessors, but the flag
+is necessary to distinguish extended statements that have no operands
+from basic statements. A key difference between the two is that
+@code{%} substitution is applied to @code{ASM_STRING} for extended
+statements but not for basic statements.
If the assembly statement is declared @code{volatile}, or if the
statement was not an extended assembly statement, and is therefore
diff --git a/gcc/gimplify.cc b/gcc/gimplify.cc
index 081d69bce056..f0edb4f7edd9 100644
--- a/gcc/gimplify.cc
+++ b/gcc/gimplify.cc
@@ -7352,7 +7352,7 @@ gimplify_asm_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p)
ASM_VOLATILE_P (expr)
|| noutputs == 0
|| labels);
- gimple_asm_set_input (stmt, ASM_INPUT_P (expr));
+ gimple_asm_set_input (stmt, ASM_BASIC_P (expr));
gimple_asm_set_inline (stmt, ASM_INLINE_P (expr));
gimplify_seq_add_stmt (pre_p, stmt);
diff --git a/gcc/jit/jit-playback.cc b/gcc/jit/jit-playback.cc
index 501d5700873e..3e717752feab 100644
--- a/gcc/jit/jit-playback.cc
+++ b/gcc/jit/jit-playback.cc
@@ -2458,7 +2458,7 @@ playback::block::add_extended_asm (location *loc,
/* asm statements without outputs, including simple ones, are treated
as volatile. */
ASM_VOLATILE_P (asm_stmt) = (outputs->length () == 0);
- ASM_INPUT_P (asm_stmt) = 0; /* extended asm stmts are not "simple". */
+ ASM_BASIC_P (asm_stmt) = 0;
ASM_INLINE_P (asm_stmt) = is_inline;
if (is_volatile)
ASM_VOLATILE_P (asm_stmt) = 1;
diff --git a/gcc/m2/gm2-gcc/m2block.cc b/gcc/m2/gm2-gcc/m2block.cc
index b456a1b3df74..517c1d2af4d6 100644
--- a/gcc/m2/gm2-gcc/m2block.cc
+++ b/gcc/m2/gm2-gcc/m2block.cc
@@ -711,7 +711,7 @@ flush_pending_note (void)
tree note = build_stmt (pending_location, ASM_EXPR, string, NULL_TREE,
NULL_TREE, NULL_TREE, NULL_TREE);
- ASM_INPUT_P (note) = false;
+ ASM_BASIC_P (note) = false;
ASM_VOLATILE_P (note) = false;
#else
tree note = build_empty_stmt (pending_location);
diff --git a/gcc/m2/gm2-gcc/m2statement.cc b/gcc/m2/gm2-gcc/m2statement.cc
index dd7f2529f5d3..8b51febd12f0 100644
--- a/gcc/m2/gm2-gcc/m2statement.cc
+++ b/gcc/m2/gm2-gcc/m2statement.cc
@@ -519,7 +519,7 @@ m2statement_BuildAsm (location_t location, tree instr, bool isVolatile,
/* ASM statements without outputs, including simple ones, are treated
as volatile. */
- ASM_INPUT_P (args) = isSimple;
+ ASM_BASIC_P (args) = isSimple;
ASM_VOLATILE_P (args) = isVolatile;
add_stmt (location, args);
diff --git a/gcc/tree-core.h b/gcc/tree-core.h
index a36817059da3..4ba63ebd4f1b 100644
--- a/gcc/tree-core.h
+++ b/gcc/tree-core.h
@@ -1213,7 +1213,7 @@ struct GTY(()) tree_base {
TRY_CATCH_IS_CLEANUP in
TRY_CATCH_EXPR
- ASM_INPUT_P in
+ ASM_BASIC_P in
ASM_EXPR
TYPE_REF_CAN_ALIAS_ALL in
diff --git a/gcc/tree.h b/gcc/tree.h
index 93aa7d22d6f8..75efc760a163 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -1431,11 +1431,11 @@ class auto_suppress_location_wrappers
/* Nonzero if the asm is a basic asm, zero if it is an extended asm.
Basic asms use a plain ASM_INPUT insn pattern whereas extended asms
use an ASM_OPERANDS insn pattern. */
-#define ASM_INPUT_P(NODE) (ASM_EXPR_CHECK (NODE)->base.static_flag)
-#define ASM_VOLATILE_P(NODE) (ASM_EXPR_CHECK (NODE)->base.public_flag)
+#define ASM_BASIC_P(NODE) (ASM_EXPR_CHECK (NODE)->base.static_flag)
+#define ASM_VOLATILE_P(NODE) (ASM_EXPR_CHECK (NODE)->base.public_flag)
/* Nonzero if we want to consider this asm as minimum length and cost
for inlining decisions. */
-#define ASM_INLINE_P(NODE) (ASM_EXPR_CHECK (NODE)->base.protected_flag)
+#define ASM_INLINE_P(NODE) (ASM_EXPR_CHECK (NODE)->base.protected_flag)
/* COND_EXPR accessors. */
#define COND_EXPR_COND(NODE) (TREE_OPERAND (COND_EXPR_CHECK (NODE), 0))
More information about the Gcc-cvs
mailing list