aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2009-10-17 10:39:11 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2009-10-17 10:39:11 +0000
commit9f4afcd44f9052bacea254f54f9ba6432fa3d6a2 (patch)
tree61f02d17f476344dc3fc67f638c91c91f0e45a24 /gcc
parent0046b1a727f73f0848733e28219069426b2dc218 (diff)
downloadgcc-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/ChangeLog4
-rw-r--r--gcc/ada/gcc-interface/trans.c4
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gnat.dg/unchecked_convert4.adb23
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;