Dave, The following reduced testcase: cat >> foo.c <<EOF #include <stdio.h> #include <stdlib.h> int main (void) { printf ("&printf = %x\n", (unsigned long)&printf); if (((unsigned long) &printf) & 3) { printf ("printf is a PLABEL32\n"); } return 0; } EOF carlos@firin:~/fsrc/gcc-work$ /usr/local/tools/bin/hppa-linux-gcc-4.2.4 -o foo foo.c carlos@firin:~/fsrc/gcc-work$ ./foo &printf = 119ea printf is a PLABEL32 carlos@firin:~/fsrc/gcc-work$ /usr/local/tools/bin/hppa-linux-gcc-4.3.1 -o foo foo.c carlos@firin:~/fsrc/gcc-work$ ./foo &printf = 119ea GCC 4.3, even at -O0, reduces "((unsigned long) &printf) & 3)" to "0". ~~~ foo.c.003t.original ~~~ ;; Function main (main) ;; enabled by -tree-original { printf ((const char * restrict) (char *) "&printf = %x\n", (long unsigned int) printf); if (0) { printf ((const char * restrict) (char *) "printf is a PLABEL32\n"); } return 0; } ~~~ If the if condition is reduced to "0" as early as 003t.original, does that mean it's the C frontend fault? This issue is breaks glibc's detection of PLABEL's during startup relocation processing. Cheers, Carlos. -- To unsubscribe from this list: send the line "unsubscribe linux-parisc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html