Hi.

With LTO and -fsanitize we end up with a static ctor
(_GLOBAL__sub_I_00099_0_main) that has no source location.
With that stack usage will print '(artificial)' as a location
of the function.

Patch can bootstrap on x86_64-linux-gnu and survives regression tests.

Ready to be installed?
Thanks,
Martin

gcc/ChangeLog:

2019-05-16  Martin Liska  <mli...@suse.cz>

        PR driver/90495
        * toplev.c (output_stack_usage): With LTO and sanitizer it
        happens that a global ctor (_GLOBAL__sub_I_00099_0_main)
        has no file location.
---
 gcc/toplev.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)


diff --git a/gcc/toplev.c b/gcc/toplev.c
index 397a164068d..a27cdc4325d 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -1019,7 +1019,7 @@ output_stack_usage (void)
 
       fprintf (stack_usage_file,
 	       "%s:%d:%d:%s\t" HOST_WIDE_INT_PRINT_DEC"\t%s\n",
-	       lbasename (loc.file),
+	       loc.file == NULL ? "(artificial)" : lbasename (loc.file),
 	       loc.line,
 	       loc.column,
 	       name,

Reply via email to