From 555b8cc39062d1e02ed9117883229c75e17a8871 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Wed, 24 Nov 2021 15:57:03 +0100 Subject: [PATCH] Introduce REG_SET_EMPTY_P This avoids a -Wunreachable-code diagnostic with EXECUTE_IF_* in case the first iteration will exit the loop. For the case in thread_jump using bitmap_empty_p looks preferable so this adds REG_SET_EMPTY_P to make that available for register sets. 2021-11-25 Richard Biener * regset.h (REG_SET_EMPTY_P): New macro. * cfgcleanup.c (thread_jump): Use REG_SET_EMPTY_P. --- gcc/cfgcleanup.c | 3 +-- gcc/regset.h | 3 +++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/gcc/cfgcleanup.c b/gcc/cfgcleanup.c index 82fc505ff502..67ae0597cee4 100644 --- a/gcc/cfgcleanup.c +++ b/gcc/cfgcleanup.c @@ -256,7 +256,6 @@ thread_jump (edge e, basic_block b) unsigned i; regset nonequal; bool failed = false; - reg_set_iterator rsi; /* Jump threading may cause fixup_partitions to introduce new crossing edges, which is not allowed after reload. */ @@ -379,7 +378,7 @@ thread_jump (edge e, basic_block b) goto failed_exit; } - EXECUTE_IF_SET_IN_REG_SET (nonequal, 0, i, rsi) + if (!REG_SET_EMPTY_P (nonequal)) goto failed_exit; BITMAP_FREE (nonequal); diff --git a/gcc/regset.h b/gcc/regset.h index aee6d6f974fb..997b4d2d8275 100644 --- a/gcc/regset.h +++ b/gcc/regset.h @@ -49,6 +49,9 @@ typedef bitmap regset; /* Clear a register set by freeing up the linked list. */ #define CLEAR_REG_SET(HEAD) bitmap_clear (HEAD) +/* True if the register set is empty. */ +#define REG_SET_EMPTY_P(HEAD) bitmap_empty_p (HEAD) + /* Copy a register set to another register set. */ #define COPY_REG_SET(TO, FROM) bitmap_copy (TO, FROM) -- 2.43.5