Skip to content

New warnings when compiling Julia with GCC 12 #45400

@giordano

Description

@giordano

Since I upgraded to GCC 12, I'm getting some new warnings when compiling Julia.

/home/mose/repo/julia/src/init.c: In function 'jl_init_stack_limits':
/home/mose/repo/julia/src/init.c:75:19: warning: storing the address of local variable 'stacksize' in '*stack_hi' [-Wdangling-pointer=]
   75 |         *stack_hi = (void*)&stacksize;
      |         ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~
/home/mose/repo/julia/src/init.c:71:16: note: 'stacksize' declared here
   71 |         size_t stacksize;
      |                ^~~~~~~~~
/home/mose/repo/julia/src/init.c:71:16: note: 'stack_hi' declared here
/home/mose/repo/julia/src/init.c:105:15: warning: storing the address of local variable 'stacksize' in '*stack_lo' [-Wdangling-pointer=]
  105 |     *stack_lo = (void*)((char*)*stack_hi - stacksize);
      |     ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/mose/repo/julia/src/init.c:103:12: note: 'stacksize' declared here
  103 |     size_t stacksize = rl.rlim_cur;
      |            ^~~~~~~~~
/home/mose/repo/julia/src/init.c:103:12: note: 'stack_lo' declared here
/home/mose/repo/julia/src/init.c: In function 'julia_init':
/home/mose/repo/julia/src/init.c:719:21: warning: using a dangling pointer to 'stacksize' [-Wdangling-pointer=]
  719 |     jl_task_t *ct = jl_init_root_task(ptls, stack_lo, stack_hi);
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/mose/repo/julia/src/init.c:103:12: note: 'stacksize' declared here
  103 |     size_t stacksize = rl.rlim_cur;
      |            ^~~~~~~~~

My understanding is that these dangling pointers are there pretty much on purpose. If that's the case, we should use either a pragma or a compiler flag to silence them.

/home/mose/repo/julia/src/gc.c: In function 'gc_mark_stack_resize':
/home/mose/repo/julia/src/gc.c:1722:89: warning: pointer 'old_data' may be used after 'realloc' [-Wuse-after-free]
 1722 |     sp->data = (jl_gc_mark_data_t *)(((char*)sp->data) + (((char*)gc_cache->data_stack) - ((char*)old_data)));
      |                                                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
In file included from /home/mose/repo/julia/src/support/libsupport.h:10,
                 from /home/mose/repo/julia/src/julia.h:14,
                 from /home/mose/repo/julia/src/gc.h:16,
                 from /home/mose/repo/julia/src/gc.c:3:
In function 'realloc_s',
    inlined from 'gc_mark_stack_resize' at /home/mose/repo/julia/src/gc.c:1721:49:
/home/mose/repo/julia/src/support/dtypes.h:356:9: note: call to 'realloc' here
  356 |     p = realloc(p, sz == 0 ? 1 : sz);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/mose/repo/julia/src/gc.c: In function 'gc_mark_stack_resize':
/home/mose/repo/julia/src/gc.c:1726:37: warning: pointer 'pc_stack' may be used after 'realloc' [-Wuse-after-free]
 1726 |     sp->pc = sp->pc_start + (sp->pc - pc_stack);
      |                                     ^
In function 'realloc_s',
    inlined from 'gc_mark_stack_resize' at /home/mose/repo/julia/src/gc.c:1724:49:
/home/mose/repo/julia/src/support/dtypes.h:356:9: note: call to 'realloc' here
  356 |     p = realloc(p, sz == 0 ? 1 : sz);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~

This sounds like something that should be fixed? (tentatively pinging @chflood since this is in the GC)

In file included from /home/mose/repo/julia/usr/include/llvm/Bitcode/BitcodeWriter.h:17,
                 from /home/mose/repo/julia/src/aotcompile.cpp:47:
/home/mose/repo/julia/usr/include/llvm/IR/ModuleSummaryIndex.h: In constructor 'llvm::ModuleSummaryIndex::ModuleSummaryIndex(bool, bool)':
/home/mose/repo/julia/usr/include/llvm/IR/ModuleSummaryIndex.h:1116:73: warning: member 'llvm::ModuleSummaryIndex::Alloc' is used uninitialized [-Wuninitialized]
 1116 |       : HaveGVs(HaveGVs), EnableSplitLTOUnit(EnableSplitLTOUnit), Saver(Alloc),
      |                                                                         ^~~~~
    [...]
In file included from /home/mose/repo/julia/usr/include/llvm/Bitcode/BitcodeWriter.h:17,
                 from /home/mose/repo/julia/src/jitlayers.cpp:21:
/home/mose/repo/julia/usr/include/llvm/IR/ModuleSummaryIndex.h: In constructor 'llvm::ModuleSummaryIndex::ModuleSummaryIndex(bool, bool)':
/home/mose/repo/julia/usr/include/llvm/IR/ModuleSummaryIndex.h:1116:73: warning: member 'llvm::ModuleSummaryIndex::Alloc' is used uninitialized [-Wuninitialized]
 1116 |       : HaveGVs(HaveGVs), EnableSplitLTOUnit(EnableSplitLTOUnit), Saver(Alloc),
      |                                                                         ^~~~~
    [...]
In file included from /home/mose/repo/julia/usr/include/llvm/CodeGen/MachineInstr.h:19,
                 from /home/mose/repo/julia/usr/include/llvm/CodeGen/MachineBasicBlock.h:20,
                 from /home/mose/repo/julia/usr/include/llvm/CodeGen/MachineFunction.h:28,
                 from /home/mose/repo/julia/usr/include/llvm/CodeGen/MachineFunctionPass.h:21,
                 from /home/mose/repo/julia/usr/include/llvm/CodeGen/AsmPrinter.h:22,
                 from /home/mose/repo/julia/src/disasm.cpp:104:
/home/mose/repo/julia/usr/include/llvm/ADT/PointerSumType.h: In static member function 'static llvm::DenseMapInfo<llvm::PointerSumType<TagT, MemberTs ...> >::SumType llvm::DenseMapInfo<llvm::PointerSumType<TagT, MemberTs ...> >::getEmptyKey()':
/home/mose/repo/julia/usr/include/llvm/ADT/PointerSumType.h:275:21: warning: expected 'template' keyword before dependent template name [-Wmissing-template-keyword]
  275 |     return SumType::create<SomeTag>(SomePointerInfo::getEmptyKey());
      |                     ^~~~~~
/home/mose/repo/julia/usr/include/llvm/ADT/PointerSumType.h: In static member function 'static llvm::DenseMapInfo<llvm::PointerSumType<TagT, MemberTs ...> >::SumType llvm::DenseMapInfo<llvm::PointerSumType<TagT, MemberTs ...> >::getTombstoneKey()':
/home/mose/repo/julia/usr/include/llvm/ADT/PointerSumType.h:279:21: warning: expected 'template' keyword before dependent template name [-Wmissing-template-keyword]
  279 |     return SumType::create<SomeTag>(SomePointerInfo::getTombstoneKey());
      |                     ^~~~~~
    [...]
In file included from /home/mose/repo/julia/usr/include/llvm/Bitcode/BitcodeWriter.h:17,
                 from /home/mose/repo/julia/src/codegen.cpp:65:
/home/mose/repo/julia/usr/include/llvm/IR/ModuleSummaryIndex.h: In constructor 'llvm::ModuleSummaryIndex::ModuleSummaryIndex(bool, bool)':
/home/mose/repo/julia/usr/include/llvm/IR/ModuleSummaryIndex.h:1116:73: warning: member 'llvm::ModuleSummaryIndex::Alloc' is used uninitialized [-Wuninitialized]
 1116 |       : HaveGVs(HaveGVs), EnableSplitLTOUnit(EnableSplitLTOUnit), Saver(Alloc),
      |                                                                         ^~~~~

These are from LLVM, so probably little we can do about directly (Edit 1: first warnings fixed by llvm/llvm-project@8e066b8. Edit 2: more LLVM warnings fixed by llvm/llvm-project@1d9086b).

Metadata

Metadata

Assignees

No one assigned

    Labels

    buildingBuild system, or building Julia or its dependencies

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions