Victor Do Nascimento <victor.donascime...@arm.com> writes:
> Motivated by the need to print system register names in output
> assembly, this patch adds the required logic to
> `aarch64_print_operand' to accept rtxs of type CONST_STRING and
> process these accordingly.
>
> Consequently, an rtx such as:
>
>   (set (reg/i:DI 0 x0)
>          (unspec:DI [(const_string ("s3_3_c13_c2_2"))])
>
> can now be output correctly using the following output pattern when
> composing `define_insn's:
>
>   "mrs\t%x0, %1"
>
> gcc/ChangeLog
>
>       * gcc/config/aarch64/aarch64.cc (aarch64_print_operand): Add
>       support for CONST_STRING.
> ---
>  gcc/config/aarch64/aarch64.cc | 6 ++++++
>  1 file changed, 6 insertions(+)
>
> diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc
> index 816c4b69fc8..d187e171beb 100644
> --- a/gcc/config/aarch64/aarch64.cc
> +++ b/gcc/config/aarch64/aarch64.cc
> @@ -12430,6 +12430,12 @@ aarch64_print_operand (FILE *f, rtx x, int code)
>  
>        switch (GET_CODE (x))
>       {
> +     case CONST_STRING:
> +       {
> +         const char *output_op = XSTR (x, 0);
> +         asm_fprintf (f, "%s", output_op);
> +         break;
> +       }

LGTM, but it seems slightly neater to avoid the temporary:

        case CONST_STRING:
          asm_fprintf (f, "%s", XSTR (x, 0));
          break;

(Sorry for the micro-comment.)

Thanks,
Richard

>       case REG:
>         if (aarch64_sve_data_mode_p (GET_MODE (x)))
>           {

Reply via email to