This is the mail archive of the egcs@egcs.cygnus.com mailing list for the EGCS project. See the EGCS home page for more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

SPARC bugs


I looked into a crash for the SPARC port under -mcpu=v9.  The crash happens
when executing the output pattern of muldi3_v8plus, with this test case:

  f ()
  {
    unsigned long long __r1;
    __r1 = __r1 * 0x100000000ull;
  }

Pooking around for a while, I found these apparent problems:

  1) No change log entry for when the sparc_check_64 function was added.
  2) The sparc_check_64 looks strange.  Clearly, it is meant to handle just
     registers for the parameter x.  Yet, it doesn't test for that, except
     in a place where I suppose it once crashed.
  3) CONST_DOUBLE_OK_FOR_LETTER_P calls arith_double_operand, which accepts
     non-constant values.  Probably not a visible bugs, but still a bug.
  4) The muldi3_v8plus pattern's output code does not seem prepared to deal
     with the operand types that the predicates accept.
  5) set_extends lacks documentation.

Who is responsible for this mess?  It is hard to clean it up, since
there are so many errors that the author's intensions are unclear.

Torbjörn