$ cat weak.c extern void *__pthread_internal_tsd_address (void) __attribute__ ((__const__)); #pragma weak __pthread_internal_tsd_address void f (void) { for (;;) if (__pthread_internal_tsd_address ? __pthread_internal_tsd_address () : 0) return; } $ gcc/xgcc -Bgcc -O2 -S weak.c $ grep __pthread weak.s br.call.sptk.many b0 = __pthread_internal_tsd_address# addl r14 = @ltoff(@fptr(__pthread_internal_tsd_address#)), gp .weak __pthread_internal_tsd_address#
__pthread_internal_tsd_address is called before being checked for NULL. Broken by this change: 2004-07-09 Zdenek Dvorak <[EMAIL PROTECTED]> * tree-ssa-loop-im.c: New file. ... -- Summary: [4.0 regression] Weak const function mishandled inside loop Product: gcc Version: 4.0.0 Status: UNCONFIRMED Keywords: wrong-code Severity: critical Priority: P2 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: schwab at suse dot de CC: gcc-bugs at gcc dot gnu dot org,rakdver at atrey dot karlin dot mff dot cuni dot cz GCC target triplet: ia64-*-linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19917