Skip to content
  • Bill Wendling's avatar
    If we have a load of a global address that's not modified during the · 7749a901
    Bill Wendling authored
    function, then go ahead and hoist it out of the loop. This is the result:
    
    $ cat a.c
    volatile int G;
    
    int A(int N) {
      for (; N > 0; --N)
        G++;
    }
    $ llc -o - -relocation-model=pic
    _A:
    ...
    LBB1_2: # bb
            movl    L_G$non_lazy_ptr-"L1$pb"(%eax), %esi
            incl    (%esi)
            incl    %edx
            cmpl    %ecx, %edx
            jne     LBB1_2  # bb
    ...
    $ llc -o - -relocation-model=pic -machine-licm
    _A:
    ...
            movl    L_G$non_lazy_ptr-"L1$pb"(%eax), %eax
    LBB1_2: # bb
            incl    (%eax)
            incl    %edx
            cmpl    %ecx, %edx
            jne     LBB1_2  # bb
    ...
    
    I'm limiting this to the MOV32rm x86 instruction for now.
    
    llvm-svn: 45444
    7749a901
Loading