diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2009-04-20 19:30:55 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2009-04-20 19:30:55 +0000 |
commit | c2efda0dee082ae3f57bdb2c7b1ae2dbf07ddfcd (patch) | |
tree | 44ac2e6e61907d4bb321cf154de1771ed14678cf /gcc/testsuite | |
parent | a916d97fc0c647034e9330b00349ad8145bf3157 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gnat.dg/pack13.adb | 10 | ||||
-rw-r--r-- | gcc/testsuite/gnat.dg/pack13.ads | 33 | ||||
-rw-r--r-- | gcc/testsuite/gnat.dg/pack13_pkg.ads | 17 |
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; |