aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2009-04-20 19:30:55 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2009-04-20 19:30:55 +0000
commitc2efda0dee082ae3f57bdb2c7b1ae2dbf07ddfcd (patch)
tree44ac2e6e61907d4bb321cf154de1771ed14678cf /gcc/testsuite
parenta916d97fc0c647034e9330b00349ad8145bf3157 (diff)
downloadgcc-c2efda0dee082ae3f57bdb2c7b1ae2dbf07ddfcd.zip
gcc-c2efda0dee082ae3f57bdb2c7b1ae2dbf07ddfcd.tar.gz
gcc-c2efda0dee082ae3f57bdb2c7b1ae2dbf07ddfcd.tar.bz2
trans.c (unchecked_conversion_lhs_nop): New predicate.
* gcc-interface/trans.c (unchecked_conversion_lhs_nop): New predicate. (gnat_to_gnu) <N_Unchecked_Type_Conversion>: Return the expression if the conversion is on the LHS of an assignment and a no-op. <all> Do not convert the result to the result type if the Parent node is such a conversion. From-SVN: r146450
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gnat.dg/pack13.adb10
-rw-r--r--gcc/testsuite/gnat.dg/pack13.ads33
-rw-r--r--gcc/testsuite/gnat.dg/pack13_pkg.ads17
4 files changed, 65 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 5a072fc..8f0516d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2009-04-20 Eric Botcazou <ebotcazou@adacore.com>
+ * gnat.dg/pack13.ad[sb]: New test.
+ * gnat.dg/pack13_pkg.ads: New helper.
+
+2009-04-20 Eric Botcazou <ebotcazou@adacore.com>
+
* gnat.dg/discr11.ad[sb]: New test.
* gnat.dg/discr11_pkg.ads: New helper.
diff --git a/gcc/testsuite/gnat.dg/pack13.adb b/gcc/testsuite/gnat.dg/pack13.adb
new file mode 100644
index 0000000..dd9cb09
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/pack13.adb
@@ -0,0 +1,10 @@
+-- [ dg-do compile }
+
+package body Pack13 is
+
+ procedure Set (Myself : Object_Ptr; The_Data : Thirty_Two_Bits.Object) is
+ begin
+ Myself.Something.Data_1 := The_Data;
+ end;
+
+end Pack13;
diff --git a/gcc/testsuite/gnat.dg/pack13.ads b/gcc/testsuite/gnat.dg/pack13.ads
new file mode 100644
index 0000000..1836311
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/pack13.ads
@@ -0,0 +1,33 @@
+with Pack13_Pkg;
+
+package Pack13 is
+
+ package Four_Bits is new Pack13_Pkg (4);
+ package Thirty_Two_Bits is new Pack13_Pkg (32);
+
+ type Object is private;
+ type Object_Ptr is access all Object;
+
+ procedure Set (Myself : Object_Ptr; The_Data : Thirty_Two_Bits.Object);
+
+private
+
+ type Some_Record is record
+ Data_1 : Thirty_Two_Bits.Object;
+ Data_2 : Thirty_Two_Bits.Object;
+ Small_Data : Four_Bits.Object;
+ end record;
+ for Some_Record use record
+ Data_1 at 0 range 0 .. 31;
+ Data_2 at 4 range 0 .. 31;
+ Small_Data at 8 range 0 .. 3;
+ end record;
+
+ type Object is record
+ Something : Some_Record;
+ end record;
+ for Object use record
+ Something at 0 range 0 .. 67;
+ end record;
+
+end Pack13;
diff --git a/gcc/testsuite/gnat.dg/pack13_pkg.ads b/gcc/testsuite/gnat.dg/pack13_pkg.ads
new file mode 100644
index 0000000..afe8bec
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/pack13_pkg.ads
@@ -0,0 +1,17 @@
+generic
+
+ Size : Positive;
+
+package Pack13_Pkg is
+
+ type Object is private;
+
+private
+
+ type Bit is range 0 .. 1;
+ for Bit'size use 1;
+
+ type Object is array (1 .. Size) of Bit;
+ pragma Pack (Object);
+
+end Pack13_Pkg;