aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@gcc.gnu.org>2010-04-15 10:53:41 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2010-04-15 10:53:41 +0200
commite429bb493195630da7530aad22ccbe50bac0587f (patch)
treefed4df35394b3be738af9bbe9f79eb56b2fc7147 /gcc
parentf36ae44d4fad2910ffedfa33d6f2c154230edd0a (diff)
downloadgcc-e429bb493195630da7530aad22ccbe50bac0587f.zip
gcc-e429bb493195630da7530aad22ccbe50bac0587f.tar.gz
gcc-e429bb493195630da7530aad22ccbe50bac0587f.tar.bz2
trans-decl.c (gfc_build_qualified_array): Clear DECL_IGNORED_P on VAR_DECL LBOUND and/or UBOUND, even for -O1.
* trans-decl.c (gfc_build_qualified_array): Clear DECL_IGNORED_P on VAR_DECL LBOUND and/or UBOUND, even for -O1. From-SVN: r158366
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog7
-rw-r--r--gcc/fortran/trans-decl.c19
2 files changed, 15 insertions, 11 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index b1b34ee..fdf4e99 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,6 +1,11 @@
+2010-04-15 Jakub Jelinek <jakub@redhat.com>
+
+ * trans-decl.c (gfc_build_qualified_array): Clear DECL_IGNORED_P
+ on VAR_DECL LBOUND and/or UBOUND, even for -O1.
+
2010-04-14 Steven G. Kargl <kargl@gcc.gnu.org>
- * fortran/intrinsic.texi: Add the missing specific name of intrinsic
+ * intrinsic.texi: Add the missing specific name of intrinsic
procedure where the specific name is identical to the generic name.
Fix inconsistent or mismatch in the argument names in intrinsic
procedure descriptions. Add the SCALAR allocatable description to
diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c
index 658aadb..9e79a9a 100644
--- a/gcc/fortran/trans-decl.c
+++ b/gcc/fortran/trans-decl.c
@@ -775,16 +775,15 @@ gfc_build_qualified_array (tree decl, gfc_symbol * sym)
GFC_TYPE_ARRAY_LBOUND (type, dim),
GFC_TYPE_ARRAY_UBOUND (type, dim));
gtype = build_array_type (gtype, rtype);
- /* Ensure the bound variables aren't optimized out at -O0. */
- if (!optimize)
- {
- if (GFC_TYPE_ARRAY_LBOUND (type, dim)
- && TREE_CODE (GFC_TYPE_ARRAY_LBOUND (type, dim)) == VAR_DECL)
- DECL_IGNORED_P (GFC_TYPE_ARRAY_LBOUND (type, dim)) = 0;
- if (GFC_TYPE_ARRAY_UBOUND (type, dim)
- && TREE_CODE (GFC_TYPE_ARRAY_UBOUND (type, dim)) == VAR_DECL)
- DECL_IGNORED_P (GFC_TYPE_ARRAY_UBOUND (type, dim)) = 0;
- }
+ /* Ensure the bound variables aren't optimized out at -O0.
+ For -O1 and above they often will be optimized out, but
+ can be tracked by VTA. */
+ if (GFC_TYPE_ARRAY_LBOUND (type, dim)
+ && TREE_CODE (GFC_TYPE_ARRAY_LBOUND (type, dim)) == VAR_DECL)
+ DECL_IGNORED_P (GFC_TYPE_ARRAY_LBOUND (type, dim)) = 0;
+ if (GFC_TYPE_ARRAY_UBOUND (type, dim)
+ && TREE_CODE (GFC_TYPE_ARRAY_UBOUND (type, dim)) == VAR_DECL)
+ DECL_IGNORED_P (GFC_TYPE_ARRAY_UBOUND (type, dim)) = 0;
}
TYPE_NAME (type) = type_decl = build_decl (input_location,
TYPE_DECL, NULL, gtype);