[LLVMbugs] [Bug 2262] New: volatile load should not be moved inside	loop
    bugzilla-daemon at cs.uiuc.edu 
    bugzilla-daemon at cs.uiuc.edu
       
    Tue Apr 29 08:26:53 PDT 2008
    
    
  
http://llvm.org/bugs/show_bug.cgi?id=2262
           Summary: volatile load should not be moved inside loop
           Product: new-bugs
           Version: unspecified
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: new bugs
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: regehr at cs.utah.edu
                CC: llvmbugs at cs.uiuc.edu
This is observed for recent SVN of llvm + gcc-4.2 on Ubuntu Feisty on x86-32.
This program:
volatile int g_1;
void loop (void)
{
  int b;
  for (b = 0; b < 10; b++)
    {
      g_1 += 5;
    }
}
int foo (void)
{
  loop ();
  return g_1;
}
compiled like this:
llvm-gcc -Os -S -Wall small.c
gives this output:
foo:
        pushl   %ebp
        movl    %esp, %ebp
        xorl    %ecx, %ecx
        movl    g_1, %eax
        .align  16
.LBB2_1:        # bb
        addl    $5, %eax
        movl    %eax, g_1
        incl    %ecx
        cmpl    $10, %ecx
        movl    g_1, %eax
        jne     .LBB2_1 # bb
.LBB2_2:        # bb9
        popl    %ebp
        ret
The final move of g_1 into eax should be outside of the loop.
-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
    
    
More information about the llvm-bugs
mailing list