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