* gcc-interface/trans.c (addressable_p): Handle bitwise operations.

From-SVN: r152932
This commit is contained in:
Eric Botcazou 2009-10-17 10:39:11 +00:00 committed by Eric Botcazou
parent 0046b1a727
commit 9f4afcd44f
4 changed files with 35 additions and 0 deletions

View File

@ -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...

View File

@ -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;

View File

@ -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

View File

@ -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;