On Fri, May 14, 2010 at 9:33 PM, Eric Botcazou <ebotca...@adacore.com> wrote:
>> Ugh.  This presents a chicken-and-egg problem to symbol resolution
>> and type-merging.
>>
>> To be clear, the issue is sth like
>>
>> unit1
>> -----
>> int size;
>> int a[size];
>>
>> unit2
>> ------
>> extern int size;
>> extern a[size];
>>
>> ?  And you get the a's merged but a diagnostic about mismatched types?
>
> Yes, exactly.
>
>> One way to fix this would be to simply detect the situation and never
>> issue a diagnostic.  Another way would be to delay the diagnostics
>> until after all types and symbols are merged.  The natural place
>> for this would be lto_symtab_merge_cgraph_nodes () which already
>> is after type merging and still has all candidates available.
>
> Is suppressing the diagnostic sufficient?  Will the two types be merged after
> the symbols are unified, or does that not matter at all?

The types will not be unified.  We are currently inserting VIEW_CONVERT_EXPRs
to make the IL type verification happy, but in the end it will cause
broken type-based alias info and thus may trigger miscompiles.  I am in
the process of fixing both pieces (avoid the V_C_E by using MEM_REF
and avoid the miscompile by separating TBAA types from the IL types).

Richard.

> --
> Eric Botcazou
>

Reply via email to