[flang-dev] Cannot build Flang with latest LLVM

Johannes Doerfert via flang-dev flang-dev at lists.llvm.org
Mon Apr 13 10:52:56 PDT 2020


I stripped some text so the list accepts the message:


On 4/13/20 12:42 PM, Johannes Doerfert wrote:
> TBH, this looks like a MLIR problem to me as all the errors seem to 
> originate from the MLIR subfolder.
>
> Did you try building without flang? If the error persists we need to 
> notify MLIR folks, if not it might
>
> be our cmake.
>
>
> Cheers,
>
>   Johannes
>
>
> On 4/13/20 1:36 AM, inderjeet kalra via flang-dev wrote:
>> Hi,
>>
>> I just did an llvm build from source and here's what I hit. I am 
>> trying to
>> build  projects "mlir;clang;openmp;flang".
>>
>> Steps Followed:
>> - git clone https://github.com/llvm/llvm-project.git
>> - cmake -DLLVM_ENABLE_PROJECTS="mlir;clang;openmp;flang"
>>   -DCMAKE_C_COMPILER=/usr/local/bin/gcc
>> -DCMAKE_CXX_COMPILER=/usr/local/bin/g++ -G "Unix Makefiles"
>> -DLLVM_USE_LINKER=gold -DCMAKE_BUILD_TYPE=Debug ../llvm/
>> - make
>>
>> [root at localhost build]# /usr/local/bin/g++ -v
>> Using built-in specs.
>> COLLECT_GCC=/usr/local/bin/g++
>> COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/7.3.0/lto-wrapper 
>>
>> Target: x86_64-pc-linux-gnu
>> Configured with: ./configure --disable-multilib
>> --enable-languages=c,c++,fortran
>> Thread model: posix
>> gcc version 7.3.0 (GCC)
>> [root at localhost build]# /usr/local/bin/gcc -v
>> Using built-in specs.
>> COLLECT_GCC=/usr/local/bin/gcc
>> COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/7.3.0/lto-wrapper 
>>
>> Target: x86_64-pc-linux-gnu
>> Configured with: ./configure --disable-multilib
>> --enable-languages=c,c++,fortran
>> Thread model: posix
>> gcc version 7.3.0 (GCC)
>> [root at localhost build]#
>>
>>
>> Scanning dependencies of target MLIRAnalysis
>> [ 71%] Building CXX object
>> tools/mlir/lib/Analysis/CMakeFiles/MLIRAnalysis.dir/CallGraph.cpp.o
>> [ 71%] Building CXX object
>> tools/mlir/lib/Analysis/CMakeFiles/MLIRAnalysis.dir/Liveness.cpp.o
>> [ 71%] Building CXX object
>> tools/mlir/lib/Analysis/CMakeFiles/MLIRAnalysis.dir/SliceAnalysis.cpp.o
>> [ 71%] Building CXX object
>> tools/mlir/lib/Analysis/CMakeFiles/MLIRAnalysis.dir/Dominance.cpp.o
>> In file included from
>> /root/LLVM/llvm-project-new/llvm-project/llvm/include/llvm/ADT/STLExtras.h:20:0, 
>>
>>                   from
>> /root/LLVM/llvm-project-new/llvm-project/mlir/include/mlir/Support/STLExtras.h:18, 
>>
>>                   from
>> /root/LLVM/llvm-project-new/llvm-project/mlir/include/mlir/IR/StorageUniquerSupport.h:17, 
>>
>>                   from
>> /root/LLVM/llvm-project-new/llvm-project/mlir/include/mlir/IR/TypeSupport.h:17, 
>>
>>                   from
>> /root/LLVM/llvm-project-new/llvm-project/mlir/include/mlir/IR/Types.h:12, 
>>
>>                   from
>> /root/LLVM/llvm-project-new/llvm-project/mlir/include/mlir/IR/Value.h:16, 
>>
>>                   from
>> /root/LLVM/llvm-project-new/llvm-project/mlir/include/mlir/IR/BlockSupport.h:16, 
>>
>>                   from
>> /root/LLVM/llvm-project-new/llvm-project/mlir/include/mlir/IR/Block.h:16, 
>>
>>                   from
>> /root/LLVM/llvm-project-new/llvm-project/mlir/include/mlir/IR/Region.h:16, 
>>
>>                   from
>> /root/LLVM/llvm-project-new/llvm-project/mlir/include/mlir/IR/RegionGraphTraits.h:18, 
>>
>>                   from
>> /root/LLVM/llvm-project-new/llvm-project/mlir/include/mlir/Analysis/Dominance.h:12, 
>>
>>                   from
>> /root/LLVM/llvm-project-new/llvm-project/mlir/lib/Analysis/Dominance.cpp:14: 
>>
>> /root/LLVM/llvm-project-new/llvm-project/llvm/include/llvm/ADT/iterator.h: 
>>
>> In instantiation of ‘NodeRef& llvm::WrappedPairNodeDataIterator<ItType,
>> NodeRef, DataRef>::operator*() const [with ItType =
>> mlir::PredecessorIterator; NodeRef = std::pair<const
>> llvm::GraphDiff<mlir::Block*, true>*, mlir::Block*>; DataRef = const
>> llvm::GraphDiff<mlir::Block*, true>*]’:
>> /root/LLVM/llvm-project-new/llvm-project/llvm/include/llvm/ADT/STLExtras.h:315:36: 
>>
>>    required from ‘void llvm::filter_iterator_base<WrappedIteratorT,
>> PredicateT, IterTag>::findNextValid() [with WrappedIteratorT =
>> llvm::WrappedPairNodeDataIterator<mlir::PredecessorIterator,
>> std::pair<const llvm::GraphDiff<mlir::Block*, true>*, mlir::Block*>, 
>> const
>> llvm::GraphDiff<mlir::Block*, true>*>; PredicateT =
>> llvm::CFGViewChildren<GraphT, InverseGraph, InverseEdge,
>> GT>::children(llvm::CFGViewChildren<GraphT, InverseGraph, InverseEdge,
>> GT>::NodeRef) [with GraphT = llvm::Inverse<mlir::Block*>; bool 
>> InverseGraph
>> = true; bool InverseEdge = true; GT =
>> llvm::GraphTraits<llvm::Inverse<mlir::Block*> >;
>> llvm::CFGViewChildren<GraphT, InverseGraph, InverseEdge, GT>::NodeRef =
>> std::pair<const llvm::GraphDiff<mlir::Block*, true>*, mlir::Block*>;
>> typename GT::NodeRef =
>> mlir::Block*]::<lambda(llvm::CFGViewChildren<llvm::Inverse<mlir::Block*>, 
>>
>> true, true, llvm::GraphTraits<llvm::Inverse<mlir::Block*> > 
>> >::NodeRef)>;
>> IterTag = std::forward_iterator_tag]’
>> /root/LLVM/llvm-project-new/llvm-project/llvm/include/llvm/ADT/STLExtras.h:325:18: 
>>
>>    required from ‘llvm::filter_iterator_base<WrappedIteratorT, 
>> PredicateT,
>> IterTag>::filter_iterator_base(WrappedIteratorT, WrappedIteratorT,
>> PredicateT) [with WrappedIteratorT =
>> llvm::WrappedPairNodeDataIterator<mlir::PredecessorIterator,
>> std::pair<const llvm::GraphDiff<mlir::Block*, true>*, mlir::Block*>, 
>> const
>> llvm::GraphDiff<mlir::Block*, true>*>; PredicateT =
>> llvm::CFGViewChildren<GraphT, InverseGraph, InverseEdge,
>> GT>::children(llvm::CFGViewChildren<GraphT, InverseGraph, InverseEdge,
>> GT>::NodeRef) [with GraphT = llvm::Inverse<mlir::Block*>; bool 
>> InverseGraph
>> = true; bool InverseEdge = true; GT =
>> llvm::GraphTraits<llvm::Inverse<mlir::Block*> >;
>> llvm::CFGViewChildren<GraphT, InverseGraph, InverseEdge, GT>::NodeRef =
>> std::pair<const llvm::GraphDiff<mlir::Block*, true>*, mlir::Block*>;
>> typename GT::NodeRef =
>> mlir::Block*]::<lambda(llvm::CFGViewChildren<llvm::Inverse<mlir::Block*>, 
>>
>> true, true, llvm::GraphTraits<llvm::Inverse<mlir::Block*> > 
>> >::NodeRef)>;
>> IterTag = std::forward_iterator_tag]’
>> /root/LLVM/llvm-project-new/llvm-project/llvm/include/llvm/ADT/STLExtras.h:348:31: 
>>
>>    required from ‘llvm::filter_iterator_impl<WrappedIteratorT, 
>> PredicateT,
>> IterTag>::filter_iterator_impl(WrappedIteratorT, WrappedIteratorT,
>> PredicateT) [with WrappedIteratorT =
>> llvm::WrappedPairNodeDataIterator<mlir::PredecessorIterator,
>> std::pair<const llvm::GraphDiff<mlir::Block*, true>*, mlir::Block*>, 
>> const
>> llvm::GraphDiff<mlir::Block*, true>*>; PredicateT =
>> llvm::CFGViewChildren<GraphT, InverseGraph, InverseEdge,
>> GT>::children(llvm::CFGViewChildren<GraphT, InverseGraph, InverseEdge,
>> GT>::NodeRef) [with GraphT = llvm::Inverse<mlir::Block*>; bool 
>> InverseGraph
>> = true; bool InverseEdge = true; GT =
>> llvm::GraphTraits<llvm::Inverse<mlir::Block*> >;
>> llvm::CFGViewChildren<GraphT, InverseGraph, InverseEdge, GT>::NodeRef =
>> std::pair<const llvm::GraphDiff<mlir::Block*, true>*, mlir::Block*>;
>> typename GT::NodeRef =
>> mlir::Block*]::<lambda(llvm::CFGViewChildren<llvm::Inverse<mlir::Block*>, 
>>
>> true, true, llvm::GraphTraits<llvm::Inverse<mlir::Block*> > 
>> >::NodeRef)>;
>> IterTag = std::forward_iterator_tag]’
>> /root/LLVM/llvm-project-new/llvm-project/llvm/include/llvm/ADT/STLExtras.h:419:7: 
>>
>>    required from 
>> ‘llvm::iterator_range<llvm::filter_iterator_impl<decltype
>> (std::begin(declval<RangeT&>())), PredicateT, typename
>> llvm::detail::fwd_or_bidi_tag<decltype
>> (std::begin(declval<RangeT&>()))>::type> >
>> llvm::make_filter_range(RangeT&&, PredicateT) [with RangeT =
>> llvm::iterator_range<llvm::WrappedPairNodeDataIterator<mlir::PredecessorIterator, 
>>
>> std::pair<const llvm::GraphDiff<mlir::Block*, true>*, mlir::Block*>, 
>> const
>> llvm::GraphDiff<mlir::Block*, true>*> >; PredicateT =
>> llvm::CFGViewChildren<GraphT, InverseGraph, InverseEdge,
>> GT>::children(llvm::CFGViewChildren<GraphT, InverseGraph, InverseEdge,
>> GT>::NodeRef) [with GraphT = llvm::Inverse<mlir::Block*>; bool 
>> InverseGraph
>> = true; bool InverseEdge = true; GT =
>> llvm::GraphTraits<llvm::Inverse<mlir::Block*> >;
>> llvm::CFGViewChildren<GraphT, InverseGraph, InverseEdge, GT>::NodeRef =
>> std::pair<const llvm::GraphDiff<mlir::Block*, true>*, mlir::Block*>;
>> typename GT::NodeRef =
>> mlir::Block*]::<lambda(llvm::CFGViewChildren<llvm::Inverse<mlir::Block*>, 
>>
>> true, true, llvm::GraphTraits<llvm::Inverse<mlir::Block*> > 
>> >::NodeRef)>;
>> typename llvm::detail::fwd_or_bidi_tag<decltype
>> (std::begin(declval<RangeT&>()))>::type = std::forward_iterator_tag;
>> decltype (std::begin(declval<RangeT&>())) =
>> llvm::WrappedPairNodeDataIterator<mlir::PredecessorIterator,
>> std::pair<const llvm::GraphDiff<mlir::Block*, true>*, mlir::Block*>, 
>> const
>> llvm::GraphDiff<mlir::Block*, true>*>]’
>> /root/LLVM/llvm-project-new/llvm-project/llvm/include/llvm/IR/CFGDiff.h:234:35: 
>>
>>    required from ‘static auto llvm::CFGViewChildren<GraphT, 
>> InverseGraph,
>> InverseEdge, GT>::children(llvm::CFGViewChildren<GraphT, InverseGraph,
>> InverseEdge, GT>::NodeRef) [with GraphT = 
>> llvm::Inverse<mlir::Block*>; bool
>> InverseGraph = true; bool InverseEdge = true; GT =
>> llvm::GraphTraits<llvm::Inverse<mlir::Block*> >;
>> llvm::CFGViewChildren<GraphT, InverseGraph, InverseEdge, GT>::NodeRef =
>> std::pair<const llvm::GraphDiff<mlir::Block*, true>*, mlir::Block*>;
>> typename GT::NodeRef = mlir::Block*]’
>> /root/LLVM/llvm-project-new/llvm-project/llvm/include/llvm/IR/CFGDiff.h:255:20: 
>>
>>    [ skipping 4 instantiation contexts, use 
>> -ftemplate-backtrace-limit=0 to
>> disable ]
>> /root/LLVM/llvm-project-new/llvm-project/llvm/include/llvm/Support/GenericDomTreeConstruction.h:885:59: 
>>
>>    required from
>> ‘llvm::DomTreeBuilder::SemiNCAInfo<DomTreeT>::DeleteEdge(DomTreeT&,
>> llvm::DomTreeBuilder::SemiNCAInfo<DomTreeT>::BatchUpdatePtr,
>> llvm::DomTreeBuilder::SemiNCAInfo<DomTreeT>::NodePtr,
>> llvm::DomTreeBuilder::SemiNCAInfo<DomTreeT>::NodePtr)::<lambda(llvm::DomTreeBuilder::SemiNCAInfo<DomTreeT>::NodePtr, 
>>
>> llvm::DomTreeBuilder::SemiNCAInfo<DomTreeT>::NodePtr)> [with DomTreeT =
>> llvm::DominatorTreeBase<mlir::Block, true>;
>> llvm::DomTreeBuilder::SemiNCAInfo<DomTreeT>::NodePtr = mlir::Block*]’
>> /root/LLVM/llvm-project-new/llvm-project/llvm/include/llvm/Support/GenericDomTreeConstruction.h:882:25: 
>>
>>    required from ‘struct
>> llvm::DomTreeBuilder::SemiNCAInfo<DomTreeT>::DeleteEdge(DomTreeT&,
>> llvm::DomTreeBuilder::SemiNCAInfo<DomTreeT>::BatchUpdatePtr,
>> llvm::DomTreeBuilder::SemiNCAInfo<DomTreeT>::NodePtr,
>> llvm::DomTreeBuilder::SemiNCAInfo<DomTreeT>::NodePtr) [with DomTreeT =
>> llvm::DominatorTreeBase<mlir::Block, true>;
>> llvm::DomTreeBuilder::SemiNCAInfo<DomTreeT>::BatchUpdatePtr =
>> llvm::DomTreeBuilder::SemiNCAInfo<llvm::DominatorTreeBase<mlir::Block,
>> true> >::BatchUpdateInfo*;
>> llvm::DomTreeBuilder::SemiNCAInfo<DomTreeT>::NodePtr =
>> mlir::Block*]::<lambda(using NodePtr = using NodePtr = class 
>> mlir::Block*,
>> using NodePtr = using NodePtr = class mlir::Block*)>’
>> /root/LLVM/llvm-project-new/llvm-project/llvm/include/llvm/Support/GenericDomTreeConstruction.h:882:10: 
>>
>>    required from ‘static void
>> llvm::DomTreeBuilder::SemiNCAInfo<DomTreeT>::DeleteEdge(DomTreeT&,
>> llvm::DomTreeBuilder::SemiNCAInfo<DomTreeT>::BatchUpdatePtr,
>> llvm::DomTreeBuilder::SemiNCAInfo<DomTreeT>::NodePtr,
>> llvm::DomTreeBuilder::SemiNCAInfo<DomTreeT>::NodePtr) [with DomTreeT =
>> llvm::DominatorTreeBase<mlir::Block, true>;
>> llvm::DomTreeBuilder::SemiNCAInfo<DomTreeT>::BatchUpdatePtr =
>> llvm::DomTreeBuilder::SemiNCAInfo<llvm::DominatorTreeBase<mlir::Block,
>> true> >::BatchUpdateInfo*;
>> llvm::DomTreeBuilder::SemiNCAInfo<DomTreeT>::NodePtr = mlir::Block*]’
>> /root/LLVM/llvm-project-new/llvm-project/llvm/include/llvm/Support/GenericDomTreeConstruction.h:1540:36: 
>>
>>    required from ‘void llvm::DomTreeBuilder::DeleteEdge(DomTreeT&, 
>> typename
>> DomTreeT::NodePtr, typename DomTreeT::NodePtr) [with DomTreeT =
>> llvm::DominatorTreeBase<mlir::Block, true>; typename DomTreeT::NodePtr =
>> mlir::Block*]’
>> /root/LLVM/llvm-project-new/llvm-project/llvm/include/llvm/Support/GenericDomTree.h:561:31: 
>>
>>    required from ‘void llvm::DominatorTreeBase<NodeT,
>> IsPostDom>::deleteEdge(NodeT*, NodeT*) [with NodeT = mlir::Block; bool
>> IsPostDom = true]’
>> /root/LLVM/llvm-project-new/llvm-project/mlir/lib/Analysis/Dominance.cpp:23:22: 
>>
>>    required from here
>> /root/LLVM/llvm-project-new/llvm-project/llvm/include/llvm/ADT/iterator.h:366:17: 
>>
>> error: passing ‘const mlir::PredecessorIterator’ as ‘this’ argument
>> discards qualifiers [-fpermissive]
>>       NR.second = *this->I;
>>                   ^~~~~~~~
>> In file included from
>> /root/LLVM/llvm-project-new/llvm-project/mlir/include/mlir/Support/STLExtras.h:18:0, 
>>
>>                   from
>> /root/LLVM/llvm-project-new/llvm-project/mlir/include/mlir/IR/StorageUniquerSupport.h:17, 
>>
>>                   from
>> /root/LLVM/llvm-project-new/llvm-project/mlir/include/mlir/IR/TypeSupport.h:17, 
>>
>>                   from
>> /root/LLVM/llvm-project-new/llvm-project/mlir/include/mlir/IR/Types.h:12, 
>>
>>                   from
>> /root/LLVM/llvm-project-new/llvm-project/mlir/include/mlir/IR/Value.h:16, 
>>
>>                   from
>> /root/LLVM/llvm-project-new/llvm-project/mlir/include/mlir/IR/BlockSupport.h:16, 
>>
>>                   from
>> /root/LLVM/llvm-project-new/llvm-project/mlir/include/mlir/IR/Block.h:16, 
>>
>>                   from
>> /root/LLVM/llvm-project-new/llvm-project/mlir/include/mlir/IR/Region.h:16, 
>>
>>                   from
>> /root/LLVM/llvm-project-new/llvm-project/mlir/include/mlir/IR/RegionGraphTraits.h:18, 
>>
>>                   from
>> /root/LLVM/llvm-project-new/llvm-project/mlir/include/mlir/Analysis/Dominance.h:12, 
>>
>>                   from
>> /root/LLVM/llvm-project-new/llvm-project/mlir/lib/Analysis/Dominance.cpp:14: 
>>
>> /root/LLVM/llvm-project-new/llvm-project/llvm/include/llvm/ADT/STLExtras.h:217:16: 
>>
>> note:   in call to ‘FuncReturnTy llvm::mapped_iterator<ItTy, FuncTy,
>> FuncReturnTy>::operator*() [with ItTy =
>> mlir::ValueUseIterator<mlir::BlockOperand>; FuncTy = mlir::Block*
>> (*)(mlir::BlockOperand&); FuncReturnTy = mlir::Block*]’
>>     FuncReturnTy operator*() { return F(*this->I); }


More information about the flang-dev mailing list