re PR ada/30740 (Improper semantics in gnat's compilation of certain expressions...
authorRobert Dewar <dewar@adacore.com>
Tue, 20 May 2008 12:44:55 +0000 (14:44 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Tue, 20 May 2008 12:44:55 +0000 (14:44 +0200)
commit685094bfdee3a606aa8ebf491f4968d9cd4879db
tree07adf48529a7f93ac90b78c757b1211f4363f826
parente7841bacf5a86bd2523a39abb8e6f6385297b6fd
re PR ada/30740 (Improper semantics in gnat's compilation of certain expressions involving modular arithmetic)

2008-05-20  Robert Dewar  <dewar@adacore.com>

PR ada/30740
* einfo.ads, einfo.adb (Non_Binary_Modulus): Applies to all types and
subtypes, always False for non-modular types.
Shared_Var_Assign_Proc (node22) and Shared_Var_Read_Proc (node 15)
entry nodes have been replaced by Shared_Var_Procs_Instance (node22)
for Shared_Storage package.
(Is_RACW_Stub_Type): New entity flag.

* exp_ch4.adb
(Expand_N_Op_Expon): Avoid incorrect optimization of a*(2**b) in the
case where we have a modular type with a non-binary modules.
Comments reformattings.

* sem_intr.adb: Simplify code not that Non_Binary_Modulus applies to
all types.

From-SVN: r135619
gcc/ada/einfo.adb
gcc/ada/einfo.ads
gcc/ada/exp_ch4.adb
gcc/ada/sem_intr.adb