https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93926
Bug ID: 93926 Summary: [10 Regression] ICE: verify_cgraph_node failed (error: malloc attribute should be used for a function that returns a pointer) Product: gcc Version: 10.0 Status: UNCONFIRMED Keywords: ice-checking, ice-on-invalid-code Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: asolokha at gmx dot com Target Milestone: --- gcc-10.0.1-alpha20200223 snapshot (g:3133bed5d0327e8a9cd0a601b7ecdb9de4fc825d) ICEs when compiling the following testcase on a 64-bit host w/ -m32 -fchecking: long int malloc (int); int * f (void) { return (int *) malloc (sizeof (int)); } % gcc-10.0.1 -m32 -c uivreegs.c uivreegs.c:8:1: error: malloc attribute should be used for a function that returns a pointer 8 | } | ^ malloc/1 (malloc) @0x7f022025d168 Type: function Visibility: external public References: Referring: Function flags: Called by: f/0 Calls: uivreegs.c:8:1: internal compiler error: verify_cgraph_node failed 0x92ae3e cgraph_node::verify_node() /var/tmp/portage/sys-devel/gcc-10.0.1_alpha20200223/work/gcc-10-20200223/gcc/cgraph.c:3755 0x91df74 symtab_node::verify() /var/tmp/portage/sys-devel/gcc-10.0.1_alpha20200223/work/gcc-10-20200223/gcc/symtab.c:1300 0x91f102 symtab_node::verify_symtab_nodes() /var/tmp/portage/sys-devel/gcc-10.0.1_alpha20200223/work/gcc-10-20200223/gcc/symtab.c:1320 0x931c24 symtab_node::checking_verify_symtab_nodes() /var/tmp/portage/sys-devel/gcc-10.0.1_alpha20200223/work/gcc-10-20200223/gcc/cgraph.h:667 0x931c24 symbol_table::compile() /var/tmp/portage/sys-devel/gcc-10.0.1_alpha20200223/work/gcc-10-20200223/gcc/cgraphunit.c:2720 0x933c5c symbol_table::compile() /var/tmp/portage/sys-devel/gcc-10.0.1_alpha20200223/work/gcc-10-20200223/gcc/cgraphunit.c:2717 0x933c5c symbol_table::finalize_compilation_unit() /var/tmp/portage/sys-devel/gcc-10.0.1_alpha20200223/work/gcc-10-20200223/gcc/cgraphunit.c:2984 Checking fails similarly for calloc(), strdup() and so on. When compiling w/ -m64, I see correct diagnostic instead: % gcc-10.0.1 -c uivreegs.c uivreegs.c:2:1: warning: conflicting types for built-in function 'malloc'; expected 'void *(long unsigned int)' [-Wbuiltin-declaration-mismatch] 2 | malloc (int); | ^~~~~~ uivreegs.c:1:1: note: 'malloc' is declared in header '<stdlib.h>' +++ |+#include <stdlib.h> 1 | long int