The usual stupid confusion between bits and bytes... The tree-pretty-print.c
hunk is unrelated and has been approved by Richard elsewhere.
Tested on SPARC64/Linux, applied on the mainline as obvious.
2020-06-02 Eric Botcazou <ebotca...@adacore.com>
PR middle-end/95395
* optabs.c (expand_unop): Fix bits/bytes confusion in latest change.
* tree-pretty-print.c (dump_generic_node) <ARRAY_TYPE>: Print quals.
--
Eric Botcazou
diff --git a/gcc/optabs.c b/gcc/optabs.c
index 7a4ec1ec01c..6d0b76c13ba 100644
--- a/gcc/optabs.c
+++ b/gcc/optabs.c
@@ -2892,7 +2892,7 @@ expand_unop (machine_mode mode, optab unoptab, rtx op0, rtx target,
/* We do not provide a 128-bit bswap in libgcc so force the use of
a double bswap for 64-bit targets. */
if (GET_MODE_SIZE (int_mode) == 2 * UNITS_PER_WORD
- && (UNITS_PER_WORD == 64
+ && (UNITS_PER_WORD == 8
|| optab_handler (unoptab, word_mode) != CODE_FOR_nothing))
{
temp = expand_doubleword_bswap (mode, op0, target);
diff --git a/gcc/tree-pretty-print.c b/gcc/tree-pretty-print.c
index f04fd65091a..7d581214022 100644
--- a/gcc/tree-pretty-print.c
+++ b/gcc/tree-pretty-print.c
@@ -1899,8 +1899,16 @@ dump_generic_node (pretty_printer *pp, tree node, int spc, dump_flags_t flags,
case ARRAY_TYPE:
{
+ unsigned int quals = TYPE_QUALS (node);
tree tmp;
+ if (quals & TYPE_QUAL_ATOMIC)
+ pp_string (pp, "atomic ");
+ if (quals & TYPE_QUAL_CONST)
+ pp_string (pp, "const ");
+ if (quals & TYPE_QUAL_VOLATILE)
+ pp_string (pp, "volatile ");
+
/* Print the innermost component type. */
for (tmp = TREE_TYPE (node); TREE_CODE (tmp) == ARRAY_TYPE;
tmp = TREE_TYPE (tmp))