From: ebotcazou Date: Sat, 17 Oct 2009 10:39:11 +0000 (+0000) Subject: * gcc-interface/trans.c (addressable_p): Handle bitwise operations. X-Git-Tag: upstream/4.9.2~33104 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=73c0992d382377131b98c97ab210b5ee1e4e3f01;p=platform%2Fupstream%2Flinaro-gcc.git * gcc-interface/trans.c (addressable_p): Handle bitwise operations. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@152932 138bc75d-0d04-0410-961f-82ee72b054a4 --- 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 + + * gcc-interface/trans.c (addressable_p): Handle bitwise operations. + 2009-10-16 Eric Botcazou * 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 + + * gnat.dg/unchecked_convert4.adb: New test. + 2009-10-15 Jason Merrill 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;