[Bug target/88877] New: rs6000 emits signed extension for unsigned int type(__floatunsidf).

kamleshbhalui at gmail dot com gcc-bugzilla@gcc.gnu.org
Wed Jan 16 13:48:00 GMT 2019


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88877

            Bug ID: 88877
           Summary: rs6000 emits signed extension for unsigned int
                    type(__floatunsidf).
           Product: gcc
           Version: 8.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: kamleshbhalui at gmail dot com
  Target Milestone: ---

consider below testcase:

$cat test.c
void foo(){
unsigned int x=-1;
double d=x;
}

$./cc1 test.c -msoft-float -m64
$cat test.s

.foo:
.LFB0:
        mflr 0
        std 0,16(1)
        stdu 1,-128(1)
.LCFI0:
        li 9,-1
        stw 9,112(1)
        lwa 9,112(1)
        mr 3,9
        bl .__floatunsidf
        nop
        mr 9,3
        std 9,120(1)
        nop
        addi 1,1,128
.LCFI1:
        ld 0,16(1)
        mtlr 0
        blr
        .long 0
        .byte 0,0,0,1,128,0,0,1

Here, you can see that sign extension before calling the __floatunsidf routine.
As per my understanding it should emit zero extension here because
__floatunsidf  has  its argument as unsigned int type.


More information about the Gcc-bugs mailing list