On 4/4/07, George Caragea <george@xxxxxxxxxx> wrote:
Hi all, I've been trying to add a pass in GCC 4.0.2 which is targeted for a MIPS-like architecture (with small changes). The purpose of the pass is to add prefetch instructions for some array references. After I identify a MODIFY_EXPR which is a read from an array location, I'm having trouble getting gcc to insert a prefetch instruction for it. I've been trying to follow the same pattern as in tree-ssa-loop-prefetch.c, which I got from the gcc-svn version. However, it doesn't work, and Im not sure if it's because of the differences in versions, or because I'm doing something wrong. The output I get when I compile a program is: === In force_gimple_operand_bsi, inserting statements: D.1109_4 = &B[i_8]; The prefetch instr generated is: __builtin_prefetch (D.1109_4, 0); done inserting XMTS.simple32.c:6: internal compiler error: tree check: expected ssa_name, have var_decl in verify_ssa, at tree-ssa.c:679
You need to mark these variables for renaming. In 4.3 you'd just use mark_new_vars_for_renaming. I don't remember what you use in 4.0 (in general, it is never a good idea to do new work against anything but the development version of gcc)