[LLVMbugs] [Bug 4984] New: llc -O0: incorrect emission of negative offsets

bugzilla-daemon at cs.uiuc.edu bugzilla-daemon at cs.uiuc.edu
Tue Sep 15 09:46:55 PDT 2009


http://llvm.org/bugs/show_bug.cgi?id=4984

           Summary: llc -O0: incorrect emission of negative offsets
           Product: libraries
           Version: trunk
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Backend: X86
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: edwintorok at gmail.com
                CC: llvmbugs at cs.uiuc.edu


Compiling attached testcase results in these assembler warnings on x86-64
$ llc -O0 <foo.bc | as
{standard input}: Assembler messages:
{standard input}:23: Warning: 4294967294 shortened to 254

That looks wrong since rax+254 is not the same as rax-2.

The generated assembler looks like this (I marked line 23 with >>> <<<)

.text
        .align  16
        .globl  foo
        .type   foo, at function
foo:                                                        # @foo
.LBB1_0:                                                    # %entry
        pushq   %rbx
        movq    %rdi, %rbx
        movl    $40, %esi
        movq    %rbx, %rdi
        call    strchr
        movabsq $2, %rcx
        addq    %rbx, %rcx
        cmpq    %rax, %rcx
        ja      .LBB1_2
.LBB1_1:                                                    # %"<bb 3>"
>>>>>	movb	4294967294(%rax), %al <<<<<<<<<<<<<<<<<<<<<<<<<
        cmpb    $33, %al
        sete    %al
        movl    $1, %ecx
        testb   %al, %al
        movl    $0, %eax
        cmovne  %ecx, %eax
        popq    %rbx
        ret
.LBB1_2:                                                    # %"<bb 5>"
        xorl    %eax, %eax
        popq    %rbx
        ret
        .size   foo, .-foo

        .section        .note.GNU-stack,"", at progbits


Without -O0, llc by default outputs this where as doesn't warn:
        .text
        .align  16
        .globl  foo
        .type   foo, at function
foo:                                                        # @foo
.LBB1_0:                                                    # %entry
        pushq   %rbx
        movq    %rdi, %rbx
        movl    $40, %esi
        movq    %rbx, %rdi
        call    strchr
        addq    $2, %rbx
        cmpq    %rax, %rbx
        ja      .LBB1_2
.LBB1_1:                                                    # %"<bb 3>"
        cmpb    $33, -2(%rax)
        sete    %al
        movzbl  %al, %eax
        popq    %rbx
        ret
.LBB1_2:                                                    # %"<bb 5>"
        xorl    %eax, %eax
        popq    %rbx
        ret
        .size   foo, .-foo

        .section        .note.GNU-stack,"", at progbits


-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the llvm-bugs mailing list