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.

Reply via email to