f18-llvm-project icon indicating copy to clipboard operation
f18-llvm-project copied to clipboard

fatal internal error: CHECK(p) failed at flang/f18-llvm-project/flang/include/flang/Semantics/symbol.h(552)

Open oroppas opened this issue 4 years ago • 1 comments

bbc crashed.

module broyden_func_interface
    abstract interface
        function broyden_func(x)
            real(8), dimension(:), intent(in) :: x
            real(8), dimension(size(x))       :: broyden_func
        end function
    end interface
end module


subroutine fdjac(x,df)
    use broyden_func_interface
    implicit none

    procedure(broyden_func), pointer :: funcv

    real(8), dimension(:), intent(inout) :: x
    real(8), dimension(:,:), intent(out) :: df

    df(:,1) = funcv(x)
end

with stack dump

Stack dump:
0.  Program arguments: /home/ryuta/packages/llvm/flang/build/bin/bbc check_p.f90
 #0 0x00007fa7d74f0c73 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/ryuta/packages/llvm/flang/build/lib/libLLVMSupport.so.13git+0x229c73)
 #1 0x00007fa7d74ee57e llvm::sys::RunSignalHandlers() (/home/ryuta/packages/llvm/flang/build/lib/libLLVMSupport.so.13git+0x22757e)
 #2 0x00007fa7d74f12ef SignalHandler(int) Signals.cpp:0:0
 #3 0x00007fa7db644630 __restore_rt sigaction.c:0:0
 #4 0x00007fa7d6afa387 raise (/lib64/libc.so.6+0x36387)
 #5 0x00007fa7d6afba78 abort (/lib64/libc.so.6+0x37a78)
 #6 0x00007fa7d7eb4e86 (/home/ryuta/packages/llvm/flang/build/lib/libFortranCommon.so.13git+0x2e86)
 #7 0x00007fa7db53a4b3 Fortran::lower::mapCallInterfaceSymbols(Fortran::lower::AbstractConverter&, Fortran::lower::CallerInterface const&, Fortran::lower::SymMap&) (/home/ryuta/packages/llvm/flang/build/lib/libFortranLower.so.13git+0x40d4b3)
 #8 0x00007fa7db386afd (anonymous namespace)::ScalarExprLowering::genProcedureRef(Fortran::evaluate::ProcedureRef const&, llvm::Optional<mlir::Type>) ConvertExpr.cpp:0:0
 #9 0x00007fa7db3cc4c4 decltype(auto) std::__1::__variant_detail::__visitation::__base::__dispatcher<15ul>::__dispatch<std::__1::__variant_detail::__visitation::__variant::__value_visitor<fir::ExtendedValue (anonymous namespace)::ScalarExprLowering::genval<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 8> >(Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 8> > const&)::'lambda'(Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 8> const&)>&&, std::__1::__variant_detail::__base<(std::__1::__variant_detail::_Trait)1, Fortran::evaluate::ComplexComponent<8>, Fortran::evaluate::Parentheses<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 8> >, Fortran::evaluate::Negate<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 8> >, Fortran::evaluate::Add<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 8> >, Fortran::evaluate::Subtract<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 8> >, Fortran::evaluate::Multiply<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 8> >, Fortran::evaluate::Divide<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 8> >, Fortran::evaluate::Power<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 8> >, Fortran::evaluate::RealToIntPower<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 8> >, Fortran::evaluate::Extremum<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 8> >, Fortran::evaluate::Convert<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 8>, (Fortran::common::TypeCategory)0>, Fortran::evaluate::Convert<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 8>, (Fortran::common::TypeCategory)1>, Fortran::evaluate::Constant<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 8> >, Fortran::evaluate::ArrayConstructor<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 8> >, Fortran::evaluate::Designator<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 8> >, Fortran::evaluate::FunctionRef<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 8> > > const&>(Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 8>, std::__1::__variant_detail::__visitation::__variant::__value_visitor<fir::ExtendedValue (anonymous namespace)::ScalarExprLowering::genval<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 8> >(Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 8> > const&)::'lambda'(Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 8> const&)>&&...) ConvertExpr.cpp:0:0

oroppas avatar Jun 28 '21 23:06 oroppas

Procedure pointers are not yet lowered (dummy procedures are), I believe they are F2003. However, bbc should at least raise a clear TODO message for now.

jeanPerier avatar Jun 29 '21 12:06 jeanPerier