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

--- Comment #30 from Andrew Macleod <amacleod at redhat dot com> ---
On 10/19/20 6:40 PM, bergner at gcc dot gnu.org wrote:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97360
>
> --- Comment #28 from Peter Bergner <bergner at gcc dot gnu.org> ---
> (In reply to Andrew Macleod from comment #25)
>> Wonder if it was suppose to be something like:
>>
>>
>>     /* Vector pair and vector quad support.  */
>>     if (TARGET_EXTRA_BUILTINS)
>>       {
>> -      tree oi_uns_type = make_unsigned_type (256);
>> -      vector_pair_type_node = build_distinct_type_copy (oi_uns_type);
>> +      vector_pair_type_node = make_unsigned_type (256);
>>         SET_TYPE_MODE (vector_pair_type_node, POImode);
>>         layout_type (vector_pair_type_node);
>>         lang_hooks.types.register_builtin_type (vector_pair_type_node,
>>                                                "__vector_pair");
>>   
>> -      tree xi_uns_type = make_unsigned_type (512);
>> -      vector_quad_type_node = build_distinct_type_copy (xi_uns_type);
>> +      vector_quad_type_node = make_unsigned_type (512);
>>         SET_TYPE_MODE (vector_quad_type_node, PXImode);
>>         layout_type (vector_quad_type_node);
>>         lang_hooks.types.register_builtin_type (vector_quad_type_node,
> So this passed bootstrap and regtesting with no regressions.
>
> Is this really the correct fix?  Don't we want a distinct type compared to the
> unsigned type returned from make_unsigned_type()?
>
I actually dont know, Richi might have to comment on that.. Nothing was 
referring to the original unsigned_type that was created?  Its just 
orphaned?

tree
make_unsigned_type (int precision)
{
   tree type = make_node (INTEGER_TYPE);

   TYPE_PRECISION (type) = precision;

   fixup_unsigned_type (type);
   return type;
}


All it does is create a new node, then fixup goes and creates the MIN 
and MAX fields and sets a few other little things.     The only reason 
we saw the old unsigned type is we were picking it up from the MAX and 
MIN fields,... which  were set to the original type.

it sure *seems* like that is a resonable fix.  Its not like that first 
node is creating a system wide node?

our type system is a bit, umm, flakey,  but it seems reasonable to me.   
:-)  And its in the spirit of what his patch was doing...

What could possibly go wrong? :-) :-)

Andrew

Reply via email to