Replace Byte pointer with a generic pointer type
This commit is contained in:
@ -138,22 +138,27 @@ namespace elna::gcc
|
||||
{
|
||||
tree pointer{ NULL_TREE };
|
||||
tree offset{ NULL_TREE };
|
||||
tree pointer_type{ NULL_TREE };
|
||||
|
||||
if (POINTER_TYPE_P(left_type) && is_integral_type(right_type))
|
||||
{
|
||||
pointer = left;
|
||||
offset = right;
|
||||
pointer_type = left_type;
|
||||
}
|
||||
else if (is_integral_type(left_type) && POINTER_TYPE_P(right_type))
|
||||
{
|
||||
pointer = right;
|
||||
offset = left;
|
||||
pointer_type = right_type;
|
||||
}
|
||||
else
|
||||
{
|
||||
return error_mark_node;
|
||||
}
|
||||
tree size_exp = fold_convert(TREE_TYPE(offset), size_in_bytes(TREE_TYPE(TREE_TYPE(pointer))));
|
||||
tree size_exp = pointer_type == elna_pointer_type_node
|
||||
? size_one_node
|
||||
: fold_convert(TREE_TYPE(offset), size_in_bytes(TREE_TYPE(TREE_TYPE(pointer))));
|
||||
|
||||
offset = fold_build2(MULT_EXPR, TREE_TYPE(offset), offset, size_exp);
|
||||
offset = fold_convert(sizetype, offset);
|
||||
|
Reference in New Issue
Block a user