From e3eaeef991445db2e6af782e202d67585398a43f Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 28 Oct 2024 13:34:09 -0700 Subject: [PATCH] Fix Apline compile error on uninitialized value (#7035) Similar to * https://github.com/WebAssembly/binaryen/pull/6330 * https://github.com/WebAssembly/binaryen/issues/6311 * https://github.com/WebAssembly/binaryen/pull/6912 * https://github.com/WebAssembly/binaryen/issues/5946 This extends the region we ignore the gcc warning in. The warning: ninja: job failed: /usr/bin/c++ -I/src/src -I/src/third_party/FP16/include -I/src/third_party/llvm-project/include -I/src -static -DBUILD_LLVM_DWARF -Wall -Werror -Wextra -Wno-unused-parameter -Wno-dangling-pointer -fno-omit-frame-pointer -fno-rtti -Wno-implicit-int-float-conversion -Wno-unknown-warning-option -Wswitch -Wimplicit-fallthrough -Wnon-virtual-dtor -fPIC -fdiagnostics-color=always -O3 -DNDEBUG -UNDEBUG -std=c++17 -MD -MT src/passes/CMakeFiles/passes.dir/Precompute.cpp.o -MF src/passes/CMakeFiles/passes.dir/Precompute.cpp.o.d -o src/passes/CMakeFiles/passes.dir/Precompute.cpp.o -c /src/src/passes/Precompute.cpp In file included from /src/src/literal.h:27, from /src/src/wasm.h:36, from /src/src/ir/boolean.h:20, from /src/src/ir/bits.h:20, from /src/src/ir/properties.h:20, from /src/src/ir/iteration.h:20, from /src/src/passes/Precompute.cpp:30: In copy constructor 'wasm::SmallVector::SmallVector(const wasm::SmallVector&) [with T = wasm::Expression*; long unsigned int N = 10]', inlined from 'constexpr std::pair<_T1, _T2>::pair(const _T1&, const _T2&) [with _U1 = wasm::Select* const; _U2 = wasm::SmallVector; typename std::enable_if<(std::_PCC::_ConstructiblePair<_U1, _U2>() && std::_PCC::_ImplicitlyConvertiblePair<_U1, _U2>()), bool>::type = true; _T1 = wasm::Select* const; _T2 = wasm::SmallVector]' at /usr/include/c++/13.2.1/bits/stl_pair.h:559:21, inlined from 'T& wasm::InsertOrderedMap::operator[](const Key&) [with Key = wasm::Select*; T = wasm::SmallVector]' at /src/src/support/insert_ordered.h:112:29, inlined from 'void wasm::Precompute::partiallyPrecompute(wasm::Function*)::StackFinder::visitSelect(wasm::Select*)' at /src/src/passes/Precompute.cpp:571:24, inlined from 'static void wasm::Walker::doVisitSelect(SubType*, wasm::Expression**) [with SubType = wasm::Precompute::partiallyPrecompute(wasm::Function*)::StackFinder; VisitorType = wasm::Visitor]' at /src/src/wasm-delegations.def:50:1: /src/src/support/small_vector.h:69:35: error: '.wasm::SmallVector::fixed' may be used uninitialized [-Werror=maybe-uninitialized] 69 | : usedFixed(other.usedFixed), fixed(other.fixed), flexible(other.flexible) { | ^~~~~~~~~~~~~~~~~~ In file included from /src/src/passes/Precompute.cpp:37: /src/src/support/insert_ordered.h: In static member function 'static void wasm::Walker::doVisitSelect(SubType*, wasm::Expression**) [with SubType = wasm::Precompute::partiallyPrecompute(wasm::Function*)::StackFinder; VisitorType = wasm::Visitor]': /src/src/support/insert_ordered.h:112:29: note: '' declared here 112 | std::pair kv = {k, {}}; | ^~ --- src/support/small_vector.h | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/support/small_vector.h b/src/support/small_vector.h index dd037055459..efd866cb550 100644 --- a/src/support/small_vector.h +++ b/src/support/small_vector.h @@ -53,14 +53,6 @@ template class SmallVector { // flexible additional storage std::vector flexible; -#if defined(__aarch64__) -#pragma GCC diagnostic pop -#endif - -#if defined(__riscv) && __riscv_xlen == 64 -#pragma GCC diagnostic pop -#endif - public: using value_type = T; @@ -286,6 +278,14 @@ struct ZeroInitSmallVector : public SmallVector { } }; +#if defined(__aarch64__) +#pragma GCC diagnostic pop +#endif + +#if defined(__riscv) && __riscv_xlen == 64 +#pragma GCC diagnostic pop +#endif + } // namespace wasm #endif // wasm_support_small_vector_h