Hi, everyone I'm a guy working on IA64 with gcc version 4.1.1, and I need to do some instrumentation to do information flow tracking.
Instrumentation is insert after register allocation and before the second scheduling, I suppose gcc will automatic maintain data flow, and it seems to be except one situation: consider the following code: mov r8=pr cmp.eq p6,p7=something0 (p6) something1 (p7) something2 mov pr=r8,-1 when I can't find dead predicate register, I find a general register and save pr into the general reigster, now pr can be freely used, after using, I restore the previous pr. This code is right, but after scheduling. It will change into: mov r8=pr cmp.eq p6,p7=something0 (p6) something1 mov pr=r8,-1 (p7) something2 now p7 is not the right value set by the cmp because it is restored to the original value. How this can be solve, or how to tell gcc that this 'mov pr' instruction must after '(p7) something2'?