diff options
author | Prathamesh Kulkarni <prathameshk@nvidia.com> | 2024-08-22 19:25:20 +0530 |
---|---|---|
committer | Prathamesh Kulkarni <prathameshk@nvidia.com> | 2024-08-22 19:25:20 +0530 |
commit | 792adb8d222d0d1d16b182871e105f47823b8e72 (patch) | |
tree | eec446df19ec8a502aea09c48b1046c9c6f7bd02 /gcc/stor-layout.h | |
parent | a025081991cca1734fb642e6609772cfce8be4d1 (diff) | |
download | gcc-792adb8d222d0d1d16b182871e105f47823b8e72.zip gcc-792adb8d222d0d1d16b182871e105f47823b8e72.tar.gz gcc-792adb8d222d0d1d16b182871e105f47823b8e72.tar.bz2 |
Recompute TYPE_MODE and DECL_MODE for aggregate type for acclerator.
The patch streams out VOIDmode for aggregate types with offloading enabled,
and recomputes appropriate TYPE_MODE and DECL_MODE while streaming-in on accel
side. The rationale for this change is to avoid streaming out host-specific
modes that may be used for aggregate types, which may not be representable on
the accelerator. For eg, AArch64 uses OImode for ARRAY_TYPE whose size is 256-bits,
and nvptx doesn't have OImode, and thus ends up emitting an error from
lto_input_mode_table.
gcc/ChangeLog:
* lto-streamer-in.cc: (lto_read_tree_1): Set DECL_MODE (expr) to
TREE_TYPE (TYPE_MODE (expr)) if TREE_TYPE (expr) is aggregate type and
offloading is enabled.
* stor-layout.cc (layout_type): Move computation of mode for
ARRAY_TYPE from ...
(compute_array_mode): ... to here.
* stor-layout.h (compute_array_mode): Declare.
* tree-streamer-in.cc: Include stor-layout.h.
(unpack_ts_common_value_fields): Call compute_array_mode if offloading
is enabled.
* tree-streamer-out.cc (pack_ts_fixed_cst_value_fields): Stream out
VOIDmode if decl has aggregate type and offloading is enabled.
(pack_ts_type_common_value_fields): Stream out VOIDmode for aggregate
type if offloading is enabled.
Signed-off-by: Prathamesh Kulkarni <prathameshk@nvidia.com>
Diffstat (limited to 'gcc/stor-layout.h')
-rw-r--r-- | gcc/stor-layout.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/stor-layout.h b/gcc/stor-layout.h index 096ca81..9d9b8c3 100644 --- a/gcc/stor-layout.h +++ b/gcc/stor-layout.h @@ -34,6 +34,7 @@ extern tree rli_size_so_far (record_layout_info); extern void normalize_rli (record_layout_info); extern void place_field (record_layout_info, tree); extern void compute_record_mode (tree); +extern void compute_array_mode (tree); extern void finish_bitfield_layout (tree); extern void finish_record_layout (record_layout_info, int); extern void finalize_size_functions (void); |