Hi shrey,
> I would like to address aggregates (structures, arrays) in a
> linear fashion and in terms of the simplest target type that is
> embedded in these data structures, So a 2 dimensional array becomes
> a single dimension array. A structure with a character and array is
> addressed in terms of the target size of character. So hopefully
> express the
> address calculation in terms of one GEP(base, offset) or if GEP cant
> express it use my intrinsic.
> Is that feasible ? If so, can that be done as a bc transformation.
it sounds like you want to turn GEP into pointer arithmetic. It is easy
to do this directly, but here is a trick: suppose you originally have
%p = GEP(base, offset0, offset1, ...)
Form
%q = GEP(0, offset0, offset1, ...)
i.e. where you replaced base by a null pointer. Now do
%r = ptrtoint %q to i64
So %r holds the offset in octets from base. Then the original GEP is the
same as
$p2 = GEP(base, %r)
Ciao, Duncan.
PS: If you constant fold %r probably it will get turned into a more explicit
value.