aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gnat.dg/exp0_eval.adb
diff options
context:
space:
mode:
authorSamuel Tardieu <sam@rfc1149.net>2008-08-10 20:13:24 +0000
committerSamuel Tardieu <sam@gcc.gnu.org>2008-08-10 20:13:24 +0000
commitabcbd24cb9c1030ac031ef6b384b7343f0229b06 (patch)
treeadc53e4a662c5d421fc83892ae5ba0ff878bc824 /gcc/testsuite/gnat.dg/exp0_eval.adb
parentde9a4397e956637cb26a9d6144ccc51a090cad68 (diff)
downloadgcc-abcbd24cb9c1030ac031ef6b384b7343f0229b06.zip
gcc-abcbd24cb9c1030ac031ef6b384b7343f0229b06.tar.gz
gcc-abcbd24cb9c1030ac031ef6b384b7343f0229b06.tar.bz2
exp_ch4.adb (Expand_N_Op_Expon): Force evaluation of left argument even when right argument is 0.
2008-08-10 Samuel Tardieu <sam@rfc1149.net> Robert Dewar <dewar@adacore.com> gcc/ada/ * exp_ch4.adb (Expand_N_Op_Expon): Force evaluation of left argument even when right argument is 0. (Expand_N_Op_Mod): Ditto when right argument is 1. (Expand_N_Op_Multiply): Ditto when any argument is 0. (Expand_N_Op_Rem): Ditto when right argument is 1. 2008-08-10 Samuel Tardieu <sam@rfc1149.net> gcc/testsuite/ * gnat.dg/exp0_eval.adb: New. Co-Authored-By: Robert Dewar <dewar@adacore.com> From-SVN: r138934
Diffstat (limited to 'gcc/testsuite/gnat.dg/exp0_eval.adb')
-rw-r--r--gcc/testsuite/gnat.dg/exp0_eval.adb31
1 files changed, 31 insertions, 0 deletions
diff --git a/gcc/testsuite/gnat.dg/exp0_eval.adb b/gcc/testsuite/gnat.dg/exp0_eval.adb
new file mode 100644
index 0000000..11edd7d
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/exp0_eval.adb
@@ -0,0 +1,31 @@
+-- { dg-do run }
+with Interfaces; use Interfaces;
+procedure Exp0_Eval is
+
+ F_Count : Natural := 0;
+
+ function F return Integer is
+ begin
+ F_Count := F_Count + 1;
+ return 1;
+ end F;
+
+ function F return Unsigned_32 is
+ begin
+ F_Count := F_Count + 1;
+ return 1;
+ end F;
+
+ R : constant Integer :=
+ F ** 0 +
+ F * 0 +
+ 0 * F +
+ Integer (Unsigned_32'(F) mod 1) +
+ Integer (Unsigned_32'(F) rem 1);
+ pragma Warnings (Off, R);
+begin
+ if F_Count /= 5 then
+ raise Program_Error
+ with "incorrect numbers of calls to F:" & F_Count'Img;
+ end if;
+end Exp0_Eval;