diff options
author | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2011-06-18 11:02:45 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2011-06-18 11:02:45 +0000 |
commit | c020c92b121315f101365221f05aca9d686a82f0 (patch) | |
tree | c905c1e124af4453a2ccb5759bc9ce57ab62e467 /gcc/tree-sra.c | |
parent | 10f13f2279ec2b2ea34dda5fe1d45a54b3725369 (diff) | |
download | gcc-c020c92b121315f101365221f05aca9d686a82f0.zip gcc-c020c92b121315f101365221f05aca9d686a82f0.tar.gz gcc-c020c92b121315f101365221f05aca9d686a82f0.tar.bz2 |
tree-sra.c (type_internals_preclude_sra_p): Return true if the element type is volatile.
* tree-sra.c (type_internals_preclude_sra_p) <ARRAY_TYPE>: Return true
if the element type is volatile.
ada/
* gcc-interface/decl.c (gnat_to_gnu_component_type): Use GNAT_TYPE
local variable throughout. Remove useless call to Base_Type.
(gnat_to_gnu_field): Use GNAT_FIELD_TYPE local variable throughout.
Take it also into account for the volatileness of the field. Set the
TREE_SIDE_EFFECTS flag as well in this case. Reorder some warnings.
From-SVN: r175176
Diffstat (limited to 'gcc/tree-sra.c')
-rw-r--r-- | gcc/tree-sra.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c index 28eba43..322abb5 100644 --- a/gcc/tree-sra.c +++ b/gcc/tree-sra.c @@ -671,8 +671,7 @@ type_internals_preclude_sra_p (tree type) && int_bit_position (fld) % BITS_PER_UNIT != 0)) return true; - if (AGGREGATE_TYPE_P (ft) - && type_internals_preclude_sra_p (ft)) + if (AGGREGATE_TYPE_P (ft) && type_internals_preclude_sra_p (ft)) return true; } @@ -681,10 +680,13 @@ type_internals_preclude_sra_p (tree type) case ARRAY_TYPE: et = TREE_TYPE (type); - if (AGGREGATE_TYPE_P (et)) - return type_internals_preclude_sra_p (et); - else - return false; + if (TYPE_VOLATILE (et)) + return true; + + if (AGGREGATE_TYPE_P (et) && type_internals_preclude_sra_p (et)) + return true; + + return false; default: return false; |