[PATCH] D153674: [dataflow] Disallow implicit copy of Environment, use fork() instead

Zixuan Wu via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Jun 28 02:34:28 PDT 2023


zixuan-wu added a comment.

In D153674#4455357 <https://reviews.llvm.org/D153674#4455357>, @sammccall wrote:

> Hi, sorry about that - are you able to provide a full log, or link to a
> failing bot?
> That error message doesn't show where in the LLVM code the error occurs.

It can pass with gcc 8.  And I can upload the .i file.F28060172: error.i <https://reviews.llvm.org/F28060172>

> g++ error.i -std=c++17
> In file included from /usr/include/c++/7/memory:64:0,
>
>   from /iothome/wuzx/workspace/llvm-comm/llvm/include/llvm/Support/Casting.h:20,
>   from /iothome/wuzx/workspace/llvm-comm/clang/include/clang/Basic/LLVM.h:21,
>   from /iothome/wuzx/workspace/llvm-comm/clang/include/clang/Basic/DiagnosticIDs.h:17,
>   from /iothome/wuzx/workspace/llvm-comm/clang/include/clang/Basic/IdentifierTable.h:18,
>   from /iothome/wuzx/workspace/llvm-comm/clang/include/clang/AST/Stmt.h:20,
>   from /iothome/wuzx/workspace/llvm-comm/clang/include/clang/Analysis/FlowSensitive/Transfer.h:17,
>   from /iothome/wuzx/workspace/llvm-comm/clang/lib/Analysis/FlowSensitive/Transfer.cpp:14:
>
> /usr/include/c++/7/bits/stl_construct.h: In instantiation of ‘void std::_Construct(_T1*, _Args&& ...) [with _T1 = std::optional<clang::dataflow::DataflowAnalysisState<clang::dataflow::NoopLattice> >; _Args = {const std::optional<clang::dataflow::DataflowAnalysisState<clang::dataflow::NoopLattice> >&}]’:
> /usr/include/c++/7/bits/stl_uninitialized.h:83:18:   required from ‘static _ForwardIterator std::__uninitialized_copy<_TrivialValueTypes>::__uninit_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator<const std::optional<clang::dataflow::DataflowAnalysisState<clang::dataflow::NoopLattice> >*, std::vector<std::optional<clang::dataflow::DataflowAnalysisState<clang::dataflow::NoopLattice> >, std::allocator<std::optional<clang::dataflow::DataflowAnalysisState<clang::dataflow::NoopLattice> > > > >; _ForwardIterator = std::optional<clang::dataflow::DataflowAnalysisState<clang::dataflow::NoopLattice> >*; bool _TrivialValueTypes = false]’
> /usr/include/c++/7/bits/stl_uninitialized.h:134:15:   required from ‘_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = __gnu_cxx::__normal_iterator<const std::optional<clang::dataflow::DataflowAnalysisState<clang::dataflow::NoopLattice> >*, std::vector<std::optional<clang::dataflow::DataflowAnalysisState<clang::dataflow::NoopLattice> >, std::allocator<std::optional<clang::dataflow::DataflowAnalysisState<clang::dataflow::NoopLattice> > > > >; _ForwardIterator = std::optional<clang::dataflow::DataflowAnalysisState<clang::dataflow::NoopLattice> >*]’
> /usr/include/c++/7/bits/stl_uninitialized.h:289:37:   required from ‘_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, std::allocator<_Tp>&) [with _InputIterator = __gnu_cxx::__normal_iterator<const std::optional<clang::dataflow::DataflowAnalysisState<clang::dataflow::NoopLattice> >*, std::vector<std::optional<clang::dataflow::DataflowAnalysisState<clang::dataflow::NoopLattice> >, std::allocator<std::optional<clang::dataflow::DataflowAnalysisState<clang::dataflow::NoopLattice> > > > >; _ForwardIterator = std::optional<clang::dataflow::DataflowAnalysisState<clang::dataflow::NoopLattice> >*; _Tp = std::optional<clang::dataflow::DataflowAnalysisState<clang::dataflow::NoopLattice> >]’
> /usr/include/c++/7/bits/stl_vector.h:331:31:   required from ‘std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = std::optional<clang::dataflow::DataflowAnalysisState<clang::dataflow::NoopLattice> >; _Alloc = std::allocator<std::optional<clang::dataflow::DataflowAnalysisState<clang::dataflow::NoopLattice> > >]’
> /iothome/wuzx/workspace/llvm-comm/llvm/include/llvm/Support/Error.h:520:5:   required from ‘llvm::Expected<T>::Expected(OtherT&&, std::enable_if_t<is_convertible_v<OtherT, T> >*) [with OtherT = std::vector<std::optional<clang::dataflow::DataflowAnalysisState<clang::dataflow::NoopLattice> >, std::allocator<std::optional<clang::dataflow::DataflowAnalysisState<clang::dataflow::NoopLattice> > > >&; T = std::vector<std::optional<clang::dataflow::DataflowAnalysisState<clang::dataflow::NoopLattice> >, std::allocator<std::optional<clang::dataflow::DataflowAnalysisState<clang::dataflow::NoopLattice> > > >; std::enable_if_t<is_convertible_v<OtherT, T> > = void]’
> /iothome/wuzx/workspace/llvm-comm/clang/include/clang/Analysis/FlowSensitive/DataflowAnalysis.h:235:10:   required from ‘llvm::Expected<std::vector<std::optional<clang::dataflow::DataflowAnalysisState<typename AnalysisT::Lattice> > > > clang::dataflow::runDataflowAnalysis(const clang::dataflow::ControlFlowContext&, AnalysisT&, const clang::dataflow::Environment&, std::function<void(const clang::CFGElement&, const clang::dataflow::DataflowAnalysisState<typename AnalysisT::Lattice>&)>) [with AnalysisT = clang::dataflow::NoopAnalysis; typename AnalysisT::Lattice = clang::dataflow::NoopLattice]’
> /iothome/wuzx/workspace/llvm-comm/clang/lib/Analysis/FlowSensitive/Transfer.cpp:871:38:   required from ‘void clang::dataflow::{anonymous}::TransferVisitor::transferInlineCall(const E*, const clang::FunctionDecl*) [with E = clang::CXXConstructExpr]’
> /iothome/wuzx/workspace/llvm-comm/clang/lib/Analysis/FlowSensitive/Transfer.cpp:625:42:   required from here
> /usr/include/c++/7/bits/stl_construct.h:75:7: error: use of deleted function ‘std::optional<clang::dataflow::DataflowAnalysisState<clang::dataflow::NoopLattice> >::optional(const std::optional<clang::dataflow::DataflowAnalysisState<clang::dataflow::NoopLattice> >&)’
>
>   { ::new(static_cast<void*>(__p)) _T1(std::forward<_Args>(__args)...); }
>     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> In file included from /iothome/wuzx/workspace/llvm-comm/llvm/include/llvm/Support/Alignment.h:26:0,
>
>   from /iothome/wuzx/workspace/llvm-comm/llvm/include/llvm/Support/TrailingObjects.h:50,
>   from /iothome/wuzx/workspace/llvm-comm/clang/include/clang/AST/DeclGroup.h:16,
>   from /iothome/wuzx/workspace/llvm-comm/clang/include/clang/AST/Stmt.h:16,
>   from /iothome/wuzx/workspace/llvm-comm/clang/include/clang/Analysis/FlowSensitive/Transfer.h:17,
>   from /iothome/wuzx/workspace/llvm-comm/clang/lib/Analysis/FlowSensitive/Transfer.cpp:14:
>
> /usr/include/c++/7/optional:453:11: note: ‘std::optional<clang::dataflow::DataflowAnalysisState<clang::dataflow::NoopLattice> >::optional(const std::optional<clang::dataflow::DataflowAnalysisState<clang::dataflow::NoopLattice> >&)’ is implicitly deleted because the default definition would be ill-formed:
>
>   class optional
>         ^~~~~~~~
>
> /usr/include/c++/7/optional:453:11: error: use of deleted function ‘constexpr std::_Enable_copy_move<false, false, true, true, _Tag>::_Enable_copy_move(const std::_Enable_copy_move<false, false, true, true, _Tag>&) [with _Tag = std::optional<clang::dataflow::DataflowAnalysisState<clang::dataflow::NoopLattice> >]’
> In file included from /usr/include/c++/7/optional:43:0,
>
>   from /iothome/wuzx/workspace/llvm-comm/llvm/include/llvm/Support/Alignment.h:26,
>   from /iothome/wuzx/workspace/llvm-comm/llvm/include/llvm/Support/TrailingObjects.h:50,
>   from /iothome/wuzx/workspace/llvm-comm/clang/include/clang/AST/DeclGroup.h:16,
>   from /iothome/wuzx/workspace/llvm-comm/clang/include/clang/AST/Stmt.h:16,
>   from /iothome/wuzx/workspace/llvm-comm/clang/include/clang/Analysis/FlowSensitive/Transfer.h:17,
>   from /iothome/wuzx/workspace/llvm-comm/clang/lib/Analysis/FlowSensitive/Transfer.cpp:14:
>
> /usr/include/c++/7/bits/enable_special_members.h:157:15: note: declared here
>
>   constexpr _Enable_copy_move(_Enable_copy_move const&) noexcept  = delete;
>             ^~~~~~~~~~~~~~~~~




Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D153674



More information about the cfe-commits mailing list