diff options
author | Uros Bizjak <ubizjak@gmail.com> | 2024-03-06 17:08:25 +0100 |
---|---|---|
committer | Uros Bizjak <ubizjak@gmail.com> | 2024-03-06 17:08:25 +0100 |
commit | e772c0c05c36d0b0539effb4256be67bbedd77fb (patch) | |
tree | 40d722b1e370bc603d0d7e805adb494f233594c3 /gcc | |
parent | 71aad5231447484046b45e6c8381f8096d3c287d (diff) | |
download | gcc-e772c0c05c36d0b0539effb4256be67bbedd77fb.zip gcc-e772c0c05c36d0b0539effb4256be67bbedd77fb.tar.gz gcc-e772c0c05c36d0b0539effb4256be67bbedd77fb.tar.bz2 |
i386: Eliminate common code from x86_32 TARGET_MACHO part in ix86_expand_move
Eliminate common code from x86_32 TARGET_MACHO part in ix86_expand_move and
use generic code instead.
No functional changes.
gcc/ChangeLog:
* config/i386/i386-expand.cc (ix86_expand_move) [TARGET_MACHO]:
Eliminate common code and use generic code instead.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/i386/i386-expand.cc | 37 |
1 files changed, 11 insertions, 26 deletions
diff --git a/gcc/config/i386/i386-expand.cc b/gcc/config/i386/i386-expand.cc index 3b1685a..2210e6f 100644 --- a/gcc/config/i386/i386-expand.cc +++ b/gcc/config/i386/i386-expand.cc @@ -471,9 +471,9 @@ ix86_expand_move (machine_mode mode, rtx operands[]) if ((flag_pic || MACHOPIC_INDIRECT) && symbolic_operand (op1, mode)) { +#if TARGET_MACHO if (TARGET_MACHO && !TARGET_64BIT) { -#if TARGET_MACHO /* dynamic-no-pic */ if (MACHOPIC_INDIRECT) { @@ -490,33 +490,18 @@ ix86_expand_move (machine_mode mode, rtx operands[]) emit_insn (insn); return; } - if (GET_CODE (op0) == MEM) - op1 = force_reg (Pmode, op1); - else - { - rtx temp = op0; - if (GET_CODE (temp) != REG) - temp = gen_reg_rtx (Pmode); - temp = legitimize_pic_address (op1, temp); - if (temp == op0) - return; - op1 = temp; - } - /* dynamic-no-pic */ -#endif } - else +#endif + + if (MEM_P (op0)) + op1 = force_reg (mode, op1); + else if (!(TARGET_64BIT && x86_64_movabs_operand (op1, DImode))) { - if (MEM_P (op0)) - op1 = force_reg (mode, op1); - else if (!(TARGET_64BIT && x86_64_movabs_operand (op1, DImode))) - { - rtx reg = can_create_pseudo_p () ? NULL_RTX : op0; - op1 = legitimize_pic_address (op1, reg); - if (op0 == op1) - return; - op1 = convert_to_mode (mode, op1, 1); - } + rtx reg = can_create_pseudo_p () ? NULL_RTX : op0; + op1 = legitimize_pic_address (op1, reg); + if (op0 == op1) + return; + op1 = convert_to_mode (mode, op1, 1); } } else |