@@ -104,30 +104,28 @@ bool check_c_implicit_typecast(
104
104
105
105
if (src_type_id==ID_natural)
106
106
{
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
+ {
116
114
return false ;
115
+ }
117
116
}
118
117
else if (src_type_id==ID_integer)
119
118
{
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
+ {
130
127
return false ;
128
+ }
131
129
}
132
130
else if (src_type_id==ID_real)
133
131
{
@@ -141,49 +139,46 @@ bool check_c_implicit_typecast(
141
139
}
142
140
else if (src_type_id==ID_rational)
143
141
{
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
+ {
150
148
return false ;
149
+ }
151
150
}
152
151
else if (src_type_id==ID_bool)
153
152
{
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
+ {
165
162
return false ;
163
+ }
166
164
}
167
165
else if (src_type_id==ID_unsignedbv ||
168
166
src_type_id==ID_signedbv ||
169
167
src_type_id==ID_c_enum ||
170
168
src_type_id==ID_c_enum_tag ||
171
169
src_type_id==ID_c_bool)
172
170
{
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
+ {
186
180
return false ;
181
+ }
187
182
}
188
183
else if (src_type_id==ID_floatbv ||
189
184
src_type_id==ID_fixedbv)
@@ -417,6 +412,8 @@ c_typecastt::c_typet c_typecastt::get_c_type(
417
412
}
418
413
else if (type.id () == ID_integer)
419
414
return INTEGER;
415
+ else if (type.id () == ID_natural)
416
+ return NATURAL;
420
417
421
418
return OTHER;
422
419
}
@@ -456,6 +453,9 @@ void c_typecastt::implicit_typecast_arithmetic(
456
453
case RATIONAL: new_type=rational_typet (); break ;
457
454
case REAL: new_type=real_typet (); break ;
458
455
case INTEGER: new_type=integer_typet (); break ;
456
+ case NATURAL:
457
+ new_type = natural_typet ();
458
+ break ;
459
459
case COMPLEX:
460
460
case OTHER:
461
461
case VOIDPTR:
0 commit comments