[Bug debug/63581] New: undefined references in debug_info
xur at google dot com
gcc-bugzilla@gcc.gnu.org
Fri Oct 17 21:21:00 GMT 2014
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63581
Bug ID: 63581
Summary: undefined references in debug_info
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: debug
Assignee: unassigned at gcc dot gnu.org
Reporter: xur at google dot com
Created attachment 33752
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=33752&action=edit
reproducer
I got the following error when compiling a file with FDO.
/tmp/cc6azLyK.o:(.debug_info+0x228): undefined reference to `.L29'
The error is triggered by function splitting. Adding
-fno-reorder-blocks-and-partition will make the build pass.
Here is the diagnosis:
We generate a label die and assume the label instruction will be generated in
final pass. This label is marked as deleted, but because it's a user
defined label, we should output it in the final pass.
This label instruction is removed from insn stream in
record_effective_endpoints() and put the header of one bb and later
merged to the footer of another. The bb footer got overwritten in
emit_barrier_after_bb() (from add_labels_and_missing_jumps()). Since it's
overwritten, it never gets to put back to inst stream in cfg_layout_finalize.
I think the overwritten in emit_barrier_after_bb() is wrong. We should append
to the bb footer if the footer contains non-barrier instruction.
Once I do the appending, the label is emitted.
Reproducer attached. Build instructions are in the head of the file.
More information about the Gcc-bugs
mailing list