[llvm] r195565 - Fix a funny bug I introduced during conversion of ARM constant islands to Mips.

Reed Kotler rkotler at mips.com
Sat Nov 23 19:15:03 PST 2013


I have a follow on patch coming for fix a make check error with two 
previous test cases that results slightly changed for it. Will be ready 
in a few minutes.

Sorry about that.

Reed

On 11/23/2013 06:53 PM, Reed Kotler wrote:
> Author: rkotler
> Date: Sat Nov 23 20:53:09 2013
> New Revision: 195565
>
> URL: http://llvm.org/viewvc/llvm-project?rev=195565&view=rev
> Log:
> Fix a funny bug I introduced during conversion of ARM constant islands to Mips.
> I had to move some code and I moved a declaration forward past it's first use
> in the function but by nutty coincidence there was another variable of the same
> name and type and  with completely unrelated function that was declared globally
> in the class so no compilation error ensued.
> It required some unusual conditions for it to even matter. Caused test
> case casts.c in test-suite to fail during compilation with a duplicate
> symbol error. I would have noticed it during final code review for this port.
>
>
> Added:
>      llvm/trunk/test/CodeGen/Mips/ci2.ll
> Modified:
>      llvm/trunk/lib/Target/Mips/MipsConstantIslandPass.cpp
>
> Modified: llvm/trunk/lib/Target/Mips/MipsConstantIslandPass.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsConstantIslandPass.cpp?rev=195565&r1=195564&r2=195565&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MipsConstantIslandPass.cpp (original)
> +++ llvm/trunk/lib/Target/Mips/MipsConstantIslandPass.cpp Sat Nov 23 20:53:09 2013
> @@ -1275,6 +1275,10 @@ bool MipsConstantIslands::handleConstant
>     // Decrement the old entry, and remove it if refcount becomes 0.
>     decrementCPEReferenceCount(CPI, CPEMI);
>
> +  // No existing clone of this CPE is within range.
> +  // We will be generating a new clone.  Get a UID for it.
> +  unsigned ID = createPICLabelUId();
> +
>     // Now that we have an island to add the CPE to, clone the original CPE and
>     // add it to the island.
>     U.HighWaterMark = NewIsland;
> @@ -1290,9 +1294,7 @@ bool MipsConstantIslands::handleConstant
>     BBInfo[NewIsland->getNumber()].Size += Size;
>     adjustBBOffsetsAfter(llvm::prior(MachineFunction::iterator(NewIsland)));
>
> -  // No existing clone of this CPE is within range.
> -  // We will be generating a new clone.  Get a UID for it.
> -  unsigned ID = createPICLabelUId();
> +
>
>     // Finally, change the CPI in the instruction operand to be ID.
>     for (unsigned i = 0, e = UserMI->getNumOperands(); i != e; ++i)
>
> Added: llvm/trunk/test/CodeGen/Mips/ci2.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Mips/ci2.ll?rev=195565&view=auto
> ==============================================================================
> --- llvm/trunk/test/CodeGen/Mips/ci2.ll (added)
> +++ llvm/trunk/test/CodeGen/Mips/ci2.ll Sat Nov 23 20:53:09 2013
> @@ -0,0 +1,39 @@
> +; RUN: llc -mtriple=mipsel-linux-gnu -march=mipsel -mcpu=mips16 -soft-float -mips16-hard-float -relocation-model=static -mips16-constant-islands   < %s | FileCheck %s -check-prefix=constisle
> +
> + at i = common global i32 0, align 4
> + at b = common global i32 0, align 4
> + at l = common global i32 0, align 4
> +
> +; Function Attrs: nounwind
> +define void @foo() #0 {
> +entry:
> +  store i32 305419896, i32* @i, align 4
> +  %0 = load i32* @b, align 4
> +  %tobool = icmp ne i32 %0, 0
> +  br i1 %tobool, label %if.then, label %if.else
> +
> +if.then:                                          ; preds = %entry
> +  store i32 10, i32* @b, align 4
> +  br label %if.end
> +
> +if.else:                                          ; preds = %entry
> +  store i32 20, i32* @b, align 4
> +  br label %if.end
> +
> +if.end:                                           ; preds = %if.else, %if.then
> +  call void asm sideeffect ".space 100000", ""() #1, !srcloc !1
> +  store i32 305419896, i32* @l, align 4
> +  ret void
> +; constisle: $CPI0_1:
> +; constisle	.4byte	305419896               # 0x12345678
> +; constisle	#APP
> +; constisle	.space 100000
> +; constisle	#NO_APP
> +; constisle $CPI0_0:
> +; constisle	.4byte	305419896               # 0x12345678
> +}
> +
> +attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
> +attributes #1 = { nounwind }
> +
> +!1 = metadata !{i32 103}
>





More information about the llvm-commits mailing list