https://gcc.gnu.org/g:2e331f9fa07f2fbbcf3707313809ced5a89e57a6
commit 2e331f9fa07f2fbbcf3707313809ced5a89e57a6 Author: Michael Meissner <[email protected]> Date: Mon Nov 3 18:05:53 2025 -0500 Add changes from future patch submission. 2025-11-03 Michael Meissner <[email protected]> gcc/ * config/rs6000/rs6000-builtin.cc (rs6000_init_builtins): Only initialize bfloat16_type_node only if it hasn't already been initialized. * config/rs6000/rs6000-modes.def (BFmode): Use ADJUST_FLOAT_FORMAT. Diff: --- gcc/config/rs6000/rs6000-builtin.cc | 14 +++++++++----- gcc/config/rs6000/rs6000-modes.def | 1 + 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/gcc/config/rs6000/rs6000-builtin.cc b/gcc/config/rs6000/rs6000-builtin.cc index 94a4441e8f9c..958b1392eee7 100644 --- a/gcc/config/rs6000/rs6000-builtin.cc +++ b/gcc/config/rs6000/rs6000-builtin.cc @@ -763,11 +763,15 @@ rs6000_init_builtins (void) /* __bfloat16 support. */ if (TARGET_BFLOAT16) { - bfloat16_type_node = make_node (REAL_TYPE); - TYPE_PRECISION (bfloat16_type_node) = 16; - SET_TYPE_MODE (bfloat16_type_node, BFmode); - layout_type (bfloat16_type_node); - t = build_qualified_type (bfloat16_type_node, TYPE_QUAL_CONST); + if (!bfloat16_type_node) + { + bfloat16_type_node = make_node (REAL_TYPE); + TYPE_PRECISION (bfloat16_type_node) = 16; + SET_TYPE_MODE (bfloat16_type_node, BFmode); + layout_type (bfloat16_type_node); + t = build_qualified_type (bfloat16_type_node, TYPE_QUAL_CONST); + } + lang_hooks.types.register_builtin_type (bfloat16_type_node, "__bfloat16"); } diff --git a/gcc/config/rs6000/rs6000-modes.def b/gcc/config/rs6000/rs6000-modes.def index f8b11b2c8576..916899e6b47e 100644 --- a/gcc/config/rs6000/rs6000-modes.def +++ b/gcc/config/rs6000/rs6000-modes.def @@ -50,6 +50,7 @@ FLOAT_MODE (HF, 2, ieee_half_format); /* Explicit bfloat16 floating point. */ FLOAT_MODE (BF, 2, arm_bfloat_half_format); +ADJUST_FLOAT_FORMAT (BF, &arm_bfloat_half_format); /* Add any extra modes needed to represent the condition code.
