aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vrp.c
diff options
context:
space:
mode:
authorIain Buclaw <ibuclaw@gdcproject.org>2020-08-31 13:31:04 +0200
committerIain Buclaw <ibuclaw@gdcproject.org>2020-08-31 15:53:44 +0200
commit6940c20bbb3b5864e8b510de162d1a618aecca88 (patch)
tree687831cd276e5ea6f4c438ddb455886d1cfbe0a7 /gcc/tree-vrp.c
parentf089569851ca9c8a81400dd8a159f86636ed20ec (diff)
downloadgcc-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