re PR rtl-optimization/47866 (gcc.dg/torture/vector-2.c fails on IA64)
PR rtl-optimization/47866 * expr.c (store_field): If MEM_SCALAR_P (target), don't use MEM_SET_IN_STRUCT_P (to_rtx, 1), just set MEM_IN_STRUCT_P (to_rtx) if target wasn't scalar. * function.c (assign_stack_temp_for_type): Assert that neither MEM_SCALAR_P nor MEM_IN_STRUCT_P is set previously, set either MEM_IN_STRUCT_P or MEM_SCALAR_P instead of using MEM_SET_IN_STRUCT_P macro. * rtl.h (MEM_SET_IN_STRUCT_P): Removed. From-SVN: r170834
This commit is contained in:
parent
0ad3134110
commit
db7ec03597
4 changed files with 19 additions and 21 deletions
|
@ -1,3 +1,15 @@
|
|||
2011-03-09 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/47866
|
||||
* expr.c (store_field): If MEM_SCALAR_P (target), don't use
|
||||
MEM_SET_IN_STRUCT_P (to_rtx, 1), just set MEM_IN_STRUCT_P (to_rtx)
|
||||
if target wasn't scalar.
|
||||
* function.c (assign_stack_temp_for_type): Assert that neither
|
||||
MEM_SCALAR_P nor MEM_IN_STRUCT_P is set previously, set either
|
||||
MEM_IN_STRUCT_P or MEM_SCALAR_P instead of using MEM_SET_IN_STRUCT_P
|
||||
macro.
|
||||
* rtl.h (MEM_SET_IN_STRUCT_P): Removed.
|
||||
|
||||
2011-03-09 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
|
||||
|
||||
* config/s390/s390-protos.h (s390_label_align): New prototype.
|
||||
|
|
|
@ -5924,7 +5924,8 @@ store_field (rtx target, HOST_WIDE_INT bitsize, HOST_WIDE_INT bitpos,
|
|||
if (to_rtx == target)
|
||||
to_rtx = copy_rtx (to_rtx);
|
||||
|
||||
MEM_SET_IN_STRUCT_P (to_rtx, 1);
|
||||
if (!MEM_SCALAR_P (to_rtx))
|
||||
MEM_IN_STRUCT_P (to_rtx) = 1;
|
||||
if (!MEM_KEEP_ALIAS_SET_P (to_rtx) && MEM_ALIAS_SET (to_rtx) != 0)
|
||||
set_mem_alias_set (to_rtx, alias_set);
|
||||
|
||||
|
|
|
@ -942,8 +942,11 @@ assign_stack_temp_for_type (enum machine_mode mode, HOST_WIDE_INT size,
|
|||
if (type != 0)
|
||||
{
|
||||
MEM_VOLATILE_P (slot) = TYPE_VOLATILE (type);
|
||||
MEM_SET_IN_STRUCT_P (slot, (AGGREGATE_TYPE_P (type)
|
||||
|| TREE_CODE (type) == COMPLEX_TYPE));
|
||||
gcc_checking_assert (!MEM_SCALAR_P (slot) && !MEM_IN_STRUCT_P (slot));
|
||||
if (AGGREGATE_TYPE_P (type) || TREE_CODE (type) == COMPLEX_TYPE)
|
||||
MEM_IN_STRUCT_P (slot) = 1;
|
||||
else
|
||||
MEM_SCALAR_P (slot) = 1;
|
||||
}
|
||||
MEM_NOTRAP_P (slot) = 1;
|
||||
|
||||
|
|
18
gcc/rtl.h
18
gcc/rtl.h
|
@ -1279,24 +1279,6 @@ do { \
|
|||
#define MEM_NOTRAP_P(RTX) \
|
||||
(RTL_FLAG_CHECK1("MEM_NOTRAP_P", (RTX), MEM)->call)
|
||||
|
||||
/* If VAL is nonzero, set MEM_IN_STRUCT_P and clear MEM_SCALAR_P in
|
||||
RTX. Otherwise, vice versa. Use this macro only when you are
|
||||
*sure* that you know that the MEM is in a structure, or is a
|
||||
scalar. VAL is evaluated only once. */
|
||||
#define MEM_SET_IN_STRUCT_P(RTX, VAL) \
|
||||
do { \
|
||||
if (VAL) \
|
||||
{ \
|
||||
MEM_IN_STRUCT_P (RTX) = 1; \
|
||||
MEM_SCALAR_P (RTX) = 0; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
MEM_IN_STRUCT_P (RTX) = 0; \
|
||||
MEM_SCALAR_P (RTX) = 1; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
/* The memory attribute block. We provide access macros for each value
|
||||
in the block and provide defaults if none specified. */
|
||||
#define MEM_ATTRS(RTX) X0MEMATTR (RTX, 1)
|
||||
|
|
Loading…
Add table
Reference in a new issue