[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