aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-sra.c
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@gcc.gnu.org>2011-06-18 11:02:45 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2011-06-18 11:02:45 +0000
commitc020c92b121315f101365221f05aca9d686a82f0 (patch)
treec905c1e124af4453a2ccb5759bc9ce57ab62e467 /gcc/tree-sra.c
parent10f13f2279ec2b2ea34dda5fe1d45a54b3725369 (diff)
downloadgcc-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.c14
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;