PR target/94145
* config/rs6000/rs6000.c (rs6000_longcall_ref): Use unspec_volatile
for PLT16_LO.
* config/rs6000/rs6000.md (UNSPEC_PLT16_LO): Remove.
(UNSPECV_PLT16_LO): Define.
(pltseq_plt16_lo_): Use unspec_volatile.
(cherry picked from commit
19e5389debb03c3623f6a2ce8a8f6f4aa2118901)
minus the PLT_PCREL parts
+2020-05-01 Alan Modra <amodra@gmail.com>
+
+ PR target/94145
+ Backport from master
+ 2020-03-27 Alan Modra <amodra@gmail.com>
+
+ * config/rs6000/rs6000.c (rs6000_longcall_ref): Use unspec_volatile
+ for PLT16_LO.
+ * config/rs6000/rs6000.md (UNSPEC_PLT16_LO): Remove.
+ (UNSPECV_PLT16_LO): Define.
+ (pltseq_plt16_lo_): Use unspec_volatile.
+
2020-04-30 Carl Love <cel@us.ibm.com>
* config/rs6000/emmintrin.h (_mm_movemask_epi8): Fix comment.
2020-04-07 Will Schmidt <will_schmidt@vnet.ibm.com>
-Backport from mainline.
+ Backport from mainline.
2020-03-23 Will Schmidt <will_schmidt@vnet.ibm.com>
* config/rs6000/rs6000-call.c altivec_init_builtins(): Remove
rtx reg = gen_rtx_REG (Pmode, regno);
rtx hi = gen_rtx_UNSPEC (Pmode, gen_rtvec (3, base, call_ref, arg),
UNSPEC_PLT16_HA);
- rtx lo = gen_rtx_UNSPEC (Pmode, gen_rtvec (3, reg, call_ref, arg),
- UNSPEC_PLT16_LO);
+ rtx lo = gen_rtx_UNSPEC_VOLATILE (Pmode,
+ gen_rtvec (3, reg, call_ref, arg),
+ UNSPECV_PLT16_LO);
emit_insn (gen_rtx_SET (reg, hi));
emit_insn (gen_rtx_SET (reg, lo));
return reg;
UNSPEC_SI_FROM_SF
UNSPEC_PLTSEQ
UNSPEC_PLT16_HA
- UNSPEC_PLT16_LO
])
;;
UNSPECV_MTFSB1 ; Set FPSCR Field bit to 1
UNSPECV_SPLIT_STACK_RETURN ; A camouflaged return
UNSPECV_SPEC_BARRIER ; Speculation barrier
+ UNSPECV_PLT16_LO
])
\f
(define_insn "*pltseq_plt16_lo_<mode>"
[(set (match_operand:P 0 "gpc_reg_operand" "=r")
- (unspec:P [(match_operand:P 1 "gpc_reg_operand" "b")
- (match_operand:P 2 "symbol_ref_operand" "s")
- (match_operand:P 3 "" "")]
- UNSPEC_PLT16_LO))]
+ (unspec_volatile:P [(match_operand:P 1 "gpc_reg_operand" "b")
+ (match_operand:P 2 "symbol_ref_operand" "s")
+ (match_operand:P 3 "" "")]
+ UNSPECV_PLT16_LO))]
"TARGET_PLTSEQ"
{
return rs6000_pltseq_template (operands, 2);