diff options
author | Iain Buclaw <ibuclaw@gdcproject.org> | 2020-08-31 13:31:04 +0200 |
---|---|---|
committer | Iain Buclaw <ibuclaw@gdcproject.org> | 2020-08-31 15:53:44 +0200 |
commit | 6940c20bbb3b5864e8b510de162d1a618aecca88 (patch) | |
tree | 687831cd276e5ea6f4c438ddb455886d1cfbe0a7 /gcc/tree-vrp.c | |
parent | f089569851ca9c8a81400dd8a159f86636ed20ec (diff) | |
download | gcc-6940c20bbb3b5864e8b510de162d1a618aecca88.zip gcc-6940c20bbb3b5864e8b510de162d1a618aecca88.tar.gz gcc-6940c20bbb3b5864e8b510de162d1a618aecca88.tar.bz2 |
d: Fix ICEs in the front-end when pointer size is 16-bit.
In the lowering of `bt*' intrinsics, some integer constants had
mismatched types, and bitsize was set to the wrong value.
In base_vtable_offset, the base offset value was calculated incorrectly.
The TypeInfo_Class object is comprised of 18 pointers and 1 uint field,
so now the internal classinfo type size is used instead.
gcc/d/ChangeLog:
* d-target.cc (Target::_init): Don't set classinfosize.
* d-tree.h (base_vtable_offset): Move under typeinfo.cc section.
* decl.cc (base_vtable_offset): Move to...
* typeinfo.cc (base_vtable_offset): ...here. Get base offset from
internal TypeInfo_Class type.
* intrinsics.cc (expand_intrinsic_bt): Use pointer TYPE_SIZE for
setting bitsize value. Build integer constants of correct type.
Diffstat (limited to 'gcc/tree-vrp.c')
0 files changed, 0 insertions, 0 deletions