[llvm-dev] Change in -Wnonnull in gcc-11

James Y Knight via llvm-dev llvm-dev at lists.llvm.org
Wed Sep 1 12:57:41 PDT 2021


The first warning looks valid, although it doesn't happen at runtime.

   1. In constructor ‘llvm::MachineModuleInfo::MachineModuleInfo(const
   llvm::LLVMTargetMachine*)’,
   2. inlined from
   ‘llvm::MachineModuleInfoWrapperPass::MachineModuleInfoWrapperPass(const
   llvm::LLVMTargetMachine*)’ at
   /llvm/lib/CodeGen/MachineModuleInfo.cpp:357:26,
   3. inlined from ‘llvm::Pass* llvm::callDefaultCtor() [with PassName =
   llvm::MachineModuleInfoWrapperPass]’ at
   /llvm/include/llvm/PassSupport.h:80:76:
   4. /llvm/lib/CodeGen/MachineModuleInfo.cpp:240:51: warning: ‘this’
   pointer is null [-Wnonnull]
   5. 240 | Context.setObjectFileInfo(TM->getObjFileLowering());
   6.

I believe it should be a simple matter of deleting the zero-arg
constructor. I'll try that and push it.

I note that the GCC warning points to an odd place, though -- it probably
should be pointing to the construction TM(*TM), which initializes a
reference with null, which is already UB.

MachineModuleInfo::MachineModuleInfo(const LLVMTargetMachine *TM)

    : TM(*TM), ....



However, the rest of the warnings come from:
  decltype(static_cast<const TypeParam *>(nullptr)->rbegin())>::value
which I think is a false-positive in GCC's warning.

TTBOMK, calling a method on nullptr in an unevaluated context (e.g.
decltype, non-vla-sizeof, etc) is not UB, and therefore should not emit a
warning.



On Wed, Sep 1, 2021, 2:44 PM Luke Benes via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

>
>
> In gcc-11, -Wnonnull considers the implicit this argument of every C++
> nonstatic member function to have been implicitly declared with attribute
> nonnull and triggers warnings for calls where the pointer is null. [1]
>
> Should clang also do this? This change helped webkit identify and fix some
> issues. [2][3][4][5]
>
> Building clang trunk with gcc-11 produces 13 new warnings related to this
> enhancement. They are in MachineModuleInfo.cpp and RangeAdapterTest.cpp.[6]
> Do these look like valid issues?
>
> -Luke
>
>
> [1] https://gcc.gnu.org/gcc-11/changes.html\
> [2] https://bugs.webkit.org/show_bug.cgi?id=224838
> [3] https://bugs.webkit.org/show_bug.cgi?id=224826
> [4] https://trac.webkit.org/changeset/276343/webkit
> [5] https://bugs.webkit.org/show_bug.cgi?id=224452
> [6] https://pastebin.com/EJTZphGm
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210901/44d54e8a/attachment.html>


More information about the llvm-dev mailing list