diff options
author | Iain Sandoe <iain@sandoe.co.uk> | 2020-10-10 11:14:47 +0100 |
---|---|---|
committer | Iain Sandoe <iain@sandoe.co.uk> | 2020-10-11 17:19:57 +0100 |
commit | 73699d921d8734c351b9897f16a04453f6a47301 (patch) | |
tree | 57c525b5e20be4ff93036afad155a7deb7b7ef6f /gcc/objc | |
parent | 04103ecbaa59ccacc977256ae02e2f63dfd90258 (diff) | |
download | gcc-73699d921d8734c351b9897f16a04453f6a47301.zip gcc-73699d921d8734c351b9897f16a04453f6a47301.tar.gz gcc-73699d921d8734c351b9897f16a04453f6a47301.tar.bz2 |
Objective-C++ : Fix bitfield ivars.
This fixes a regression present from 8.x; It used to be OK
to test for a DECL_INITIAL value to flag that an ivar was a
bitfield (the initial value was the width). This still works
on C / Objective-C, but no longer on C++. Replace the test
with DECL_C_BIT_FIELD() which is set for both C and C++.
gcc/objc/ChangeLog:
* objc-next-runtime-abi-02.c (objc_v2_build_ivar_ref): Test
DECL_C_BIT_FIELD to detect that an ivar is a bitfield.
Diffstat (limited to 'gcc/objc')
-rw-r--r-- | gcc/objc/objc-next-runtime-abi-02.c | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/gcc/objc/objc-next-runtime-abi-02.c b/gcc/objc/objc-next-runtime-abi-02.c index 60bf86a..b83c9a3 100644 --- a/gcc/objc/objc-next-runtime-abi-02.c +++ b/gcc/objc/objc-next-runtime-abi-02.c @@ -1395,12 +1395,7 @@ objc_v2_build_ivar_ref (tree datum, tree component) return NULL_TREE; /* This routine only handles non-bitfield fields */ - /* DECL_INITIAL macro is set to width of bitfield and can be relied - on to check for bitfield ivars. Note that I cannot rely on - DECL_BIT_FIELD macro because it is only set when the whole struct - is seen (at finish_struct) and not when the ivar chain is - built. */ - if (DECL_INITIAL (field)) + if (DECL_C_BIT_FIELD (field)) return NULL_TREE; create_ivar_offset_name (var_offset_name, CLASS_NAME (class_name), field); |