This is the mail archive of the gcc-bugs@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]

RE: libstdc++/5625: exception unwinding creates invalid pointer on mips


Yes, the MIPS documentation states that the destination register 
gets the sign-extended result ("GPR[rt]<-sign_extend(temp31..0)").

However, note the ADDIU instruction Restrictions section:

     Restrictions:
     If GPR rs does not contain a sign-extended 
     32-bit value (bits 63..31 equal), then the 
     result of the operation is UNPREDICTABLE.

And then, on page 2:

     1.2.1 UNPREDICTABLE
     UNPREDICTABLE results may vary from processor 
     implementation to implementation, instruction 
     to instruction, or as a function of time on the 
     same implementation or instruction. Software can 
     never depend on results that are UNPREDICTABLE. 
     UNPREDICTABLE operations may cause a result to 
     be generated or not. If a result is generated,
     it is UNPREDICTABLE. UNPREDICTABLE operations 
     may cause arbitrary exceptions.

-ed


http://www.mips.com/publications/documentation/MD00087-2B-MIPS64BIS-AFP-00.9
5.pdf

(no comma attached to the end of the URL this time!)


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