This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


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

Re: A new patch for floating point conditional mov on PPo


>>   > 2) In output_int_test_compare_fcmov you have:
>>   > 
>>   >      if (CONSTANT_P (operands[0]) || GET_CODE (operands[1]) == MEM)
>>   >        output = reverse;
>>   >      else
>>   >        output = normal;
>>   > 
>>   >   a) I believe that the patterns require operand 0 to be a
>>   >      nonimmediate_operand in which case how can CONSTANT_P
>>   >      ever be true?
>> I've run into a couple cases where reload doesn't check predicates
>> and blindly allows invalid RTL for a predicate.
>> 
>> However, I think these cases are internal to reload and are fixed
>> up before reload finishes.
>> 
>> One thought would be to abort for these cases that we think can
>> not happen.  That way if they do happen we'll know about them
>> intead of silently generating incorrect code.

I believe that this is already handled by:

#ifdef REGISTER_CONSTRAINTS
        if (! constrain_operands (insn_code_number, 1))
          fatal_insn_not_found (insn);
#endif

in final.c (final_scan_insn).

>I will leave it alone since the same code is in the normal test/compare
>patterns. We should fix all of them, not some of them.

A patch has already been submitted for those cases.  I would prefer not
perpetuating overly complex code.

-- John
-------------------------------------------------------------------------
|   Feith Systems  |   Voice: 1-215-646-8000  |  Email: john@feith.com  |
|    John Wehle    |     Fax: 1-215-540-5495  |                         |
-------------------------------------------------------------------------



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