PR17326, PATCH

Peter Zotov whitequark at whitequark.org
Tue Nov 19 10:48:16 PST 2013


Stepan Dyatkovskiy писал 19.11.2013 18:33:
> Hello,
> 
> Please consider two possible fixes.
> 
> 1. pr17326-forbid-aggregates.patch. If we meet functions with
> aggregates as i-th parameter, treat them as equal only in case when it
> is exactly the same aggregate: LeftParamType == RightParamType.
> 
> 2. pr17326-tricky-bitcast.patch. Hackish. If we meet functions with
> aggregates as i-th parameter, and we 100500% sure aggregates are
> identical, use kind of memcpy in thunk wrapper:
>   store %AggrTyLeft %ThatAggregateParameter, %AggrTyLeft* %2
>   %3 = bitcast %AggrTyLeft* %2 to %AggrTyRight*
>   %4 = load %AggrTyRight* %3
>   tail call void @f0(%AggrTyRight %4)
> 
> IMHO, it is a seldom case. And its better to forbid it to merging.

Personally, I'm in favor of tricky-bitcast (perhaps done more cleanly).
This was my intended use case for mergefunc in the first place.

-- 
   WBR, Peter Zotov.



More information about the llvm-commits mailing list