https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88645
Bug ID: 88645
Summary: Don't assume functions are always nonnull if there's
__attribute__((weak_import)), similar to
__attribute__((weak))
Product: gcc
Version: 9.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: mcccs at gmx dot com
Target Milestone: ---
OS: Darwin/macOS
Test vector:
extern void a (void) __attribute__((weak_import));
int main(void) {
return !!a;
}
It shouldn't print a warning **iff** on macOS.
This warning:
warning: the address of 'void a()' will never be NULL [-Waddress]
The test would pass if it was __attribute__((weak)) instead of
__attribute__((weak_import))
The fix can be added to the `warn_for_null_address` function in gcc/cp/typeck.c
Aside from the warning, the assembly generation behavior is correct.