[PATCH] D87341: [flang] Fix check for distinguishable operators/assignments

Richard Barton via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Sep 11 00:48:31 PDT 2020


richard.barton.arm added a comment.

This commit missed adding a dependency from libFortranEvaluate and libFortranSemantics. Adding it back in introduces a circular dependency and so breaks shared library builds.

Here's the failure I see:

  9789.701 [508/8/3577] Linking CXX shared library lib/libFortranEvaluate.so.12git
  FAILED: : && /usr/local/bin/clang++ -fPIC -stdlib=libc++ -fPIC -fvisibility-inlines-hidden -Werror -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wstring-conversion -fdiagnostics-color -ffunction-sections -fdata-sections -Wno-deprecated-copy -Wno-string-conversion -Wno-unused-command-line-argument -Wstring-conversion           -Wcovered-switch-default -Wno-nested-anon-types -O3  -stdlib=libc++ -Wl,-z,defs -Wl,-z,nodelete   -Wl,-rpath-link,/home/flang_aarch64_ubuntu_clang/flang-aarch64-ubuntu-clang/build/./lib  -Wl,-O3 -Wl,--gc-sections -shared -Wl,-soname,libFortranEvaluate.so.12git -o lib/libFortranEvaluate.so.12git tools/flang/lib/Evaluate/CMakeFiles/obj.FortranEvaluate.dir/call.cpp.o tools/flang/lib/Evaluate/CMakeFiles/obj.FortranEvaluate.dir/characteristics.cpp.o tools/flang/lib/Evaluate/CMakeFiles/obj.FortranEvaluate.dir/check-expression.cpp.o tools/flang/lib/Evaluate/CMakeFiles/obj.FortranEvaluate.dir/common.cpp.o tools/flang/lib/Evaluate/CMakeFiles/obj.FortranEvaluate.dir/complex.cpp.o tools/flang/lib/Evaluate/CMakeFiles/obj.FortranEvaluate.dir/constant.cpp.o tools/flang/lib/Evaluate/CMakeFiles/obj.FortranEvaluate.dir/expression.cpp.o tools/flang/lib/Evaluate/CMakeFiles/obj.FortranEvaluate.dir/fold.cpp.o tools/flang/lib/Evaluate/CMakeFiles/obj.FortranEvaluate.dir/fold-character.cpp.o tools/flang/lib/Evaluate/CMakeFiles/obj.FortranEvaluate.dir/fold-complex.cpp.o tools/flang/lib/Evaluate/CMakeFiles/obj.FortranEvaluate.dir/fold-designator.cpp.o tools/flang/lib/Evaluate/CMakeFiles/obj.FortranEvaluate.dir/fold-integer.cpp.o tools/flang/lib/Evaluate/CMakeFiles/obj.FortranEvaluate.dir/fold-logical.cpp.o tools/flang/lib/Evaluate/CMakeFiles/obj.FortranEvaluate.dir/fold-real.cpp.o tools/flang/lib/Evaluate/CMakeFiles/obj.FortranEvaluate.dir/formatting.cpp.o tools/flang/lib/Evaluate/CMakeFiles/obj.FortranEvaluate.dir/host.cpp.o tools/flang/lib/Evaluate/CMakeFiles/obj.FortranEvaluate.dir/initial-image.cpp.o tools/flang/lib/Evaluate/CMakeFiles/obj.FortranEvaluate.dir/integer.cpp.o tools/flang/lib/Evaluate/CMakeFiles/obj.FortranEvaluate.dir/intrinsics.cpp.o tools/flang/lib/Evaluate/CMakeFiles/obj.FortranEvaluate.dir/intrinsics-library.cpp.o tools/flang/lib/Evaluate/CMakeFiles/obj.FortranEvaluate.dir/logical.cpp.o tools/flang/lib/Evaluate/CMakeFiles/obj.FortranEvaluate.dir/real.cpp.o tools/flang/lib/Evaluate/CMakeFiles/obj.FortranEvaluate.dir/shape.cpp.o tools/flang/lib/Evaluate/CMakeFiles/obj.FortranEvaluate.dir/static-data.cpp.o tools/flang/lib/Evaluate/CMakeFiles/obj.FortranEvaluate.dir/tools.cpp.o tools/flang/lib/Evaluate/CMakeFiles/obj.FortranEvaluate.dir/type.cpp.o tools/flang/lib/Evaluate/CMakeFiles/obj.FortranEvaluate.dir/variable.cpp.o  -Wl,-rpath,"\$ORIGIN/../lib"  lib/libFortranDecimal.so.12git  lib/libFortranParser.so.12git  lib/libFortranCommon.so.12git  lib/libLLVMSupport.so.12git  -Wl,-rpath-link,/home/flang_aarch64_ubuntu_clang/flang-aarch64-ubuntu-clang/build/lib && :
  tools/flang/lib/Evaluate/CMakeFiles/obj.FortranEvaluate.dir/tools.cpp.o: In function `Fortran::evaluate::AttachDeclaration(Fortran::parser::Message&, Fortran::semantics::Symbol const&)':
  tools.cpp:(.text._ZN7Fortran8evaluate17AttachDeclarationERNS_6parser7MessageERKNS_9semantics6SymbolE+0xa0): undefined reference to `Fortran::semantics::Scope::GetName() const'
  clang-10: error: linker command failed with exit code 1 (use -v to see invocation)

You can see the error on the shared library buildbot (still in the staging instance): http://lab.llvm.org:8014/builders/flang-aarch64-ubuntu-clang/builds/866/steps/build-unified-tree/logs/stdio.

If make libFortranEvaluate depend on libFortranSemantics in CMake, I get this more explicit error:

  CMake Error: The inter-target dependency graph contains the following strongly connected component (cycle):
    "FortranEvaluate" of type SHARED_LIBRARY
      depends on "FortranSemantics" (weak)
    "FortranSemantics" of type SHARED_LIBRARY
      depends on "FortranEvaluate" (weak)
  At least one of these targets is not a STATIC_LIBRARY.  Cyclic dependencies are allowed only among static libraries.
  CMake Generate step failed.  Build files cannot be regenerated correctly.




Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D87341



More information about the llvm-commits mailing list