+2016-04-20 Andrew Pinski <apinski@cavium.com>
+ Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ PR target/64971
+ * config/aarch64/aarch64.md (sibcall): Force call
+ address to be DImode for ILP32.
+ (sibcall_value): Likewise.
+
2016-04-20 Marek Polacek <polacek@redhat.com>
* tree-if-conv.c (is_false_predicate): For NULL_TREE return false
|| aarch64_is_noplt_call_p (callee)))
XEXP (operands[0], 0) = force_reg (Pmode, callee);
+ /* FIXME: This is a band-aid. Need to analyze why expand_expr_addr_expr
+ is generating an SImode symbol reference. See PR 64971. */
+ if (TARGET_ILP32
+ && GET_CODE (XEXP (operands[0], 0)) == SYMBOL_REF
+ && GET_MODE (XEXP (operands[0], 0)) == SImode)
+ XEXP (operands[0], 0) = convert_memory_address (Pmode,
+ XEXP (operands[0], 0));
if (operands[2] == NULL_RTX)
operands[2] = const0_rtx;
|| aarch64_is_noplt_call_p (callee)))
XEXP (operands[1], 0) = force_reg (Pmode, callee);
+ /* FIXME: This is a band-aid. Need to analyze why expand_expr_addr_expr
+ is generating an SImode symbol reference. See PR 64971. */
+ if (TARGET_ILP32
+ && GET_CODE (XEXP (operands[1], 0)) == SYMBOL_REF
+ && GET_MODE (XEXP (operands[1], 0)) == SImode)
+ XEXP (operands[1], 0) = convert_memory_address (Pmode,
+ XEXP (operands[1], 0));
+
if (operands[3] == NULL_RTX)
operands[3] = const0_rtx;