[llvm] r203469 - Fix regression with -O0 for mips .

Eric Christopher echristo at gmail.com
Mon Mar 10 10:27:59 PDT 2014


What kind of regression is this? From your testcase it looks like it
might not have compiled before? If so, why is adding an optimizer pass
before regalloc the correct fix?

-eric

On Mon, Mar 10, 2014 at 9:31 AM, Reed Kotler <rkotler at mips.com> wrote:
> Author: rkotler
> Date: Mon Mar 10 11:31:25 2014
> New Revision: 203469
>
> URL: http://llvm.org/viewvc/llvm-project?rev=203469&view=rev
> Log:
> Fix regression with -O0 for mips .
>
>
> Added:
>     llvm/trunk/test/CodeGen/Mips/optimize-pic-o0.ll
> Modified:
>     llvm/trunk/lib/Target/Mips/MipsTargetMachine.cpp
>
> Modified: llvm/trunk/lib/Target/Mips/MipsTargetMachine.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsTargetMachine.cpp?rev=203469&r1=203468&r2=203469&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MipsTargetMachine.cpp (original)
> +++ llvm/trunk/lib/Target/Mips/MipsTargetMachine.cpp Mon Mar 10 11:31:25 2014
> @@ -175,6 +175,9 @@ public:
>    virtual bool addInstSelector();
>    virtual void addMachineSSAOptimization();
>    virtual bool addPreEmitPass();
> +
> +  virtual bool addPreRegAlloc();
> +
>  };
>  } // namespace
>
> @@ -208,6 +211,15 @@ void MipsPassConfig::addMachineSSAOptimi
>    TargetPassConfig::addMachineSSAOptimization();
>  }
>
> +bool MipsPassConfig::addPreRegAlloc() {
> +  if (getOptLevel() == CodeGenOpt::None) {
> +    addPass(createMipsOptimizePICCallPass(getMipsTargetMachine()));
> +    return true;
> +  }
> +  else
> +    return false;
> +}
> +
>  void MipsTargetMachine::addAnalysisPasses(PassManagerBase &PM) {
>    if (Subtarget.allowMixed16_32()) {
>      DEBUG(errs() << "No ");
>
> Added: llvm/trunk/test/CodeGen/Mips/optimize-pic-o0.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Mips/optimize-pic-o0.ll?rev=203469&view=auto
> ==============================================================================
> --- llvm/trunk/test/CodeGen/Mips/optimize-pic-o0.ll (added)
> +++ llvm/trunk/test/CodeGen/Mips/optimize-pic-o0.ll Mon Mar 10 11:31:25 2014
> @@ -0,0 +1,33 @@
> +; RUN: llc -mtriple=mipsel -O0 < %s | FileCheck %s
> +
> +; Function Attrs: nounwind
> +define i32 @main()  {
> +entry:
> +  %retval = alloca i32, align 4
> +  %i = alloca i32, align 4
> +  store i32 0, i32* %retval
> +  store i32 0, i32* %i, align 4
> +  br label %for.cond
> +
> +for.cond:                                         ; preds = %for.inc, %entry
> +  %0 = load i32* %i, align 4
> +  %cmp = icmp slt i32 %0, 10
> +  br i1 %cmp, label %for.body, label %for.end
> +
> +for.body:                                         ; preds = %for.cond
> +  call void bitcast (void (...)* @foo to void ()*)()
> +; CHECK: jalr $25
> +  br label %for.inc
> +
> +for.inc:                                          ; preds = %for.body
> +  %1 = load i32* %i, align 4
> +  %inc = add nsw i32 %1, 1
> +  store i32 %inc, i32* %i, align 4
> +  br label %for.cond
> +
> +for.end:                                          ; preds = %for.cond
> +  %2 = load i32* %retval
> +  ret i32 %2
> +}
> +
> +declare void @foo(...)
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits



More information about the llvm-commits mailing list