diff options
author | Jakub Jelinek <jakub@redhat.com> | 2010-04-16 23:44:48 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2010-04-16 23:44:48 +0200 |
commit | fcd3c5a9bead3b260a5d4c0c1f69293caab8d50e (patch) | |
tree | 41019a13b5089d375203dfce9f010b06302dcaa6 /gcc/fortran | |
parent | 24f8d71e41a1d5bcb717356dabeffadb10a75b6f (diff) | |
download | gcc-fcd3c5a9bead3b260a5d4c0c1f69293caab8d50e.zip gcc-fcd3c5a9bead3b260a5d4c0c1f69293caab8d50e.tar.gz gcc-fcd3c5a9bead3b260a5d4c0c1f69293caab8d50e.tar.bz2 |
trans-decl.c (gfc_build_qualified_array): Ensure ubound.N and lbound.N artificial variable names don't appear in debug info.
* trans-decl.c (gfc_build_qualified_array): Ensure
ubound.N and lbound.N artificial variable names don't appear
in debug info.
From-SVN: r158451
Diffstat (limited to 'gcc/fortran')
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/trans-decl.c | 35 |
2 files changed, 31 insertions, 10 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index b828104..b53aff9 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2010-04-16 Jakub Jelinek <jakub@redhat.com> + + * trans-decl.c (gfc_build_qualified_array): Ensure + ubound.N and lbound.N artificial variable names don't appear + in debug info. + 2010-04-15 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/30073 diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index 9e79a9a..2545ad2 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -771,19 +771,34 @@ gfc_build_qualified_array (tree decl, gfc_symbol * sym) for (dim = sym->as->rank - 1; dim >= 0; dim--) { - rtype = build_range_type (gfc_array_index_type, - GFC_TYPE_ARRAY_LBOUND (type, dim), - GFC_TYPE_ARRAY_UBOUND (type, dim)); + tree lbound, ubound; + lbound = GFC_TYPE_ARRAY_LBOUND (type, dim); + ubound = GFC_TYPE_ARRAY_UBOUND (type, dim); + rtype = build_range_type (gfc_array_index_type, lbound, ubound); gtype = build_array_type (gtype, rtype); /* 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; + can be tracked by VTA. Also clear the artificial + lbound.N or ubound.N DECL_NAME, so that it doesn't end up + in debug info. */ + if (lbound && TREE_CODE (lbound) == VAR_DECL + && DECL_ARTIFICIAL (lbound) && DECL_IGNORED_P (lbound)) + { + if (DECL_NAME (lbound) + && strstr (IDENTIFIER_POINTER (DECL_NAME (lbound)), + "lbound") != 0) + DECL_NAME (lbound) = NULL_TREE; + DECL_IGNORED_P (lbound) = 0; + } + if (ubound && TREE_CODE (ubound) == VAR_DECL + && DECL_ARTIFICIAL (ubound) && DECL_IGNORED_P (ubound)) + { + if (DECL_NAME (ubound) + && strstr (IDENTIFIER_POINTER (DECL_NAME (ubound)), + "ubound") != 0) + DECL_NAME (ubound) = NULL_TREE; + DECL_IGNORED_P (ubound) = 0; + } } TYPE_NAME (type) = type_decl = build_decl (input_location, TYPE_DECL, NULL, gtype); |