mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-21 14:30:59 +08:00
tree-streamer-in.c (unpack_ts_decl_common_value_fields, [...]): If ACCEL_COMPILER, restrict alignments to absolute_biggest_alignment.
* tree-streamer-in.c (unpack_ts_decl_common_value_fields, unpack_ts_type_common_value_fields): If ACCEL_COMPILER, restrict alignments to absolute_biggest_alignment. * config/i386/i386.c (TARGET_ABSOLUTE_BIGGEST_ALIGNMENT): Define. * doc/tm.texi.in (TARGET_ABSOLUTE_BIGGEST_ALIGNMENT): Add. * doc/tm.texi: Regenerate. * target.def (absolute_biggest_alignment): New DEFHOOKPOD. From-SVN: r220882
This commit is contained in:
parent
b56ac9d5f4
commit
6d2b71997e
@ -1,3 +1,14 @@
|
||||
2015-02-20 Bernd Schmidt <bernds@codesourcery.com>
|
||||
|
||||
* tree-streamer-in.c (unpack_ts_decl_common_value_fields,
|
||||
unpack_ts_type_common_value_fields): If ACCEL_COMPILER,
|
||||
restrict alignments to absolute_biggest_alignment.
|
||||
* config/i386/i386.c (TARGET_ABSOLUTE_BIGGEST_ALIGNMENT):
|
||||
Define.
|
||||
* doc/tm.texi.in (TARGET_ABSOLUTE_BIGGEST_ALIGNMENT): Add.
|
||||
* doc/tm.texi: Regenerate.
|
||||
* target.def (absolute_biggest_alignment): New DEFHOOKPOD.
|
||||
|
||||
2015-02-20 Vladimir Makarov <vmakarov@redhat.com>
|
||||
|
||||
PR target/64172
|
||||
|
@ -52131,6 +52131,9 @@ ix86_initialize_bounds (tree var, tree lb, tree ub, tree *stmts)
|
||||
#define TARGET_OFFLOAD_OPTIONS \
|
||||
ix86_offload_options
|
||||
|
||||
#undef TARGET_ABSOLUTE_BIGGEST_ALIGNMENT
|
||||
#define TARGET_ABSOLUTE_BIGGEST_ALIGNMENT 512
|
||||
|
||||
struct gcc_target targetm = TARGET_INITIALIZER;
|
||||
|
||||
#include "gt-i386.h"
|
||||
|
@ -795,7 +795,10 @@ extern const char *host_detect_local_cpu (int argc, const char **argv);
|
||||
rounder than this.
|
||||
|
||||
Pentium+ prefers DFmode values to be aligned to 64 bit boundary
|
||||
and Pentium Pro XFmode values at 128 bit boundaries. */
|
||||
and Pentium Pro XFmode values at 128 bit boundaries.
|
||||
|
||||
When increasing the maximum, also update
|
||||
TARGET_ABSOLUTE_BIGGEST_ALIGNMENT. */
|
||||
|
||||
#define BIGGEST_ALIGNMENT \
|
||||
(TARGET_AVX512F ? 512 : (TARGET_AVX ? 256 : 128))
|
||||
|
@ -1003,6 +1003,12 @@ bits. Note that this is not the biggest alignment that is supported,
|
||||
just the biggest alignment that, when violated, may cause a fault.
|
||||
@end defmac
|
||||
|
||||
@deftypevr {Target Hook} HOST_WIDE_INT TARGET_ABSOLUTE_BIGGEST_ALIGNMENT
|
||||
If defined, this target hook specifies the absolute biggest alignment
|
||||
that a type or variable can have on this machine, otherwise,
|
||||
@code{BIGGEST_ALIGNMENT} is used.
|
||||
@end deftypevr
|
||||
|
||||
@defmac MALLOC_ABI_ALIGNMENT
|
||||
Alignment, in bits, a C conformant malloc implementation has to
|
||||
provide. If not defined, the default value is @code{BITS_PER_WORD}.
|
||||
|
@ -957,6 +957,8 @@ bits. Note that this is not the biggest alignment that is supported,
|
||||
just the biggest alignment that, when violated, may cause a fault.
|
||||
@end defmac
|
||||
|
||||
@hook TARGET_ABSOLUTE_BIGGEST_ALIGNMENT
|
||||
|
||||
@defmac MALLOC_ABI_ALIGNMENT
|
||||
Alignment, in bits, a C conformant malloc implementation has to
|
||||
provide. If not defined, the default value is @code{BITS_PER_WORD}.
|
||||
|
@ -1868,6 +1868,13 @@ recorded in the offload function and variable table.",
|
||||
void, (tree),
|
||||
hook_void_tree)
|
||||
|
||||
DEFHOOKPOD
|
||||
(absolute_biggest_alignment,
|
||||
"If defined, this target hook specifies the absolute biggest alignment\n\
|
||||
that a type or variable can have on this machine, otherwise,\n\
|
||||
@code{BIGGEST_ALIGNMENT} is used.",
|
||||
HOST_WIDE_INT, BIGGEST_ALIGNMENT)
|
||||
|
||||
/* Allow target specific overriding of option settings after options have
|
||||
been changed by an attribute or pragma or when it is reset at the
|
||||
end of the code affected by an attribute or pragma. */
|
||||
|
@ -247,7 +247,10 @@ unpack_ts_decl_common_value_fields (struct bitpack_d *bp, tree expr)
|
||||
DECL_EXTERNAL (expr) = (unsigned) bp_unpack_value (bp, 1);
|
||||
DECL_GIMPLE_REG_P (expr) = (unsigned) bp_unpack_value (bp, 1);
|
||||
DECL_ALIGN (expr) = (unsigned) bp_unpack_var_len_unsigned (bp);
|
||||
|
||||
#ifdef ACCEL_COMPILER
|
||||
if (DECL_ALIGN (expr) > targetm.absolute_biggest_alignment)
|
||||
DECL_ALIGN (expr) = targetm.absolute_biggest_alignment;
|
||||
#endif
|
||||
if (TREE_CODE (expr) == LABEL_DECL)
|
||||
{
|
||||
EH_LANDING_PAD_NR (expr) = (int) bp_unpack_var_len_unsigned (bp);
|
||||
@ -391,6 +394,10 @@ unpack_ts_type_common_value_fields (struct bitpack_d *bp, tree expr)
|
||||
TYPE_READONLY (expr) = (unsigned) bp_unpack_value (bp, 1);
|
||||
TYPE_PRECISION (expr) = bp_unpack_var_len_unsigned (bp);
|
||||
TYPE_ALIGN (expr) = bp_unpack_var_len_unsigned (bp);
|
||||
#ifdef ACCEL_COMPILER
|
||||
if (TYPE_ALIGN (expr) > targetm.absolute_biggest_alignment)
|
||||
TYPE_ALIGN (expr) = targetm.absolute_biggest_alignment;
|
||||
#endif
|
||||
TYPE_ALIAS_SET (expr) = bp_unpack_var_len_int (bp);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user