diff options
author | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2010-04-16 12:23:39 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2010-04-16 12:23:39 +0000 |
commit | 68a3eb69b12f7385ed0696ecf696a4ee47f61619 (patch) | |
tree | 7b49675ef041277b8a277a1353c08016c4479bc3 /gcc/ada/gcc-interface/trans.c | |
parent | 1139f2e89d9e5199b66b05caba688be566561f1f (diff) | |
download | gcc-68a3eb69b12f7385ed0696ecf696a4ee47f61619.zip gcc-68a3eb69b12f7385ed0696ecf696a4ee47f61619.tar.gz gcc-68a3eb69b12f7385ed0696ecf696a4ee47f61619.tar.bz2 |
trans.c (unchecked_conversion_nop): Handle function calls.
* gcc-interface/trans.c (unchecked_conversion_nop): Handle function
calls. Return true for conversion from a record subtype to its type.
From-SVN: r158412
Diffstat (limited to 'gcc/ada/gcc-interface/trans.c')
-rw-r--r-- | gcc/ada/gcc-interface/trans.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c index b446e07..e2a480d 100644 --- a/gcc/ada/gcc-interface/trans.c +++ b/gcc/ada/gcc-interface/trans.c @@ -3670,7 +3670,8 @@ unchecked_conversion_nop (Node_Id gnat_node) could de facto ensure type consistency and this should be preserved. */ if (!(Nkind (Parent (gnat_node)) == N_Assignment_Statement && Name (Parent (gnat_node)) == gnat_node) - && !(Nkind (Parent (gnat_node)) == N_Procedure_Call_Statement + && !((Nkind (Parent (gnat_node)) == N_Procedure_Call_Statement + || Nkind (Parent (gnat_node)) == N_Function_Call) && Name (Parent (gnat_node)) != gnat_node)) return false; @@ -3688,11 +3689,16 @@ unchecked_conversion_nop (Node_Id gnat_node) if (to_type == from_type) return true; - /* For an array type, the conversion to the PAT is a no-op. */ + /* For an array subtype, the conversion to the PAT is a no-op. */ if (Ekind (from_type) == E_Array_Subtype && to_type == Packed_Array_Type (from_type)) return true; + /* For a record subtype, the conversion to the type is a no-op. */ + if (Ekind (from_type) == E_Record_Subtype + && to_type == Etype (from_type)) + return true; + return false; } |