&& TREE_CODE (TREE_TYPE (s)) == BITINT_TYPE
&& bitint_precision_kind (TREE_TYPE (s)) >= bitint_prec_large)
{
- int part = var_to_partition (m_map, s);
- gcc_assert (m_vars[part] != NULL_TREE);
- TREE_VALUE (t) = m_vars[part];
+ if (SSA_NAME_IS_DEFAULT_DEF (s)
+ && (!SSA_NAME_VAR (s) || VAR_P (SSA_NAME_VAR (s))))
+ {
+ TREE_VALUE (t) = create_tmp_var (TREE_TYPE (s), "bitint");
+ mark_addressable (TREE_VALUE (t));
+ }
+ else
+ {
+ int part = var_to_partition (m_map, s);
+ gcc_assert (m_vars[part] != NULL_TREE);
+ TREE_VALUE (t) = m_vars[part];
+ }
}
}
update_stmt (stmt);
--- /dev/null
+/* PR middle-end/113699 */
+/* { dg-do compile { target bitint } } */
+/* { dg-options "-O2 -std=c23" } */
+
+void
+foo (void)
+{
+#if __BITINT_MAXWIDTH__ >= 129
+ _BitInt(129) i;
+ __asm__ ("" : : "rm" (i));
+#endif
+}