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.

Reply via email to