bengsig@oracle.nl (Bjorn Engsig) (10/12/90)
During normal compilation with optimization, all calls to strcpy expand via a macro __strcpy to inline lscbx and stcx instructions. We have some examples of cases where one of the addresses used by lscbx is stored in a register that is the same used to do the copy, which leads to a bad copy. If you generate the assembly listning, look for lines like: 1795| 001B98 lscbx. 7C6C 222B LSCBX r3,r4,r5,r6,r7,r8,r9,r10,cr0=ormnam(r4,r12) where one of the registers in the first list is the same as in the second paranthesized list, here r4 occurs in both places. A workaround is to give the -U__STR__ option to the C compiler. This note is for your information only to use when hunting optimizer problems. It has been reported to IBM. -- Bjorn Engsig, E-mail: bengsig@oracle.com, bengsig@oracle.nl ORACLE Corporation From IBM: auschs!ibmaus!cs.utexas.edu!uunet!oracle!bengsig "Stepping in others footsteps, doesn't bring you ahead"