$ gcc -c b.ads b.ads: In function 'B._Elabs': b.ads:1: error: Invalid operand to unary operator D.399 +===========================GNAT BUG DETECTED==============================+ | 4.0.0 20041005 (experimental) (i686-pc-linux-gnu) verify_stmts failed. | | No source file position information available | | Please submit a bug report; see http://gcc.gnu.org/bugs.html. | | Include the entire contents of this bug box in the report. | | Include the exact gcc or gnatmake command that you entered. | | Also include sources listed below in gnatchop format | | (concatenated together with no headers between files). | +==========================================================================+ Please include these source files with error report Note that list may not be accurate in some cases, so please double check that the problem can still be reproduced with the set of files listed. b.ads compilation abandoned ---chop here--- package B is An_Array : array (Boolean) of Character; An_Object : Character; for An_Object'Address use An_Array (True)'Address; pragma Import (Ada, An_Object); end B;
D.351 = (system__address *) &(SIGNED_32) D.359; Confirmed, looks like a front-end problem, it should have made a temprary variable to hold the value and then taken the address.
(In reply to comment #1) > D.351 = (system__address *) &(SIGNED_32) D.359; > > Confirmed, looks like a front-end problem, it should have made a temprary variable to hold the value > and then taken the address. The ICE no longer occurs with current CVS.
Fixed.