This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Scheduling problem


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'?


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]