@@ -104,30 +104,28 @@ bool check_c_implicit_typecast(
104104
105105 if (src_type_id==ID_natural)
106106 {
107- if (dest_type.id ()==ID_bool ||
108- dest_type.id ()==ID_c_bool ||
109- dest_type.id ()==ID_integer ||
110- dest_type.id ()==ID_real ||
111- dest_type.id ()==ID_complex ||
112- dest_type.id ()==ID_unsignedbv ||
113- dest_type.id ()==ID_signedbv ||
114- dest_type.id ()==ID_floatbv ||
115- dest_type.id ()==ID_complex)
107+ if (
108+ dest_type.id () == ID_bool || dest_type.id () == ID_c_bool ||
109+ dest_type.id () == ID_integer || dest_type.id () == ID_rational ||
110+ dest_type.id () == ID_real || dest_type.id () == ID_complex ||
111+ dest_type.id () == ID_unsignedbv || dest_type.id () == ID_signedbv ||
112+ dest_type.id () == ID_floatbv || dest_type.id () == ID_complex)
113+ {
116114 return false ;
115+ }
117116 }
118117 else if (src_type_id==ID_integer)
119118 {
120- if (dest_type.id ()==ID_bool ||
121- dest_type.id ()==ID_c_bool ||
122- dest_type.id ()==ID_real ||
123- dest_type.id ()==ID_complex ||
124- dest_type.id ()==ID_unsignedbv ||
125- dest_type.id ()==ID_signedbv ||
126- dest_type.id ()==ID_floatbv ||
127- dest_type.id ()==ID_fixedbv ||
128- dest_type.id ()==ID_pointer ||
129- dest_type.id ()==ID_complex)
119+ if (
120+ dest_type.id () == ID_bool || dest_type.id () == ID_c_bool ||
121+ dest_type.id () == ID_natural || dest_type.id () == ID_rational ||
122+ dest_type.id () == ID_real || dest_type.id () == ID_complex ||
123+ dest_type.id () == ID_unsignedbv || dest_type.id () == ID_signedbv ||
124+ dest_type.id () == ID_floatbv || dest_type.id () == ID_fixedbv ||
125+ dest_type.id () == ID_pointer || dest_type.id () == ID_complex)
126+ {
130127 return false ;
128+ }
131129 }
132130 else if (src_type_id==ID_real)
133131 {
@@ -141,49 +139,46 @@ bool check_c_implicit_typecast(
141139 }
142140 else if (src_type_id==ID_rational)
143141 {
144- if (dest_type. id ()==ID_bool ||
145- dest_type.id ()== ID_c_bool ||
146- dest_type.id ()== ID_complex ||
147- dest_type.id ()== ID_floatbv ||
148- dest_type.id ()==ID_fixedbv ||
149- dest_type. id ()==ID_complex)
142+ if (
143+ dest_type. id () == ID_bool || dest_type.id () == ID_c_bool ||
144+ dest_type. id () == ID_real || dest_type.id () == ID_complex ||
145+ dest_type.id () == ID_floatbv || dest_type. id () == ID_fixedbv ||
146+ dest_type.id () == ID_complex)
147+ {
150148 return false ;
149+ }
151150 }
152151 else if (src_type_id==ID_bool)
153152 {
154- if (dest_type.id ()==ID_c_bool ||
155- dest_type.id ()==ID_integer ||
156- dest_type.id ()==ID_real ||
157- dest_type.id ()==ID_unsignedbv ||
158- dest_type.id ()==ID_signedbv ||
159- dest_type.id ()==ID_pointer ||
160- dest_type.id ()==ID_floatbv ||
161- dest_type.id ()==ID_fixedbv ||
162- dest_type.id ()==ID_c_enum ||
163- dest_type.id ()==ID_c_enum_tag ||
164- dest_type.id ()==ID_complex)
153+ if (
154+ dest_type.id () == ID_c_bool || dest_type.id () == ID_integer ||
155+ dest_type.id () == ID_natural || dest_type.id () == ID_rational ||
156+ dest_type.id () == ID_real || dest_type.id () == ID_unsignedbv ||
157+ dest_type.id () == ID_signedbv || dest_type.id () == ID_pointer ||
158+ dest_type.id () == ID_floatbv || dest_type.id () == ID_fixedbv ||
159+ dest_type.id () == ID_c_enum || dest_type.id () == ID_c_enum_tag ||
160+ dest_type.id () == ID_complex)
161+ {
165162 return false ;
163+ }
166164 }
167165 else if (src_type_id==ID_unsignedbv ||
168166 src_type_id==ID_signedbv ||
169167 src_type_id==ID_c_enum ||
170168 src_type_id==ID_c_enum_tag ||
171169 src_type_id==ID_c_bool)
172170 {
173- if (dest_type.id ()==ID_unsignedbv ||
174- dest_type.id ()==ID_bool ||
175- dest_type.id ()==ID_c_bool ||
176- dest_type.id ()==ID_integer ||
177- dest_type.id ()==ID_real ||
178- dest_type.id ()==ID_rational ||
179- dest_type.id ()==ID_signedbv ||
180- dest_type.id ()==ID_floatbv ||
181- dest_type.id ()==ID_fixedbv ||
182- dest_type.id ()==ID_pointer ||
183- dest_type.id ()==ID_c_enum ||
184- dest_type.id ()==ID_c_enum_tag ||
185- dest_type.id ()==ID_complex)
171+ if (
172+ dest_type.id () == ID_unsignedbv || dest_type.id () == ID_bool ||
173+ dest_type.id () == ID_c_bool || dest_type.id () == ID_integer ||
174+ dest_type.id () == ID_natural || dest_type.id () == ID_rational ||
175+ dest_type.id () == ID_real || dest_type.id () == ID_signedbv ||
176+ dest_type.id () == ID_floatbv || dest_type.id () == ID_fixedbv ||
177+ dest_type.id () == ID_pointer || dest_type.id () == ID_c_enum ||
178+ dest_type.id () == ID_c_enum_tag || dest_type.id () == ID_complex)
179+ {
186180 return false ;
181+ }
187182 }
188183 else if (src_type_id==ID_floatbv ||
189184 src_type_id==ID_fixedbv)
@@ -417,6 +412,8 @@ c_typecastt::c_typet c_typecastt::get_c_type(
417412 }
418413 else if (type.id () == ID_integer)
419414 return INTEGER;
415+ else if (type.id () == ID_natural)
416+ return NATURAL;
420417
421418 return OTHER;
422419}
@@ -456,6 +453,9 @@ void c_typecastt::implicit_typecast_arithmetic(
456453 case RATIONAL: new_type=rational_typet (); break ;
457454 case REAL: new_type=real_typet (); break ;
458455 case INTEGER: new_type=integer_typet (); break ;
456+ case NATURAL:
457+ new_type = natural_typet ();
458+ break ;
459459 case COMPLEX:
460460 case OTHER:
461461 case VOIDPTR:
0 commit comments