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] |
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