diff options
Diffstat (limited to 'gcc/optabs.c')
-rw-r--r-- | gcc/optabs.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/optabs.c b/gcc/optabs.c index d85ce47..7a4ec1e 100644 --- a/gcc/optabs.c +++ b/gcc/optabs.c @@ -2889,8 +2889,11 @@ expand_unop (machine_mode mode, optab unoptab, rtx op0, rtx target, if (temp) return temp; + /* 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 - && optab_handler (unoptab, word_mode) != CODE_FOR_nothing) + && (UNITS_PER_WORD == 64 + || optab_handler (unoptab, word_mode) != CODE_FOR_nothing)) { temp = expand_doubleword_bswap (mode, op0, target); if (temp) |