http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46296
Summary: Compiler causes assembler warning Product: gcc Version: 4.3.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target AssignedTo: unassig...@gcc.gnu.org ReportedBy: jswor...@qwest.net Created attachment 22270 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=22270 A pre-processed source file that exhibits the behavior When the attached file is compiled for Itanium with -O2, the assembler emits the following warning (obviously the file name varies): /tmp/ccYZ8n8x.s: Assembler messages: /tmp/ccYZ8n8x.s:804: Warning: Use of 'addl' may violate WAW dependency 'GR%, % in 1 - 127' (impliedf), specific resource number is 34 /tmp/ccYZ8n8x.s:802: Warning: This is the location of the conflicting usage Inspecting the generated code around the indicated line shows: { .mii cmp4.eq p6, p7 = 0, r8 mov r1 = r49 ;; (p7) mov r32 = r0 } { .mib (p7) cmp.ne p16, p17 = r0, r0 (p7) addl r36 = -94, r0 (p7) br.cond.dptk .L11 } ;; { .mmi adds r36=48,r12 mov r51=16 (p16) mov r34=r0 } { .mmi (p17) mov r34=16;; nop.m 0x0 mov r52=r36 } { .mib nop.m 0x0 nop.m 0x0 br.call.sptk.many b0=s64_rand_gen } ;; Apparently, the assembler has lost any notion that p16 and p17, which are set to reflect server == 1 and server != 1, respectively, are still mutually exclusive after the conditional branch. If the source file is changed to have a non-static or external declaration for generate_rsa_key(), the error goes away.