poke-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] Fix -Wreturn-type warnings on -DNDEBUG


From: Jose E. Marchesi
Subject: Re: [PATCH] Fix -Wreturn-type warnings on -DNDEBUG
Date: Sun, 12 Feb 2023 18:42:56 +0100
User-agent: Gnus/5.13 (Gnus v5.13)

Hi Arsen.

Thanks for the patch.
OK for both master and maint/poke-3.


> * common/pk-utils.h (PK_UNREACHABLE): New macro.  Diagnoses
> reaching unreachable code and aborts.
> * libpoke/ios.c: Use PK_UNREACHABLE.
> * libpoke/libpoke.c: Ditto.
> * libpoke/pkl-anal.c: Ditto.
> * libpoke/pkl-asm.c: Ditto.
> * libpoke/pkl-ast.c: Ditto.
> * libpoke/pkl-diag.c: Ditto.
> * libpoke/pkl-env.c: Ditto.
> * libpoke/pkl-fold.c: Ditto.
> * libpoke/pkl-gen.c: Ditto.
> * libpoke/pkl-lex.l: Ditto.
> * libpoke/pkl-parser.c: Ditto.
> * libpoke/pkl-pass.c: Ditto.
> * libpoke/pkl-promo.c: Ditto.
> * libpoke/pkl-tab.y: Ditto.
> * libpoke/pkl-trans.c: Ditto.
> * libpoke/pkl-typify.c: Ditto.
> * libpoke/pkl.c: Ditto.
> * libpoke/pvm-val.c: Ditto.
> * poke/pk-cmd-help.c: Ditto.
> * poke/pk-cmd-set.c: Ditto.
> * poke/pk-cmd-vm.c: Ditto.
> * poke/pk-cmd.c: Ditto.
> * poke/pk-ios.c: Ditto.
> * poke/pk-map-tab.y: Ditto.
> * poke/poke.c: Ditto.
> ---
> As discussed on IRC.
>
> Ready for dev/maint?  Builds w/o (relevant) warnings with gcc (Gentoo
> Hardened 13.0.1_pre20230205-r1 p7) 13.0.1 20230205 (experimental) with
> -Wall -DNDEBUG {,-O3}.
>
>  ChangeLog            | 30 ++++++++++++++++++++++++++++++
>  common/pk-utils.h    | 10 ++++++++++
>  libpoke/ios.c        |  6 +++---
>  libpoke/libpoke.c    | 13 +++++++------
>  libpoke/pkl-anal.c   |  2 +-
>  libpoke/pkl-asm.c    | 40 ++++++++++++++++++++--------------------
>  libpoke/pkl-ast.c    | 12 ++++++------
>  libpoke/pkl-diag.c   |  3 ++-
>  libpoke/pkl-env.c    |  4 ++--
>  libpoke/pkl-fold.c   |  2 +-
>  libpoke/pkl-gen.c    | 38 +++++++++++++++++++-------------------
>  libpoke/pkl-lex.l    |  3 ++-
>  libpoke/pkl-parser.c |  3 ++-
>  libpoke/pkl-pass.c   | 11 ++++++-----
>  libpoke/pkl-promo.c  |  8 ++++----
>  libpoke/pkl-tab.y    |  6 +++---
>  libpoke/pkl-trans.c  |  2 +-
>  libpoke/pkl-typify.c |  2 +-
>  libpoke/pkl.c        |  4 ++--
>  libpoke/pvm-val.c    | 14 +++++++-------
>  poke/pk-cmd-help.c   |  2 +-
>  poke/pk-cmd-set.c    |  8 ++++----
>  poke/pk-cmd-vm.c     |  3 ++-
>  poke/pk-cmd.c        |  2 +-
>  poke/pk-ios.c        |  3 ++-
>  poke/pk-map-tab.y    |  2 +-
>  poke/poke.c          |  2 +-
>  27 files changed, 141 insertions(+), 94 deletions(-)
>
> diff --git a/ChangeLog b/ChangeLog
> index 181a1a17..897e3dc5 100644
> --- a/ChangeLog
> +++ b/ChangeLog
> @@ -1,3 +1,33 @@
> +2023-02-12  Arsen Arsenović  <arsen@aarsen.me>
> +
> +     * common/pk-utils.h (PK_UNREACHABLE): New macro.  Diagnoses
> +     reaching unreachable code and aborts.
> +     * libpoke/ios.c: Use PK_UNREACHABLE.
> +     * libpoke/libpoke.c: Ditto.
> +     * libpoke/pkl-anal.c: Ditto.
> +     * libpoke/pkl-asm.c: Ditto.
> +     * libpoke/pkl-ast.c: Ditto.
> +     * libpoke/pkl-diag.c: Ditto.
> +     * libpoke/pkl-env.c: Ditto.
> +     * libpoke/pkl-fold.c: Ditto.
> +     * libpoke/pkl-gen.c: Ditto.
> +     * libpoke/pkl-lex.l: Ditto.
> +     * libpoke/pkl-parser.c: Ditto.
> +     * libpoke/pkl-pass.c: Ditto.
> +     * libpoke/pkl-promo.c: Ditto.
> +     * libpoke/pkl-tab.y: Ditto.
> +     * libpoke/pkl-trans.c: Ditto.
> +     * libpoke/pkl-typify.c: Ditto.
> +     * libpoke/pkl.c: Ditto.
> +     * libpoke/pvm-val.c: Ditto.
> +     * poke/pk-cmd-help.c: Ditto.
> +     * poke/pk-cmd-set.c: Ditto.
> +     * poke/pk-cmd-vm.c: Ditto.
> +     * poke/pk-cmd.c: Ditto.
> +     * poke/pk-ios.c: Ditto.
> +     * poke/pk-map-tab.y: Ditto.
> +     * poke/poke.c: Ditto.
> +
>  2023-01-31  Jose E. Marchesi  <jemarch@gnu.org>
>  
>       * libpoke/std.pk (Pk_Version): Add control fields.
> diff --git a/common/pk-utils.h b/common/pk-utils.h
> index b545a072..812300bc 100644
> --- a/common/pk-utils.h
> +++ b/common/pk-utils.h
> @@ -23,6 +23,7 @@
>  
>  #include <string.h>
>  #include <stdint.h>
> +#include <stdlib.h>
>  
>  /* Macros to avoid using strcmp directly.  */
>  
> @@ -64,4 +65,13 @@ char *pk_str_replace (const char *in, const char *search, 
> const char *replace);
>  /* Left and rigth trim the given string from whitespaces.  */
>  void pk_str_trim (char **str);
>  
> +/* Diagnoses reaching unreachable code, and aborts.  */
> +#define PK_UNREACHABLE() \
> +  do                                                    \
> +    {                                                   \
> +      assert (0 && "Reached unreachable code.");        \
> +      abort ();                                         \
> +    }                                                   \
> +  while (0)
> +
>  #endif /* ! PK_UTILS_H */
> diff --git a/libpoke/ios.c b/libpoke/ios.c
> index b47a2b85..93da34c5 100644
> --- a/libpoke/ios.c
> +++ b/libpoke/ios.c
> @@ -726,7 +726,7 @@ ios_read_int_common (ios io, ios_off offset, int flags,
>      return IOS_OK;
>  
>    default:
> -    assert (0);
> +    PK_UNREACHABLE ();
>    }
>  }
>  
> @@ -1194,7 +1194,7 @@ ios_write_int_fast (ios io, ios_off offset, int flags,
>        break;
>  
>      default:
> -      assert (0);
> +      PK_UNREACHABLE ();
>        break;
>      }
>  
> @@ -1508,7 +1508,7 @@ ios_write_int_common (ios io, ios_off offset, int flags,
>      return IOS_OK;
>  
>    default:
> -    assert (0);
> +    PK_UNREACHABLE ();
>    }
>  }
>  
> diff --git a/libpoke/libpoke.c b/libpoke/libpoke.c
> index d03acc8e..43434942 100644
> --- a/libpoke/libpoke.c
> +++ b/libpoke/libpoke.c
> @@ -22,6 +22,7 @@
>  #include <stdlib.h>
>  #include <assert.h>
>  
> +#include "pk-utils.h"
>  #include "pkt.h"
>  #include "pkl.h"
>  #include "pkl-ast.h" /* XXX */
> @@ -966,7 +967,7 @@ pk_omode (pk_compiler pkc)
>      case PVM_PRINT_FLAT: omode = PK_PRINT_FLAT; break;
>      case PVM_PRINT_TREE: omode = PK_PRINT_TREE; break;
>      default:
> -      assert (0);
> +      PK_UNREACHABLE ();
>      }
>    pkc->status = PK_OK;
>    return omode;
> @@ -982,7 +983,7 @@ pk_set_omode (pk_compiler pkc, enum pk_omode omode)
>      case PK_PRINT_FLAT: mode = PVM_PRINT_FLAT; break;
>      case PK_PRINT_TREE: mode = PVM_PRINT_TREE; break;
>      default:
> -      assert (0);
> +      PK_UNREACHABLE ();
>      }
>    pvm_set_omode (pkc->vm, mode);
>    pkc->status = PK_OK;
> @@ -1012,7 +1013,7 @@ pk_endian (pk_compiler pkc)
>      case IOS_ENDIAN_LSB: endian = PK_ENDIAN_LSB; break;
>      case IOS_ENDIAN_MSB: endian = PK_ENDIAN_MSB; break;
>      default:
> -      assert (0);
> +      PK_UNREACHABLE ();
>      }
>    pkc->status = PK_OK;
>    return endian;
> @@ -1028,7 +1029,7 @@ pk_set_endian (pk_compiler pkc, enum pk_endian endian)
>      case PK_ENDIAN_LSB: ios_endian = IOS_ENDIAN_LSB; break;
>      case PK_ENDIAN_MSB: ios_endian = IOS_ENDIAN_MSB; break;
>      default:
> -      assert (0);
> +      PK_UNREACHABLE ();
>      }
>    pvm_set_endian (pkc->vm, ios_endian);
>    pkc->status = PK_OK;
> @@ -1044,7 +1045,7 @@ pk_nenc (pk_compiler pkc)
>      case IOS_NENC_1: nenc = PK_NENC_1; break;
>      case IOS_NENC_2: nenc = PK_NENC_2; break;
>      default:
> -      assert (0);
> +      PK_UNREACHABLE ();
>      }
>    pkc->status = PK_OK;
>    return nenc;
> @@ -1060,7 +1061,7 @@ pk_set_nenc (pk_compiler pkc, enum pk_nenc nenc)
>      case PK_NENC_1: ios_nenc = IOS_NENC_1; break;
>      case PK_NENC_2: ios_nenc = IOS_NENC_2; break;
>      default:
> -      assert (0);
> +      PK_UNREACHABLE ();
>      }
>    pvm_set_nenc (pkc->vm, ios_nenc);
>    pkc->status = PK_OK;
> diff --git a/libpoke/pkl-anal.c b/libpoke/pkl-anal.c
> index 09d31b99..1e54e8a2 100644
> --- a/libpoke/pkl-anal.c
> +++ b/libpoke/pkl-anal.c
> @@ -697,7 +697,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_anal1_ps_cons)
>          break;
>        }
>      default:
> -      assert (0);
> +      PK_UNREACHABLE ();
>      }
>  }
>  PKL_PHASE_END_HANDLER
> diff --git a/libpoke/pkl-asm.c b/libpoke/pkl-asm.c
> index f09050e7..b855cbf6 100644
> --- a/libpoke/pkl-asm.c
> +++ b/libpoke/pkl-asm.c
> @@ -258,7 +258,7 @@ pkl_asm_insn_atoa (pkl_asm pasm,
>            RAS_MACRO_ARRAY_CONV_SIZ (bounder);
>            break;
>          default:
> -        assert (0);
> +        PK_UNREACHABLE ();
>          }
>      }
>  }
> @@ -414,7 +414,7 @@ pkl_asm_insn_peek (pkl_asm pasm, pkl_ast_node type,
>                        (unsigned int) size);
>      }
>    else
> -    assert (0);
> +    PK_UNREACHABLE ();
>  }
>  
>  /* Macro-instruction: PEEKD type
> @@ -445,7 +445,7 @@ pkl_asm_insn_peekd (pkl_asm pasm, pkl_ast_node type)
>                      (unsigned int) size);
>      }
>    else
> -    assert (0);
> +    PK_UNREACHABLE ();
>  }
>  
>  /* Macro-instruction: REV depth
> @@ -491,7 +491,7 @@ pkl_asm_insn_format (pkl_asm pasm, pkl_ast_node type)
>                      (unsigned int) size);
>      }
>    else
> -    assert (0);
> +    PK_UNREACHABLE ();
>  }
>  
>  /* Macro-instruction: PRINT type
> @@ -510,7 +510,7 @@ pkl_asm_insn_print (pkl_asm pasm, pkl_ast_node type)
>      }
>    else if (type_code == PKL_TYPE_ANY)
>      {
> -      assert (0);
> +      PK_UNREACHABLE ();
>      }
>    else if (type_code == PKL_TYPE_INTEGRAL)
>      {
> @@ -529,7 +529,7 @@ pkl_asm_insn_print (pkl_asm pasm, pkl_ast_node type)
>                      (unsigned int) size);
>      }
>    else
> -    assert (0);
> +    PK_UNREACHABLE ();
>  }
>  
>  /* Macro-instruction: POKE type, endian, nenc
> @@ -567,7 +567,7 @@ pkl_asm_insn_poke (pkl_asm pasm, pkl_ast_node type,
>                        (unsigned int) size);
>      }
>    else
> -    assert (0);
> +    PK_UNREACHABLE ();
>  }
>  
>  
> @@ -599,7 +599,7 @@ pkl_asm_insn_poked (pkl_asm pasm, pkl_ast_node type)
>                      (unsigned int) size);
>      }
>    else
> -    assert (0);
> +    PK_UNREACHABLE ();
>  }
>  
>  /* Macro-instruction: NEG type
> @@ -739,7 +739,7 @@ pkl_asm_insn_binop (pkl_asm pasm,
>            pkl_asm_insn (pasm, pow_table[tl][signed_p]);
>            break;
>          default:
> -          assert (0);
> +          PK_UNREACHABLE ();
>          }
>      }
>    else if (PKL_AST_TYPE_CODE (type) == PKL_TYPE_OFFSET)
> @@ -792,7 +792,7 @@ pkl_asm_insn_binop (pkl_asm pasm,
>          }
>      }
>    else
> -    assert (0);
> +    PK_UNREACHABLE ();
>  }
>  
>  /*
> @@ -866,7 +866,7 @@ pkl_asm_insn_cmp (pkl_asm pasm,
>          case PKL_INSN_GE: oinsn = PKL_INSN_GES; break;
>          case PKL_INSN_LE: oinsn = PKL_INSN_LES; break;
>          default:
> -          assert (0);
> +          PK_UNREACHABLE ();
>          }
>  
>        /* Assembly the instruction.  */
> @@ -904,7 +904,7 @@ pkl_asm_insn_cmp (pkl_asm pasm,
>          case PKL_INSN_GE: oinsn = ge_table[tl][signed_p]; break;
>          case PKL_INSN_LE: oinsn = le_table[tl][signed_p]; break;
>          default:
> -          assert (0);
> +          PK_UNREACHABLE ();
>            break;
>          }
>  
> @@ -962,10 +962,10 @@ pkl_asm_insn_cmp (pkl_asm pasm,
>        else if (insn == PKL_INSN_NE)
>          pkl_asm_insn (pasm, PKL_INSN_NEC);
>        else
> -        assert (0);
> +        PK_UNREACHABLE ();
>      }
>    else
> -    assert (0);
> +    PK_UNREACHABLE ();
>  }
>  
>  /* Macro-instruction: ASETC array_type
> @@ -1358,7 +1358,7 @@ pkl_asm_insn (pkl_asm pasm, enum pkl_asm_insn insn, ...)
>                     have hacks to prevent the assert below in both
>                     pkl_asm_note and the push instructions.  */
>  #if defined POKE_HOST_32BIT
> -                assert (0);
> +                PK_UNREACHABLE ();
>  #endif
>                  pvm_program_append_val_parameter (pasm->program, val);
>                  break;
> @@ -1385,7 +1385,7 @@ pkl_asm_insn (pkl_asm pasm, enum pkl_asm_insn insn, ...)
>              case 'a':
>                /* Fallthrough.  */
>              case 'i':
> -              assert (0);
> +              PK_UNREACHABLE ();
>                break;
>              }
>          }
> @@ -1649,7 +1649,7 @@ pkl_asm_insn (pkl_asm pasm, enum pkl_asm_insn insn, ...)
>              else if (insn == PKL_INSN_MODO)
>                pkl_asm_insn_modo (pasm, base_type, unit);
>              else
> -              assert (0);
> +              PK_UNREACHABLE ();
>              break;
>            }
>          case PKL_INSN_REMAP:
> @@ -1691,7 +1691,7 @@ pkl_asm_insn (pkl_asm pasm, enum pkl_asm_insn insn, ...)
>            }
>          case PKL_INSN_MACRO:
>          default:
> -          assert (0);
> +          PK_UNREACHABLE ();
>          }
>      }
>  }
> @@ -2184,7 +2184,7 @@ pkl_asm_break_label_1 (struct pkl_asm_level *level)
>      }
>  
>    /* The compiler must guarantee this does NOT happen.  */
> -  assert (0);
> +  PK_UNREACHABLE ();
>  }
>  
>  pvm_program_label
> @@ -2210,7 +2210,7 @@ pkl_asm_continue_label_1 (struct pkl_asm_level *level)
>      }
>  
>    /* The compiler must guarantee this does NOT happen.  */
> -  assert (0);
> +  PK_UNREACHABLE ();
>  }
>  
>  pvm_program_label
> diff --git a/libpoke/pkl-ast.c b/libpoke/pkl-ast.c
> index e93eb6cd..99d7473d 100644
> --- a/libpoke/pkl-ast.c
> +++ b/libpoke/pkl-ast.c
> @@ -1092,7 +1092,7 @@ pkl_ast_sizeof_type (pkl_ast ast, pkl_ast_node type)
>                                            * PKL_AST_INTEGER_VALUE (unit));
>            }
>          else
> -          assert (0);
> +          PK_UNREACHABLE ();
>          PKL_AST_TYPE (res) = ASTREF (res_type);
>          break;
>        }
> @@ -1199,7 +1199,7 @@ pkl_ast_sizeof_type (pkl_ast ast, pkl_ast_node type)
>        break;
>      case PKL_TYPE_STRING:
>      default:
> -      assert (0);
> +      PK_UNREACHABLE ();
>        break;
>      }
>  
> @@ -1226,7 +1226,7 @@ pkl_ast_sizeof_integral_type (pkl_ast_node type)
>        return PKL_AST_TYPE_I_SIZE (itype);
>      }
>    else
> -    assert (0);
> +    PK_UNREACHABLE ();
>  }
>  
>  /* Return 1 if the given TYPE can be mapped in IO.  0 otherwise.  */
> @@ -1524,14 +1524,14 @@ pkl_type_append_to (pkl_ast_node type, int 
> use_given_name,
>          else if (PKL_AST_CODE (unit) == PKL_AST_INTEGER)
>            sb_appendf (buffer, "%" PRIu64, PKL_AST_INTEGER_VALUE (unit));
>          else
> -          assert (0);
> +          PK_UNREACHABLE ();
>  
>          sb_append (buffer, ">");
>          break;
>        }
>      case PKL_TYPE_NOTYPE:
>      default:
> -      assert (0);
> +      PK_UNREACHABLE ();
>        break;
>      }
>  }
> @@ -2712,7 +2712,7 @@ pkl_ast_node_free_1 (gl_set_t visitations, pkl_ast_node 
> ast)
>        break;
>  
>      default:
> -      assert (0);
> +      PK_UNREACHABLE ();
>      }
>  
>    PKL_AST_NODE_FREE (PKL_AST_TYPE (ast));
> diff --git a/libpoke/pkl-diag.c b/libpoke/pkl-diag.c
> index 6f7e7c4b..f5dbf30f 100644
> --- a/libpoke/pkl-diag.c
> +++ b/libpoke/pkl-diag.c
> @@ -24,6 +24,7 @@
>  #include "tmpdir.h"
>  #include "tempname.h"
>  
> +#include "pk-utils.h"
>  #include "pkt.h"
>  #include "pkl.h"
>  #include "pkl-diag.h"
> @@ -135,7 +136,7 @@ pkl_detailed_location (pkl_ast ast, pkl_ast_loc loc,
>          }
>      }
>    else
> -    assert (0);
> +    PK_UNREACHABLE ();
>  
>    pk_puts ("\n");
>  
> diff --git a/libpoke/pkl-env.c b/libpoke/pkl-env.c
> index e97f9a4e..a9d664d8 100644
> --- a/libpoke/pkl-env.c
> +++ b/libpoke/pkl-env.c
> @@ -174,7 +174,7 @@ get_ns_table (pkl_env env, int namespace)
>        table = &env->units_hash_table;
>        break;
>      default:
> -      assert (0);
> +      PK_UNREACHABLE ();
>      }
>  
>    return table;
> @@ -245,7 +245,7 @@ pkl_env_register (pkl_env env,
>            PKL_AST_DECL_ORDER (decl) = env->num_units++;
>            break;
>          default:
> -          assert (0);
> +          PK_UNREACHABLE ();
>          }
>        return 1;
>      }
> diff --git a/libpoke/pkl-fold.c b/libpoke/pkl-fold.c
> index f2ea7bc2..74f9dbd1 100644
> --- a/libpoke/pkl-fold.c
> +++ b/libpoke/pkl-fold.c
> @@ -134,7 +134,7 @@ EMUL_UUU (ge) { return op1 >= op2; }
>  EMUL_III (ge) { return op1 >= op2; }
>  
>  EMUL_UUU (gcd) { return fold_gcd (op1, op2); }
> -EMUL_III (gcd) { assert (0); return 0; }
> +EMUL_III (gcd) { PK_UNREACHABLE (); return 0; }
>  
>  EMUL_UUU (sl) { return op1 << op2; }
>  EMUL_III (sl) { return op1 << op2; }
> diff --git a/libpoke/pkl-gen.c b/libpoke/pkl-gen.c
> index bbdfd7d2..2b009d64 100644
> --- a/libpoke/pkl-gen.c
> +++ b/libpoke/pkl-gen.c
> @@ -523,10 +523,10 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_ps_decl)
>      case PKL_AST_DECL_KIND_TYPE:
>        if (PKL_AST_TYPE_CODE (initial) == PKL_TYPE_STRUCT
>            || PKL_AST_TYPE_CODE (initial) == PKL_TYPE_ARRAY)
> -        assert (0);
> +        PK_UNREACHABLE ();
>        break;
>      default:
> -      assert (0);
> +      PK_UNREACHABLE ();
>        break;
>      }
>  }
> @@ -734,7 +734,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_ps_comp_stmt)
>            RAS_MACRO_BUILTIN_SET_COLOR_BGCOLOR;
>            break;
>          default:
> -          assert (0);
> +          PK_UNREACHABLE ();
>          }
>      }
>    else
> @@ -1296,7 +1296,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_pr_loop_stmt)
>          break;
>        }
>      default:
> -      assert (0);
> +      PK_UNREACHABLE ();
>      }
>  
>    PKL_PASS_BREAK;
> @@ -2444,7 +2444,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_pr_cast)
>        pkl_asm_insn (pasm, PKL_INSN_NIP);  /* IVAL */
>      }
>    else
> -    assert (0);
> +    PK_UNREACHABLE ();
>  
>    PKL_PASS_BREAK;
>  }
> @@ -2478,7 +2478,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_ps_cons)
>        PKL_GEN_POP_CONTEXT;
>        break;
>      default:
> -      assert (0);
> +      PK_UNREACHABLE ();
>      }
>  }
>  PKL_PHASE_END_HANDLER
> @@ -2685,7 +2685,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_pr_trimmer)
>          break;
>        }
>      default:
> -      assert (0);
> +      PK_UNREACHABLE ();
>      }
>  
>    PKL_PASS_BREAK;
> @@ -2768,7 +2768,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_pr_indexer)
>              RAS_MACRO_STROREF (index_type);
>            break;
>          default:
> -          assert (0);
> +          PK_UNREACHABLE ();
>          }
>      }
>  
> @@ -3020,7 +3020,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_ps_type_integral)
>                          IOS_NENC_2, IOS_ENDIAN_MSB);
>            break;
>          default:
> -          assert (0);
> +          PK_UNREACHABLE ();
>          }
>      }
>    else if (PKL_GEN_IN_CTX_P (PKL_GEN_CTX_IN_MAPPER))
> @@ -3040,7 +3040,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_ps_type_integral)
>                          IOS_NENC_2, IOS_ENDIAN_MSB);
>            break;
>          default:
> -          assert (0);
> +          PK_UNREACHABLE ();
>          }
>  
>        pkl_asm_insn (pasm, PKL_INSN_NIP); /* STRICT is not used.  */
> @@ -3993,7 +3993,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_ps_op_add)
>        }
>        break;
>      default:
> -      assert (0);
> +      PK_UNREACHABLE ();
>        break;
>      }
>  }
> @@ -4021,7 +4021,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_ps_op_sub)
>        }
>        break;
>      default:
> -      assert (0);
> +      PK_UNREACHABLE ();
>        break;
>      }
>  }
> @@ -4072,7 +4072,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_ps_op_mul)
>        }
>        break;
>      default:
> -      assert (0);
> +      PK_UNREACHABLE ();
>        break;
>      }
>  }
> @@ -4143,7 +4143,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_ps_op_div)
>          break;
>        }
>      default:
> -      assert (0);
> +      PK_UNREACHABLE ();
>        break;
>      }
>  }
> @@ -4172,7 +4172,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_ps_op_mod)
>          break;
>        }
>      default:
> -      assert (0);
> +      PK_UNREACHABLE ();
>        break;
>      }
>  }
> @@ -4202,7 +4202,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_ps_op_binexp)
>      case PKL_AST_OP_SR: insn = PKL_INSN_SR; break;
>      case PKL_AST_OP_POW: insn = PKL_INSN_POW; break;
>      default:
> -      assert (0);
> +      PK_UNREACHABLE ();
>        break;
>      }
>  
> @@ -4218,7 +4218,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_ps_op_binexp)
>          pkl_asm_insn (pasm, PKL_INSN_NIP);
>        break;
>      default:
> -      assert (0);
> +      PK_UNREACHABLE ();
>        break;
>      }
>  }
> @@ -4422,7 +4422,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_ps_op_rela)
>      case PKL_AST_OP_LE: rela_insn = PKL_INSN_LE; break;
>      case PKL_AST_OP_GE: rela_insn = PKL_INSN_GE; break;
>      default:
> -      assert (0);
> +      PK_UNREACHABLE ();
>        break;
>      }
>  
> @@ -4443,7 +4443,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_ps_op_rela)
>        pkl_asm_insn (pasm, PKL_INSN_NIP2);
>        break;
>      default:
> -      assert (0);
> +      PK_UNREACHABLE ();
>        break;
>      }
>  }
> diff --git a/libpoke/pkl-lex.l b/libpoke/pkl-lex.l
> index d77fb808..1aac75af 100644
> --- a/libpoke/pkl-lex.l
> +++ b/libpoke/pkl-lex.l
> @@ -42,6 +42,7 @@
>  #include <ctype.h>
>  #include <assert.h>
>  #include <stdlib.h>
> +#include "pk-utils.h"
>  #include "pkl.h"
>  #include "pkl-ast.h"
>  #include "pkl-env.h"
> @@ -472,7 +473,7 @@ S ::
>              break;
>            }
>          default:
> -          assert (0);
> +          PK_UNREACHABLE ();
>            break;
>          }
>      }
> diff --git a/libpoke/pkl-parser.c b/libpoke/pkl-parser.c
> index 15e85ab6..66d8d0a8 100644
> --- a/libpoke/pkl-parser.c
> +++ b/libpoke/pkl-parser.c
> @@ -24,6 +24,7 @@
>  #include "pkl-ast.h"
>  #include "pkl-parser.h"
>  #include "pkl-tab.h"
> +#include "pk-utils.h"
>  #define YYSTYPE PKL_TAB_STYPE
>  #define YYLTYPE PKL_TAB_LTYPE
>  #include "pkl-lex.h"
> @@ -160,7 +161,7 @@ pkl_parse_buffer (pkl_compiler compiler, pkl_env *env,
>    else if (what == PKL_PARSE_STATEMENT)
>      parser->start_token = START_STMT;
>    else
> -    assert (0);
> +    PK_UNREACHABLE ();
>  
>    yybuffer = pkl_tab__scan_string (buffer, parser->scanner);
>  
> diff --git a/libpoke/pkl-pass.c b/libpoke/pkl-pass.c
> index 4fb9ec26..29274a7e 100644
> --- a/libpoke/pkl-pass.c
> +++ b/libpoke/pkl-pass.c
> @@ -18,6 +18,7 @@
>  
>  #include <config.h>
>  
> +#include "pk-utils.h"
>  #include "pkl-pass.h"
>  
>  #define PKL_CALL_PHASES(CLASS,ORDER,DISCR)                              \
> @@ -171,7 +172,7 @@ pkl_call_node_handlers (pkl_compiler compiler,
>  #undef PKL_DEF_OP
>              default:
>                /* Unknown operation code.  */
> -              assert (0);
> +              PK_UNREACHABLE ();
>              }
>          }
>  
> @@ -219,7 +220,7 @@ pkl_call_node_handlers (pkl_compiler compiler,
>  #undef PKL_DEF_OP
>              default:
>                /* Unknown operation code.  */
> -              assert (0);
> +              PK_UNREACHABLE ();
>              }
>          }
>  
> @@ -233,7 +234,7 @@ pkl_call_node_handlers (pkl_compiler compiler,
>          }
>      }
>    else
> -    assert (0);
> +    PK_UNREACHABLE ();
>  
>   newnode:
>   restart:
> @@ -456,7 +457,7 @@ pkl_do_pass_1 (pkl_compiler compiler,
>              break;
>            default:
>              /* Unknown type code.  */
> -            assert (0);
> +            PK_UNREACHABLE ();
>            }
>          break;
>        }
> @@ -616,7 +617,7 @@ pkl_do_pass_1 (pkl_compiler compiler,
>        break;
>      default:
>        /* Unknown node code.  This kills the poke :'( */
> -      assert (0);
> +      PK_UNREACHABLE ();
>      }
>  
>    /* Call the post-order handlers from registered phases.  */
> diff --git a/libpoke/pkl-promo.c b/libpoke/pkl-promo.c
> index 30030c44..7e232f2c 100644
> --- a/libpoke/pkl-promo.c
> +++ b/libpoke/pkl-promo.c
> @@ -571,7 +571,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_promo_ps_op_mul)
>        else if (PKL_AST_TYPE_CODE (op_type) == PKL_TYPE_STRING)
>          ;
>        else
> -        assert (0);
> +        PK_UNREACHABLE ();
>      }
>  
>    PKL_PASS_DONE;
> @@ -753,7 +753,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_promo_ps_op_bshiftpow)
>          break;
>        }
>      default:
> -      assert (0);
> +      PK_UNREACHABLE ();
>      }
>  
>    PKL_PASS_DONE;
> @@ -977,7 +977,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_promo_ps_type_array)
>          break;
>        }
>      default:
> -      assert (0); /* This can't happen.  */
> +      PK_UNREACHABLE (); /* This can't happen.  */
>      }
>  
>    PKL_PASS_RESTART = restart;
> @@ -1662,7 +1662,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_promo_ps_cons)
>          break;
>        }
>      default:
> -      assert (0);
> +      PK_UNREACHABLE ();
>      }
>  
>    PKL_PASS_DONE;
> diff --git a/libpoke/pkl-tab.y b/libpoke/pkl-tab.y
> index 1fc8f063..c2117432 100644
> --- a/libpoke/pkl-tab.y
> +++ b/libpoke/pkl-tab.y
> @@ -1769,7 +1769,7 @@ struct_type_specifier:
>                                             PKL_ENV_NS_MAIN,
>                                             PKL_AST_IDENTIFIER_POINTER 
> (offset_identifier),
>                                             decl))
> -                      assert (0);
> +                      PK_UNREACHABLE ();
>                    }
>                  }
>            struct_type_elem_list '}'
> @@ -2462,7 +2462,7 @@ stmt:
>                                           PKL_AST_IDENTIFIER_POINTER ($3),
>                                           $<ast>$))
>                      /* This should never happen.  */
> -                    assert (0);
> +                    PK_UNREACHABLE ();
>                  }
>            ')' stmt
>                  {
> @@ -2512,7 +2512,7 @@ stmt:
>                                           PKL_AST_IDENTIFIER_POINTER ($3),
>                                           $<ast>$))
>                      /* This should never happen.  */
> -                    assert (0);
> +                    PK_UNREACHABLE ();
>                  }
>            WHERE expression ')' stmt
>                  {
> diff --git a/libpoke/pkl-trans.c b/libpoke/pkl-trans.c
> index 7d5ff8d9..27c4554f 100644
> --- a/libpoke/pkl-trans.c
> +++ b/libpoke/pkl-trans.c
> @@ -471,7 +471,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_trans1_ps_string)
>              }
>            break;
>          default:
> -          assert (0);
> +          PK_UNREACHABLE ();
>          }
>      }
>    new_string_pointer[i] = '\0';
> diff --git a/libpoke/pkl-typify.c b/libpoke/pkl-typify.c
> index cd1e4cbc..e13a57af 100644
> --- a/libpoke/pkl-typify.c
> +++ b/libpoke/pkl-typify.c
> @@ -2205,7 +2205,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_typify1_ps_cons)
>        PKL_AST_CONS_KIND (cons) = PKL_AST_CONS_KIND_ARRAY;
>        break;
>      default:
> -      assert (0);
> +      PK_UNREACHABLE ();
>      }
>  
>    PKL_AST_TYPE (cons) = ASTREF (cons_type);
> diff --git a/libpoke/pkl.c b/libpoke/pkl.c
> index f4fc181c..130d2825 100644
> --- a/libpoke/pkl.c
> +++ b/libpoke/pkl.c
> @@ -830,11 +830,11 @@ pvm_type_to_ast_type (pkl_ast ast, pvm_val type)
>        break;
>      case PVM_TYPE_STRUCT:
>        /* XXX writeme */
> -      assert (0);
> +      PK_UNREACHABLE ();
>        break;
>      case PVM_TYPE_CLOSURE:
>        /* XXX writeme */
> -      assert (0);
> +      PK_UNREACHABLE ();
>        break;
>      default:
>        break;
> diff --git a/libpoke/pvm-val.c b/libpoke/pvm-val.c
> index 2903b1e5..3c83d92a 100644
> --- a/libpoke/pvm-val.c
> +++ b/libpoke/pvm-val.c
> @@ -990,7 +990,7 @@ pvm_sizeof (pvm_val val)
>      /* By convention, PVM_NULL values have size zero.  */
>      return 0;
>  
> -  assert (0);
> +  PK_UNREACHABLE ();
>    return 0;
>  }
>  
> @@ -1140,7 +1140,7 @@ pvm_print_val_1 (pvm vm, int depth, int mode, int base, 
> int indent,
>        uint_fmt = "";
>        break;
>      default:
> -      assert (0);
> +      PK_UNREACHABLE ();
>        break;
>      }
>  
> @@ -1489,7 +1489,7 @@ pvm_print_val_1 (pvm vm, int depth, int mode, int base, 
> int indent,
>                case 16: pk_puts ("int16"); break;
>                case 32: pk_puts ("int32"); break;
>                case 64: pk_puts ("int64"); break;
> -              default: assert (0); break;
> +              default: PK_UNREACHABLE (); break;
>                }
>            }
>            break;
> @@ -1562,7 +1562,7 @@ pvm_print_val_1 (pvm vm, int depth, int mode, int base, 
> int indent,
>            break;
>            }
>          default:
> -          assert (0);
> +          PK_UNREACHABLE ();
>          }
>  
>        pk_term_end_class ("type");
> @@ -1582,7 +1582,7 @@ pvm_print_val_1 (pvm vm, int depth, int mode, int base, 
> int indent,
>        pk_term_end_class ("special");
>      }
>    else
> -    assert (0);
> +    PK_UNREACHABLE ();
>  }
>  
>  #undef PVM_PRINT_VAL_1
> @@ -1651,7 +1651,7 @@ pvm_typeof (pvm_val val)
>    else if (PVM_IS_CLS (val))
>      type = PVM_NULL;
>    else
> -    assert (0);
> +    PK_UNREACHABLE ();
>  
>    return type;
>  }
> @@ -1713,7 +1713,7 @@ pvm_type_equal_p (pvm_val type1, pvm_val type2)
>          return 1;
>        }
>      default:
> -      assert (0);
> +      PK_UNREACHABLE ();
>      }
>  }
>  
> diff --git a/poke/pk-cmd-help.c b/poke/pk-cmd-help.c
> index 10874f40..ebf4afd1 100644
> --- a/poke/pk-cmd-help.c
> +++ b/poke/pk-cmd-help.c
> @@ -40,7 +40,7 @@ pk_cmd_help (int argc, struct pk_cmd_arg argv[], uint64_t 
> uflags)
>    if (pk_call (poke_compiler, pk_help, &ret, &exit_exception,
>                 1 /* narg */, topic) == PK_ERROR
>        || exit_exception != PK_NULL)
> -    assert (0);
> +    PK_UNREACHABLE ();
>  
>    return 1;
>  }
> diff --git a/poke/pk-cmd-set.c b/poke/pk-cmd-set.c
> index b2dc2b05..0e3e2e1a 100644
> --- a/poke/pk-cmd-set.c
> +++ b/poke/pk-cmd-set.c
> @@ -39,7 +39,7 @@ pk_cmd_set_dump (int argc, struct pk_cmd_arg argv[], 
> uint64_t uflags)
>    if (pk_call (poke_compiler, registry_printer, &retval, &exit_exception,
>                 0) == PK_ERROR
>        || exit_exception != PK_NULL)
> -    assert (0); /* This shouldn't happen.  */
> +    PK_UNREACHABLE (); /* This shouldn't happen.  */
>  
>  #if HAVE_HSERVER
>    {
> @@ -84,7 +84,7 @@ pk_cmd_set (int int_p,
>            == PK_ERROR
>            || exit_exception != PK_NULL)
>          /* This shouldn't happen.  */
> -        assert (0);
> +        PK_UNREACHABLE ();
>  
>        if (int_p)
>          pk_printf ("%" PRId64 "\n", pk_int_value (retval));
> @@ -111,7 +111,7 @@ pk_cmd_set (int int_p,
>            || exit_exception != PK_NULL)
>          /* This shouldn't happen, since we know `newval' is of the
>             right type.  */
> -        assert (0);
> +        PK_UNREACHABLE ();
>  
>        /* `retval' is a string.  If it is empty, everything went ok, if
>           it is not it is an explicative message on what went
> @@ -153,7 +153,7 @@ pk_cmd_set_error_on_warning (int argc, struct pk_cmd_arg 
> argv[],
>       checking whether the passed string is empty or not.  */
>  
>    if (argc != 2)
> -    assert (0);
> +    PK_UNREACHABLE ();
>  
>    arg = PK_CMD_ARG_STR (argv[1]);
>  
> diff --git a/poke/pk-cmd-vm.c b/poke/pk-cmd-vm.c
> index 90b25c33..51ff59a7 100644
> --- a/poke/pk-cmd-vm.c
> +++ b/poke/pk-cmd-vm.c
> @@ -21,6 +21,7 @@
>  
>  #include "poke.h"
>  #include "pk-cmd.h"
> +#include "pk-utils.h"
>  #include "pk-repl.h" /* For poke_completion_function */
>  
>  #define PK_VM_DIS_UFLAGS "n"
> @@ -115,7 +116,7 @@ pk_cmd_vm_dispatch (int argc, struct pk_cmd_arg argv[], 
> uint64_t uflags)
>    if (pk_call (poke_compiler, vm_dispatch, &retval, &exception, 0)
>                 == PK_ERROR
>        || exception != PK_NULL)
> -    assert (0); /* This shouldn't happen.  */
> +    PK_UNREACHABLE (); /* This shouldn't happen.  */
>    return 1;
>  }
>  
> diff --git a/poke/pk-cmd.c b/poke/pk-cmd.c
> index 92569978..e09751b1 100644
> --- a/poke/pk-cmd.c
> +++ b/poke/pk-cmd.c
> @@ -496,7 +496,7 @@ pk_cmd_exec_1 (const char *str, struct pk_trie 
> *cmds_trie, char *prefix)
>                    }
>                  default:
>                    /* This should NOT happen.  */
> -                  assert (0);
> +                  PK_UNREACHABLE ();
>                  }
>  
>                if (match)
> diff --git a/poke/pk-ios.c b/poke/pk-ios.c
> index 7c83875f..bd78ff3c 100644
> --- a/poke/pk-ios.c
> +++ b/poke/pk-ios.c
> @@ -26,6 +26,7 @@
>  
>  #include "poke.h"
>  #include "pk-ios.h"
> +#include "pk-utils.h"
>  #include "pk-map.h"
>  
>  int
> @@ -210,7 +211,7 @@ pk_open_proc_maps (int ios_id, uint64_t pid, int all_p)
>                            ios_id,
>                            range_begin, range_end - range_begin,
>                            map_name) == -1)
> -              assert (0);
> +              PK_UNREACHABLE ();
>  
>              if (pk_ios_open (poke_compiler, handler, flags, 0) == 
> PK_IOS_NOID)
>                continue;
> diff --git a/poke/pk-map-tab.y b/poke/pk-map-tab.y
> index 72067332..05d3ee3e 100644
> --- a/poke/pk-map-tab.y
> +++ b/poke/pk-map-tab.y
> @@ -326,7 +326,7 @@ map_entry:
>                        else if (!offset)
>                          pk_map_printf_error (map_parser, @$, "entry lacks an 
> %%offset\n");
>                        else
> -                        assert (0);
> +                        PK_UNREACHABLE ();
>  
>                        YYERROR;
>                      }
> diff --git a/poke/poke.c b/poke/poke.c
> index 3dedc95f..af223309 100644
> --- a/poke/poke.c
> +++ b/poke/poke.c
> @@ -816,7 +816,7 @@ poke_handle_exception (pk_val exception)
>    assert (handler != PK_NULL);
>    if (pk_call (poke_compiler, handler, NULL, NULL, 1, exception)
>        == PK_ERROR)
> -    assert (0);
> +    PK_UNREACHABLE ();
>  }
>  
>  void



reply via email to

[Prev in Thread] Current Thread [Next in Thread]