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

            Bug ID: 117688
           Summary: RISC-V: Wrong code for .SAT_SUB
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: kristerw at gcc dot gnu.org
  Target Milestone: ---

The following test fails when compiled as
  riscv64-unknown-linux-gnu-gcc -O2 -march=rv64gc bug.c


#include <stdint.h>

int8_t x, y, result;

__attribute__ ((noipa)) void
foo ()
{
  int8_t minus; 
  _Bool overflow = __builtin_sub_overflow (x, y, &minus);
  result = overflow ? (x < 0 ? 0x80 : 0x7f) : minus;
}

int main ()
{
  x = 0x80;
  y = 0x78;
  foo();
  if (result != (int8_t)0x80)
    __builtin_abort ();
  return 0;
}

Reply via email to