score_print_operand has

   'U'        print hi part of a CONST_INT rtx

  else if (c == 'U')
    {
      gcc_assert (code == CONST_INT);
      fprintf (file, HOST_WIDE_INT_PRINT_HEX,
               (unsigned HOST_WIDE_INT) INTVAL (op) >> 16);
    }

On 64bit host, for (const_int -2147483648 [0xffffffff80000000]), it
will generate 0xffffffff8000.


-- 
           Summary: Bad 16bit constant code generation on 64bit host
           Product: gcc
           Version: 4.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: hjl at lucon dot org
GCC target triplet: score-unknown-elf


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30474

Reply via email to