A program may consist of multiple compilation units, and multiple array
access operations may exist within the program.
In SIMPLE_IPA_PASS, I want to check whether the index is consistent during
two array accesses: During the first pass through all functions, traverse
all gimples, record each array access operation, and store its
corresponding {Function *, index} into a hash_set. During the second pass
through all functions, when encountering the array access operation we wish
to process, search for {Function *, index} in the hash_set.
Converting SIMPLE_IPA_PASS to IPA_PASS presents challenges.
Since Function * is a pointer, direct transfer is meaningless. index is an
ssa_name, so direct transfer is also impossible. My question is: Since the
above approach fails, if I encounter an array access operation during the
wpa phase, how should I determine whether there exists another array access
operation within the same function that shares the same index?
Thanks.

ywgrit.

Richard Biener <[email protected]> 于2025年10月13日周一 14:42写道:

> On Sat, Oct 11, 2025 at 10:32 AM ywgrit via Gcc <[email protected]> wrote:
> >
> > I used the functions stream_write_tree/stream_read_tree in lto. If tree
> > contains ssa_name, then stream_read_tree will generate ice: cfun is null
> in
> > wpa, so (*SSANAMES (cfun))[ix] will break the program. How to write/read
> > tree contains ssa_name in lto, e.g., wpa phase?
>
> You shouldn't - you have to abstract from this somehow as during WPA phase
> a SSA name doesn't make "sense".  That said, you have to elaborate a bit on
> what you are trying to do.
>
> Richard.
>
> > Thanks.
> >
> > ywgrit.
>

Reply via email to