From 73699d921d8734c351b9897f16a04453f6a47301 Mon Sep 17 00:00:00 2001 From: Iain Sandoe Date: Sat, 10 Oct 2020 11:14:47 +0100 Subject: [PATCH] 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. --- gcc/objc/objc-next-runtime-abi-02.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/gcc/objc/objc-next-runtime-abi-02.c b/gcc/objc/objc-next-runtime-abi-02.c index 60bf86ab8c9..b83c9a31dbf 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); -- 2.30.2