Commit 2c641f8b by Eric Botcazou

toplev.c (output_stack_usage): Be prepared for suffixes created by the compiler…

toplev.c (output_stack_usage): Be prepared for suffixes created by the compiler in the function names.

	* toplev.c (output_stack_usage): Be prepared for suffixes created by
	the compiler in the function names.

From-SVN: r202339
parent a81b0a3d
2013-09-06 Eric Botcazou <ebotcazou@adacore.com>
* toplev.c (output_stack_usage): Be prepared for suffixes created by
the compiler in the function names.
2013-09-06 Jan Hubicka <jh@suse.cz>
PR middle-end/58094
......@@ -8,8 +13,8 @@
2013-09-06 Jan Hubicka <jh@suse.cz>
* i386.c (ix86_hard_regno_mode_ok): AVX modes are valid only when
AVX is enabled.
* config/i386/i386.c (ix86_hard_regno_mode_ok): AVX modes are valid
only when AVX is enabled.
2013-09-06 James Greenhalgh <james.greenhalgh@arm.com>
......
2013-09-06 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/stack_usage2.adb: New test.
2013-09-06 James Greenhalgh <james.greenhalgh@arm.com>
* gcc.target/aarch64/table-intrinsics.c
......
-- { dg-do compile }
-- { dg-options "-O2 -fstack-usage" }
with System;
procedure Stack_Usage2 is
Sink : System.Address;
pragma Import (Ada, Sink);
procedure Transmit_Data (Branch : Integer) is
pragma No_Inline (Transmit_Data);
X : Integer;
begin
case Branch is
when 1 => Sink := X'Address;
when others => null;
end case;
end;
begin
Transmit_Data (Branch => 1);
end;
-- { dg-final { scan-stack-usage-not ":Constprop" } }
-- { dg-final { cleanup-stack-usage } }
......@@ -1017,22 +1017,35 @@ output_stack_usage (void)
{
expanded_location loc
= expand_location (DECL_SOURCE_LOCATION (current_function_decl));
const char *raw_id, *id;
/* Strip the scope prefix if any. */
raw_id = lang_hooks.decl_printable_name (current_function_decl, 2);
id = strrchr (raw_id, '.');
if (id)
id++;
/* We don't want to print the full qualified name because it can be long,
so we strip the scope prefix, but we may need to deal with the suffix
created by the compiler. */
const char *suffix
= strchr (IDENTIFIER_POINTER (DECL_NAME (current_function_decl)), '.');
const char *name
= lang_hooks.decl_printable_name (current_function_decl, 2);
if (suffix)
{
const char *dot = strchr (name, '.');
while (dot && strcasecmp (dot, suffix) != 0)
{
name = dot + 1;
dot = strchr (name, '.');
}
}
else
id = raw_id;
{
const char *dot = strrchr (name, '.');
if (dot)
name = dot + 1;
}
fprintf (stack_usage_file,
"%s:%d:%d:%s\t"HOST_WIDE_INT_PRINT_DEC"\t%s\n",
lbasename (loc.file),
loc.line,
loc.column,
id,
name,
stack_usage,
stack_usage_kind_str[stack_usage_kind]);
}
......
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