@@ -75,15 +75,11 @@ bool cpp_typecheckt::standard_conversion_array_to_pointer(
7575
7676 index_exprt index (
7777 expr,
78- from_integer (0 , index_type ()),
79- expr.type ().subtype ());
78+ from_integer (0 , index_type ()));
8079
8180 index.set (ID_C_lvalue, true );
8281
83- pointer_typet pointer=
84- pointer_type (expr.type ().subtype ());
85-
86- new_expr=address_of_exprt (index, pointer);
82+ new_expr=address_of_exprt (index);
8783
8884 return true ;
8985}
@@ -98,14 +94,10 @@ bool cpp_typecheckt::standard_conversion_array_to_pointer(
9894bool cpp_typecheckt::standard_conversion_function_to_pointer (
9995 const exprt &expr, exprt &new_expr) const
10096{
101- const code_typet &func_type=to_code_type (expr.type ());
102-
10397 if (!expr.get_bool (ID_C_lvalue))
10498 return false ;
10599
106- pointer_typet pointer=pointer_type (func_type);
107-
108- new_expr=address_of_exprt (expr, pointer);
100+ new_expr=address_of_exprt (expr);
109101
110102 return true ;
111103}
@@ -886,7 +878,7 @@ bool cpp_typecheckt::user_defined_conversion_sequence(
886878
887879 if (subtype_typecast (from_struct, to_struct))
888880 {
889- exprt address=address_of_exprt (expr, pointer_type (expr. type ()) );
881+ exprt address=address_of_exprt (expr);
890882
891883 // simplify address
892884 if (expr.id ()==ID_dereference)
@@ -1016,9 +1008,7 @@ bool cpp_typecheckt::user_defined_conversion_sequence(
10161008 else if (from_struct.is_not_nil () && arg1_struct.is_not_nil ())
10171009 {
10181010 // try derived-to-base conversion
1019- exprt expr_pfrom=
1020- address_of_exprt (expr, pointer_type (expr.type ()));
1021-
1011+ address_of_exprt expr_pfrom (expr, pointer_type (expr.type ()));
10221012 pointer_typet pto=pointer_type (arg1_type);
10231013
10241014 exprt expr_ptmp;
@@ -1441,12 +1431,11 @@ bool cpp_typecheckt::reference_binding(
14411431 new_expr.swap (tmp);
14421432 }
14431433
1444- exprt tmp=
1445- address_of_exprt (new_expr, pointer_type (new_expr.type ()));
1434+ address_of_exprt tmp (new_expr, pointer_type (new_expr.type ()));
14461435 tmp.type ().set (ID_C_reference, true );
14471436 tmp.add_source_location ()=new_expr.source_location ();
14481437
1449- new_expr. swap ( tmp) ;
1438+ new_expr= tmp;
14501439 return true ;
14511440 }
14521441
@@ -1707,10 +1696,9 @@ bool cpp_typecheckt::const_typecast(
17071696 if (new_expr.type ()!=type.subtype ())
17081697 return false ;
17091698
1710- exprt address_of (ID_address_of, type);
1711- address_of.copy_to_operands (expr);
1699+ exprt address_of=address_of_exprt (expr, to_pointer_type (type));
17121700 add_implicit_dereference (address_of);
1713- new_expr. swap ( address_of) ;
1701+ new_expr= address_of;
17141702 return true ;
17151703 }
17161704 else if (type.id ()==ID_pointer)
@@ -1872,7 +1860,7 @@ bool cpp_typecheckt::reinterpret_typecast(
18721860
18731861 if (is_reference (type) && e.get_bool (ID_C_lvalue))
18741862 {
1875- exprt tmp=address_of_exprt (e, pointer_type (e. type ()) );
1863+ exprt tmp=address_of_exprt (e);
18761864 tmp.make_typecast (type);
18771865 new_expr.swap (tmp);
18781866 return true ;
@@ -1936,7 +1924,7 @@ bool cpp_typecheckt::static_typecast(
19361924 return true ;
19371925 }
19381926
1939- exprt address_of=address_of_exprt (e, pointer_type (e. type ()) );
1927+ exprt address_of=address_of_exprt (e);
19401928 make_ptr_typecast (address_of, type);
19411929 new_expr.swap (address_of);
19421930 return true ;
0 commit comments