| ... | @@ -1228,12 +1228,22 @@ static AstNode *trans_implicit_cast_expr(Context *c, AstNode *block, ImplicitCas | ... | @@ -1228,12 +1228,22 @@ static AstNode *trans_implicit_cast_expr(Context *c, AstNode *block, ImplicitCas |
| 1228 | return nullptr; | 1228 | return nullptr; |
| 1229 | return target_node; | 1229 | return target_node; |
| 1230 | } | 1230 | } |
| | 1231 | case CK_BitCast: |
| | 1232 | { |
| | 1233 | AstNode *target_node = trans_expr(c, true, block, stmt->getSubExpr(), TransRValue); |
| | 1234 | if (target_node == nullptr) |
| | 1235 | return nullptr; |
| | 1236 | |
| | 1237 | AstNode *dest_type_node = trans_qual_type(c, stmt->getType(), stmt->getLocStart()); |
| | 1238 | |
| | 1239 | AstNode *node = trans_create_node_builtin_fn_call_str(c, "ptrCast"); |
| | 1240 | node->data.fn_call_expr.params.append(dest_type_node); |
| | 1241 | node->data.fn_call_expr.params.append(target_node); |
| | 1242 | return node; |
| | 1243 | } |
| 1231 | case CK_Dependent: | 1244 | case CK_Dependent: |
| 1232 | emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_Dependent"); | 1245 | emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_Dependent"); |
| 1233 | return nullptr; | 1246 | return nullptr; |
| 1234 | case CK_BitCast: | | |
| 1235 | emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_BitCast"); | | |
| 1236 | return nullptr; | | |
| 1237 | case CK_LValueBitCast: | 1247 | case CK_LValueBitCast: |
| 1238 | emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_LValueBitCast"); | 1248 | emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_LValueBitCast"); |
| 1239 | return nullptr; | 1249 | return nullptr; |