[PATCH] D103938: Diagnose -Wunused-value based on CFG reachability

Mikael Holmén via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Sep 20 23:50:42 PDT 2021


uabelho added a comment.

Hi @ychen,

A whole bunch of libcxx testcases fail for me when I run with this patch:

  Failed Tests (90):
    libc++ :: libcxx/gdb/gdb_pretty_printer_test.sh.cpp
    libc++ :: std/numerics/rand/rand.adapt/rand.adapt.ibits/assign.pass.cpp
    libc++ :: std/numerics/rand/rand.adapt/rand.adapt.ibits/copy.pass.cpp
    libc++ :: std/numerics/rand/rand.adapt/rand.adapt.ibits/ctor_result_type.pass.cpp
    libc++ :: std/numerics/rand/rand.adapt/rand.adapt.ibits/ctor_sseq.pass.cpp
    libc++ :: std/numerics/rand/rand.adapt/rand.adapt.ibits/default.pass.cpp
    libc++ :: std/numerics/rand/rand.adapt/rand.adapt.ibits/discard.pass.cpp
    libc++ :: std/numerics/rand/rand.adapt/rand.adapt.ibits/eval.pass.cpp
    libc++ :: std/numerics/rand/rand.adapt/rand.adapt.ibits/io.pass.cpp
    libc++ :: std/numerics/rand/rand.adapt/rand.adapt.ibits/seed_result_type.pass.cpp
    libc++ :: std/numerics/rand/rand.adapt/rand.adapt.ibits/seed_sseq.pass.cpp
    libc++ :: std/numerics/rand/rand.adapt/rand.adapt.ibits/values.pass.cpp
    libc++ :: std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/eval.pass.cpp
    libc++ :: std/numerics/rand/rand.dis/rand.dist.bern/rand.dist.bern.bin/eval_param.pass.cpp
    libc++ :: std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/eval.pass.cpp
    libc++ :: std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.pconst/eval_param.pass.cpp
    libc++ :: std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/eval.pass.cpp
    libc++ :: std/numerics/rand/rand.dis/rand.dist.samp/rand.dist.samp.plinear/eval_param.pass.cpp
    libc++ :: std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.int/eval.pass.cpp
    libc++ :: std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.real/eval.pass.cpp
    libc++ :: std/numerics/rand/rand.eng/rand.eng.lcong/assign.pass.cpp
    libc++ :: std/numerics/rand/rand.eng/rand.eng.lcong/copy.pass.cpp
    libc++ :: std/numerics/rand/rand.eng/rand.eng.lcong/ctor_result_type.pass.cpp
    libc++ :: std/numerics/rand/rand.eng/rand.eng.lcong/default.pass.cpp
    libc++ :: std/numerics/rand/rand.eng/rand.eng.lcong/result_type.pass.cpp
    libc++ :: std/numerics/rand/rand.eng/rand.eng.lcong/values.pass.cpp
    libc++ :: std/numerics/rand/rand.eng/rand.eng.mers/assign.pass.cpp
    libc++ :: std/numerics/rand/rand.eng/rand.eng.mers/copy.pass.cpp
    libc++ :: std/numerics/rand/rand.eng/rand.eng.mers/ctor_result_type.pass.cpp
    libc++ :: std/numerics/rand/rand.eng/rand.eng.mers/ctor_sseq.pass.cpp
    libc++ :: std/numerics/rand/rand.eng/rand.eng.mers/default.pass.cpp
    libc++ :: std/numerics/rand/rand.eng/rand.eng.mers/discard.pass.cpp
    libc++ :: std/numerics/rand/rand.eng/rand.eng.mers/eval.pass.cpp
    libc++ :: std/numerics/rand/rand.eng/rand.eng.mers/io.pass.cpp
    libc++ :: std/numerics/rand/rand.eng/rand.eng.mers/result_type.pass.cpp
    libc++ :: std/numerics/rand/rand.eng/rand.eng.mers/seed_result_type.pass.cpp
    libc++ :: std/numerics/rand/rand.eng/rand.eng.mers/seed_sseq.pass.cpp
    libc++ :: std/numerics/rand/rand.eng/rand.eng.mers/values.pass.cpp
    libc++ :: std/numerics/rand/rand.predef/mt19937_64.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.cons/char_ptr_ctor.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.cons/default.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.cons/string_ctor.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.cons/ull_ctor.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.hash/bitset.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.hash/enabled_hash.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.members/all.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.members/any.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.members/count.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.members/flip_all.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.members/flip_one.out_of_range.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.members/flip_one.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.members/index.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.members/index_const.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.members/left_shift.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.members/left_shift_eq.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.members/none.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.members/not_all.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.members/op_and_eq.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.members/op_eq_eq.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.members/op_or_eq.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.members/op_xor_eq.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.members/reset_all.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.members/reset_one.out_of_range.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.members/reset_one.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.members/right_shift.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.members/right_shift_eq.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.members/set_all.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.members/set_one.out_of_range.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.members/set_one.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.members/size.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.members/test.out_of_range.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.members/test.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.members/to_string.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.members/to_ulong.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.operators/op_and.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.operators/op_not.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.operators/op_or.pass.cpp
    libc++ :: std/utilities/template.bitset/bitset.operators/stream_in.pass.cpp
    libc++ :: std/utilities/variant/variant.hash/hash.pass.cpp
    libc++ :: std/utilities/variant/variant.relops/relops.pass.cpp
    libc++ :: std/utilities/variant/variant.relops/relops_bool_conv.fail.cpp
    libc++ :: std/utilities/variant/variant.variant/variant.assign/copy.pass.cpp
    libc++ :: std/utilities/variant/variant.variant/variant.assign/move.pass.cpp
    libc++ :: std/utilities/variant/variant.variant/variant.ctor/copy.pass.cpp
    libc++ :: std/utilities/variant/variant.variant/variant.ctor/move.pass.cpp
    libc++ :: std/utilities/variant/variant.variant/variant.status/index.pass.cpp
    libc++ :: std/utilities/variant/variant.variant/variant.status/valueless_by_exception.pass.cpp
    libc++ :: std/utilities/variant/variant.variant/variant.swap/swap.pass.cpp
    libc++ :: std/utilities/variant/variant.visit/visit.pass.cpp
    libc++ :: std/utilities/variant/variant.visit/visit_return_type.pass.cpp

The first one fails like

  In file included from /repo/uabelho/master-github/libcxx/test/libcxx/gdb/gdb_pretty_printer_test.sh.cpp:18:
  /repo/uabelho/master-github/llvm/build-all-builtins/include/c++/v1/bitset:671:98: error: implicit conversion from 'unsigned long' to 'const unsigned int' changes value from 288230376151711744 to 0 [-Werror,-Wconstant-conversion]
      static const unsigned __n_words = _Size == 0 ? 0 : (_Size - 1) / (sizeof(size_t) * CHAR_BIT) + 1;
                            ~~~~~~~~~                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
  1 error generated.
  
  error: command failed with exit status: 1

Can also be seen in build bots, e.g. here:
 http://lab.llvm.org:8011/#/builders/119/builds/5612


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D103938/new/

https://reviews.llvm.org/D103938



More information about the cfe-commits mailing list