re PR target/91615 ([armeb] ICEs since r274986)
2019-09-05 Bernd Edlinger <bernd.edlinger@hotmail.de> PR middle-end/91615 * expr.c (expand_expr_real_1): Handle misaligned TARGET_MEM_REF without movmisalign optab. From-SVN: r275409
This commit is contained in:
parent
728347922a
commit
55e8f926f2
@ -1,3 +1,9 @@
|
|||||||
|
2019-09-05 Bernd Edlinger <bernd.edlinger@hotmail.de>
|
||||||
|
|
||||||
|
PR middle-end/91615
|
||||||
|
* expr.c (expand_expr_real_1): Handle misaligned TARGET_MEM_REF
|
||||||
|
without movmisalign optab.
|
||||||
|
|
||||||
2019-09-05 Jakub Jelinek <jakub@redhat.com>
|
2019-09-05 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
PR middle-end/91001
|
PR middle-end/91001
|
||||||
|
17
gcc/expr.c
17
gcc/expr.c
@ -10313,7 +10313,6 @@ expand_expr_real_1 (tree exp, rtx target, machine_mode tmode,
|
|||||||
{
|
{
|
||||||
addr_space_t as
|
addr_space_t as
|
||||||
= TYPE_ADDR_SPACE (TREE_TYPE (TREE_TYPE (TREE_OPERAND (exp, 0))));
|
= TYPE_ADDR_SPACE (TREE_TYPE (TREE_TYPE (TREE_OPERAND (exp, 0))));
|
||||||
enum insn_code icode;
|
|
||||||
unsigned int align;
|
unsigned int align;
|
||||||
|
|
||||||
op0 = addr_for_mem_ref (exp, as, true);
|
op0 = addr_for_mem_ref (exp, as, true);
|
||||||
@ -10325,11 +10324,12 @@ expand_expr_real_1 (tree exp, rtx target, machine_mode tmode,
|
|||||||
if (modifier != EXPAND_WRITE
|
if (modifier != EXPAND_WRITE
|
||||||
&& modifier != EXPAND_MEMORY
|
&& modifier != EXPAND_MEMORY
|
||||||
&& mode != BLKmode
|
&& mode != BLKmode
|
||||||
&& align < GET_MODE_ALIGNMENT (mode)
|
&& align < GET_MODE_ALIGNMENT (mode))
|
||||||
/* If the target does not have special handling for unaligned
|
{
|
||||||
loads of mode then it can use regular moves for them. */
|
enum insn_code icode;
|
||||||
&& ((icode = optab_handler (movmisalign_optab, mode))
|
|
||||||
!= CODE_FOR_nothing))
|
if ((icode = optab_handler (movmisalign_optab, mode))
|
||||||
|
!= CODE_FOR_nothing)
|
||||||
{
|
{
|
||||||
class expand_operand ops[2];
|
class expand_operand ops[2];
|
||||||
|
|
||||||
@ -10341,6 +10341,11 @@ expand_expr_real_1 (tree exp, rtx target, machine_mode tmode,
|
|||||||
expand_insn (icode, 2, ops);
|
expand_insn (icode, 2, ops);
|
||||||
temp = ops[0].value;
|
temp = ops[0].value;
|
||||||
}
|
}
|
||||||
|
else if (targetm.slow_unaligned_access (mode, align))
|
||||||
|
temp = extract_bit_field (temp, GET_MODE_BITSIZE (mode),
|
||||||
|
0, unsignedp, NULL_RTX,
|
||||||
|
mode, mode, false, NULL);
|
||||||
|
}
|
||||||
return temp;
|
return temp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user