diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2009-10-17 10:39:11 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2009-10-17 10:39:11 +0000 |
commit | 9f4afcd44f9052bacea254f54f9ba6432fa3d6a2 (patch) | |
tree | 61f02d17f476344dc3fc67f638c91c91f0e45a24 /gcc | |
parent | 0046b1a727f73f0848733e28219069426b2dc218 (diff) | |
download | gcc-9f4afcd44f9052bacea254f54f9ba6432fa3d6a2.zip gcc-9f4afcd44f9052bacea254f54f9ba6432fa3d6a2.tar.gz gcc-9f4afcd44f9052bacea254f54f9ba6432fa3d6a2.tar.bz2 |
* gcc-interface/trans.c (addressable_p): Handle bitwise operations.
From-SVN: r152932
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/ada/gcc-interface/trans.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gnat.dg/unchecked_convert4.adb | 23 |
4 files changed, 35 insertions, 0 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 219193f..d74fcce 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,7 @@ +2009-10-17 Eric Botcazou <ebotcazou@adacore.com> + + * gcc-interface/trans.c (addressable_p): Handle bitwise operations. + 2009-10-16 Eric Botcazou <ebotcazou@adacore.com> * gcc-interface/ada-tree.h (TYPE_FAT_POINTER_P): Swap with... diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c index ffcc72a..271581a 100644 --- a/gcc/ada/gcc-interface/trans.c +++ b/gcc/ada/gcc-interface/trans.c @@ -6949,6 +6949,10 @@ addressable_p (tree gnu_expr, tree gnu_type) case CALL_EXPR: case PLUS_EXPR: case MINUS_EXPR: + case BIT_IOR_EXPR: + case BIT_XOR_EXPR: + case BIT_AND_EXPR: + case BIT_NOT_EXPR: /* All rvalues are deemed addressable since taking their address will force a temporary to be created by the middle-end. */ return true; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8970e1c..217c0d7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2009-10-17 Eric Botcazou <ebotcazou@adacore.com> + + * gnat.dg/unchecked_convert4.adb: New test. + 2009-10-15 Jason Merrill <jason@redhat.com> PR c++/38798 diff --git a/gcc/testsuite/gnat.dg/unchecked_convert4.adb b/gcc/testsuite/gnat.dg/unchecked_convert4.adb new file mode 100644 index 0000000..4f766ae --- /dev/null +++ b/gcc/testsuite/gnat.dg/unchecked_convert4.adb @@ -0,0 +1,23 @@ +-- { dg-do compile } + +with Unchecked_Conversion; + +procedure Unchecked_Convert4 is + + type Uint32 is mod 2**32; + + type Rec is record + I : Uint32; + end record; + pragma Atomic (Rec); + + function Conv is new Unchecked_Conversion (Uint32, Rec); + + function F return Uint32; + pragma Import (Ada, F); + + procedure Proc (R : Rec) is begin null; end; + +begin + Proc (Conv (F or 1)); +end; |