[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