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> 2013-09-06 Jan Hubicka <jh@suse.cz>
PR middle-end/58094 PR middle-end/58094
...@@ -8,8 +13,8 @@ ...@@ -8,8 +13,8 @@
2013-09-06 Jan Hubicka <jh@suse.cz> 2013-09-06 Jan Hubicka <jh@suse.cz>
* i386.c (ix86_hard_regno_mode_ok): AVX modes are valid only when * config/i386/i386.c (ix86_hard_regno_mode_ok): AVX modes are valid
AVX is enabled. only when AVX is enabled.
2013-09-06 James Greenhalgh <james.greenhalgh@arm.com> 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> 2013-09-06 James Greenhalgh <james.greenhalgh@arm.com>
* gcc.target/aarch64/table-intrinsics.c * 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) ...@@ -1017,22 +1017,35 @@ output_stack_usage (void)
{ {
expanded_location loc expanded_location loc
= expand_location (DECL_SOURCE_LOCATION (current_function_decl)); = expand_location (DECL_SOURCE_LOCATION (current_function_decl));
const char *raw_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
/* Strip the scope prefix if any. */ created by the compiler. */
raw_id = lang_hooks.decl_printable_name (current_function_decl, 2); const char *suffix
id = strrchr (raw_id, '.'); = strchr (IDENTIFIER_POINTER (DECL_NAME (current_function_decl)), '.');
if (id) const char *name
id++; = 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 else
id = raw_id; {
const char *dot = strrchr (name, '.');
if (dot)
name = dot + 1;
}
fprintf (stack_usage_file, fprintf (stack_usage_file,
"%s:%d:%d:%s\t"HOST_WIDE_INT_PRINT_DEC"\t%s\n", "%s:%d:%d:%s\t"HOST_WIDE_INT_PRINT_DEC"\t%s\n",
lbasename (loc.file), lbasename (loc.file),
loc.line, loc.line,
loc.column, loc.column,
id, name,
stack_usage, stack_usage,
stack_usage_kind_str[stack_usage_kind]); 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