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

            Bug ID: 103482
           Summary: Unnecessary ANDI instruction is generated for MIPS
                    target
           Product: gcc
           Version: og10 (devel/omp/gcc-10)
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: translation
          Assignee: unassigned at gcc dot gnu.org
          Reporter: yuri.karlsbrun at broadcom dot com
  Target Milestone: ---

Created attachment 51903
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=51903&action=edit
Generated assembly file

There is unnecessary (useless) instruction ADDI is generated after the LHU
instruction.

GCC configuration and version:
Target: mipsisa32-elf
Configured with: ../configure --enable-languages=c,c++ --target=mipsisa32-elf
----with-float=soft --with-newlib --with-gnu-as --with-gnu-ld --disable-shared
--disable-libssp
Thread model: single
Supported LTO compression algorithms: zlib
gcc version 10.3.0 20210408 (GCC) 

Command line:
$ mipsisa32-elf-gcc -Os -fcommon -fomit-frame-pointer -ffunction-sections      
-frename-registers -fweb -fno-builtin -c -o andi.o andi.c -v -save-temps
-msoft-float


Source file addi.c:

unsigned short cF;
unsigned short tC;

unsigned int  func(void)
{
  unsigned int totCell;

  unsigned short cellFill = cF;
  totCell = tC; 
  totCell = ((totCell & 0xFF) << 8) | (totCell >> 8);
  return totCell*cellFill;
}

Disassembled object file andi.o:
andi.o:     file format elf32-bigmips


Disassembly of section .text.func:

00000000 <func>:
   0:   97820000        lhu     v0,0(gp)
   4:   97880000        lhu     t0,0(gp)
   8:   3044ffff        andi    a0,v0,0xffff ## unnecessary clearing upper bits
                                             ## lhu does not do sign extension 
   c:   00021a00        sll     v1,v0,0x8
  10:   00042a02        srl     a1,a0,0x8
  14:   00653025        or      a2,v1,a1
  18:   30c7ffff        andi    a3,a2,0xffff
  1c:   03e00008        jr      ra
  20:   70e81002        mul     v0,a3,t0

Reply via email to