https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62190
Bug ID: 62190
Summary: LTO DWARF produces __unknown__ type for unsigned int
function argument type
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: lto
Assignee: unassigned at gcc dot gnu.org
Reporter: mark at gcc dot gnu.org
Take the following program:
/* LTO sometimes outputs __unknown__ for an unsigned int argument type. */
/* { dg-do run } */
/* { dg-options "-gdwarf" } */
static __attribute__((noclone, noinline)) int
func (unsigned int n)
{
return (int) n;
}
int
main (int argc, char **argv)
{
return func (0);
}
/* { dg-final { gdb-test 12 "type:func" "int (unsigned int)" } } */
And compile it with /opt/local/build/gcc-obj/gcc/xgcc
-B/opt/local/build/gcc-obj/gcc/ ltounsignedint.c -O2 -flto
-fno-use-linker-plugin -flto-partition=none -g -o ./ltounsignedint.exe
Or just drop it in gcc/testsuite/gcc.dg/guality/ltounsignedint.c and run make
check-c RUNTESTFLAGS=guality.exp=ltounsignedint.c
Notice how the formal_parameter n gets a type with name "__unknown__":
[ 46] formal_parameter
name (string) "n"
decl_file (data1) 1
decl_line (data1) 6
type (ref4) [ 59]
location (exprloc)
[ 0] reg5
[ 59] base_type
byte_size (data1) 4
encoding (data1) unsigned (7)
name (strp) "__unknown__"