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
This commit is contained in:
parent
a81b0a3dbb
commit
2c641f8b3a
@ -1,3 +1,8 @@
|
||||
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>
|
||||
|
||||
|
@ -1,3 +1,7 @@
|
||||
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
|
||||
|
26
gcc/testsuite/gnat.dg/stack_usage2.adb
Normal file
26
gcc/testsuite/gnat.dg/stack_usage2.adb
Normal file
@ -0,0 +1,26 @@
|
||||
-- { 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 } }
|
31
gcc/toplev.c
31
gcc/toplev.c
@ -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]);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user