[llvm-commits] [llvm] r73291 - in /llvm/trunk: lib/CodeGen/LLVMTargetMachine.cpp lib/Target/ARM/ARM.h lib/Target/ARM/ARMLoadStoreOptimizer.cpp lib/Target/ARM/ARMTargetMachine.cpp lib/Target/ARM/ARMTargetMachine.h test/CodeGen/ARM/stm.ll

Jakob Stoklund Olesen stoklund at 2pi.dk
Sun Jul 12 08:07:14 PDT 2009


Sorry I am so late in commenting.
Please see comments below.

On 13/06/2009, at 11.13, Evan Cheng wrote:

> Author: evancheng
> Date: Sat Jun 13 04:12:55 2009
> New Revision: 73291
>
> URL: http://llvm.org/viewvc/llvm-project?rev=73291&view=rev
> Log:
> Add a ARM specific pre-allocation pass that re-schedule loads /  
> stores from
> consecutive addresses togther. This makes it easier for the post- 
> allocation pass
> to form ldm / stm.
>
> This is step 1. We are still missing a lot of ldm / stm  
> opportunities because
> of register allocation are not done in the desired order. More  
> enhancements
> coming.
>
> Added:
>    llvm/trunk/test/CodeGen/ARM/stm.ll
> Modified:
>    llvm/trunk/lib/CodeGen/LLVMTargetMachine.cpp
>    llvm/trunk/lib/Target/ARM/ARM.h
>    llvm/trunk/lib/Target/ARM/ARMLoadStoreOptimizer.cpp
>    llvm/trunk/lib/Target/ARM/ARMTargetMachine.cpp
>    llvm/trunk/lib/Target/ARM/ARMTargetMachine.h
>
> Modified: llvm/trunk/lib/CodeGen/LLVMTargetMachine.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/LLVMTargetMachine.cpp?rev=73291&r1=73290&r2=73291&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- llvm/trunk/lib/CodeGen/LLVMTargetMachine.cpp (original)
> +++ llvm/trunk/lib/CodeGen/LLVMTargetMachine.cpp Sat Jun 13 04:12:55  
> 2009
> @@ -240,7 +240,7 @@
>   if (OptLevel != CodeGenOpt::None) {
>     PM.add(createMachineLICMPass());
>     PM.add(createMachineSinkingPass());
> -    printAndVerify(PM, /* allowDoubleDefs= */ true);
> +    printAndVerify(PM, /* allowDoubleDefs= */ false);
>   }

Was this change intended? It seems unrelated to the others.

The intention is that the machine code verifier allows double  
definitions until LiveVariables has run, inserting <kill> in all the  
right places. I don't think MachineLICM or MachineSinking require the  
LiveVariables analysis, so there could still legally be double  
definitions in the code at this point.

Regards,
/jakob




More information about the llvm-commits mailing list