From 00a22e5e4bf265fcc0e6e1a3252194c87fc8d4aa Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Mon, 22 Oct 2012 08:19:58 +0000 Subject: [PATCH] trans.c (Loop_Statement_to_gnu): Use gnat_type_for_size directly to obtain an unsigned version of the base type. * gcc-interface/trans.c (Loop_Statement_to_gnu): Use gnat_type_for_size directly to obtain an unsigned version of the base type. From-SVN: r192669 --- gcc/ada/ChangeLog | 5 +++++ gcc/ada/gcc-interface/trans.c | 3 ++- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gnat.dg/modular4.adb | 11 +++++++++++ gcc/testsuite/gnat.dg/modular4_pkg.ads | 9 +++++++++ 5 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gnat.dg/modular4.adb create mode 100644 gcc/testsuite/gnat.dg/modular4_pkg.ads diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 30428c6ce32..5d39ca7f876 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,8 @@ +2012-10-22 Eric Botcazou + + * gcc-interface/trans.c (Loop_Statement_to_gnu): Use gnat_type_for_size + directly to obtain an unsigned version of the base type. + 2012-10-22 Eric Botcazou * gcc-interface/decl.c (gnat_to_gnu_entity) : Do not diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c index aac483cafaa..c4a40c72cc4 100644 --- a/gcc/ada/gcc-interface/trans.c +++ b/gcc/ada/gcc-interface/trans.c @@ -2431,7 +2431,8 @@ Loop_Statement_to_gnu (Node_Id gnat_node) { if (TYPE_PRECISION (gnu_base_type) > TYPE_PRECISION (size_type_node)) - gnu_base_type = gnat_unsigned_type (gnu_base_type); + gnu_base_type + = gnat_type_for_size (TYPE_PRECISION (gnu_base_type), 1); else gnu_base_type = size_type_node; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7f2ddb10151..dbe23bf7cd7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-10-22 Eric Botcazou + + * gnat.dg/modular4.adb: New test. + * gnat.dg/modular4_pkg.ads: New helper. + 2012-10-21 Eric Botcazou * gnat.dg/specs/atomic1.ads: XFAIL on MIPS. diff --git a/gcc/testsuite/gnat.dg/modular4.adb b/gcc/testsuite/gnat.dg/modular4.adb new file mode 100644 index 00000000000..e8e8f2956e1 --- /dev/null +++ b/gcc/testsuite/gnat.dg/modular4.adb @@ -0,0 +1,11 @@ +-- { dg-do compile } +-- { dg-options "-O" } + +with Modular4_Pkg; use Modular4_Pkg; + +procedure Modular4 is +begin + for I in Zero .. F mod 8 loop + raise Program_Error; + end loop; +end; diff --git a/gcc/testsuite/gnat.dg/modular4_pkg.ads b/gcc/testsuite/gnat.dg/modular4_pkg.ads new file mode 100644 index 00000000000..b38026201ed --- /dev/null +++ b/gcc/testsuite/gnat.dg/modular4_pkg.ads @@ -0,0 +1,9 @@ +package Modular4_Pkg is + + type Word is mod 2**48; + + Zero : constant Word := 0; + + function F return Word; + +end Modular4_Pkg; -- 2.30.2