Commit fcd3c5a9 by Jakub Jelinek Committed by Jakub Jelinek

trans-decl.c (gfc_build_qualified_array): Ensure ubound.N and lbound.N…

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
parent 24f8d71e
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
......
......@@ -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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment