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.
This commit is contained in:
Richard Sandiford 2024-09-02 09:56:56 +01:00
parent 5cbfb3a799
commit a4b6c6ab0b
11 changed files with 24 additions and 19 deletions

View file

@ -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;

View file

@ -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

View file

@ -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;

View file

@ -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. */

View file

@ -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

View file

@ -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);

View file

@ -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;

View file

@ -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);

View file

@ -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);

View file

@ -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

View file

@ -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))