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

            Bug ID: 78090
           Summary: [x86_64]: GCC allows integer register for inter unit
                    conversion under -mtune-ctrl=^inter_unit_conversions .
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: rtl-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: venkataramanan.kumar at amd dot com
  Target Milestone: ---

GCC is not honoring -mtune-ctrl=^inter_unit_conversions and allows integer
register 

-O2 -mtune-ctrl=^inter_unit_conversions
or 
-O2 -march=bdver4

gcc version 7.0.0 20161020 (experimental) (GCC)

--- test case-- 
void test(float);
int main(int a, int b) {

 if(a == 1)
 {
        return 1;
 }
 if (b==1)
 {
        return 1;
 }
  test((float)a);
  return 0;
}
-----

Assembly 

(snip)
main:
.LFB0:
        .cfi_startproc
        cmpl    $1, %esi
        je      .L3
        cmpl    $1, %edi
        je      .L3
        pxor    %xmm0, %xmm0
        subq    $8, %rsp
        .cfi_def_cfa_offset 16
        cvtsi2ss        %edi, %xmm0 <== %edi should go via stack.
        call    test
        xorl    %eax, %eax
        popq    %rdx
        .cfi_def_cfa_offset 8
        ret
.L3:
        movl    $1, %eax
        ret

(snip)


The optimization is honored when modifying return value in branches 

void test(float);
int main(int a, int b) {

 if(a == 1)
 {
        return -1;
 }
 if (b==1)
 {
        return -1;
 }
  test((float)a);
  return 0;
}

---snip--

main:
.LFB0:
        .cfi_startproc
        cmpl    $1, %esi
        je      .L3
        cmpl    $1, %edi
        je      .L3
        pxor    %xmm0, %xmm0
        subq    $24, %rsp
        .cfi_def_cfa_offset 32
        movl    %edi, 12(%rsp)
        cvtsi2ss        12(%rsp), %xmm0
        call    test
        xorl    %eax, %eax
        addq    $24, %rsp
        .cfi_def_cfa_offset 8
        ret
.L3:
        orl     $-1, %eax
        ret
---snip--

Reply via email to