[cmake] Disable GCC 9's -Wredundant-move
authorPavel Labath <pavel@labath.sk>
Fri, 29 Nov 2019 13:44:28 +0000 (14:44 +0100)
committerPavel Labath <pavel@labath.sk>
Mon, 9 Dec 2019 10:01:50 +0000 (11:01 +0100)
commit385ba6065a9f77b4744274a37c97c536f7250701
tree185308e5b279d1e5271ca161929a377d1888a9d0
parent6965f835b476f8e8eb55916cac39be7ffe639866
[cmake] Disable GCC 9's -Wredundant-move

Summary:
This new warning (enabled by -Wextra) fires when a std::move is
redundant, as the default compiler behavior would be to select a move
operation anyway (e.g., when returning a local variable). Unlike
-Wpessimizing-move, it has no performance impact -- it just adds noise.

Currently llvm has about 1500 of these warnings. Unfortunately, the
suggested fix -- removing std::move -- does not work because of some
older compilers we still support. Specifically clang<=3.8 will not use a
move operation if an implicit conversion is needed (Core issue 1579). In
code like "A f(ConvertibleToA a) { return a; }" it will prefer a copy,
or fail to compile if a copy is not possible.

This patch disables that warning to get a meaningful signal out of a GCC
9 build.

Reviewers: rnk, aaron.ballman, xbolva00

Subscribers: mgorny, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D70963
llvm/cmake/modules/HandleLLVMOptions.cmake