<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/78568>78568</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [Flang] ICE on `atand(x, y)`
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            flang
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          k-arrows
      </td>
    </tr>
</table>

<pre>
    Reproducer (use command line `flang-new atand.f90`)
```console
$ cat atand.f90
program p
   real x, y
   x = 1.
   y = x
   print *, atand(x, y)
end
```

Assertion failure:
```txt
flang-new: /tmp/llvm-project/flang/lib/Optimizer/Builder/IntrinsicCall.cpp:2124: mlir::Value fir::IntrinsicLibrary::genAtand(mlir::Type, llvm::ArrayRef<mlir::Value>): Assertion `args.size() == 1' failed.
```

Stack dump:
```console
 #0 0x000055e0852b1e2f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) 
 #1 0x000055e0852b24b0 SignalHandler(int) Signals.cpp:0:0
 #2 0x00007f53036af520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #3 0x00007f5303703a7c __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #4 0x00007f5303703a7c __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #5 0x00007f5303703a7c pthread_kill ./nptl/pthread_kill.c:89:10
 #6 0x00007f53036af476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
 #7 0x00007f53036957f3 abort ./stdlib/abort.c:81:7
 #8 0x00007f530369571b _nl_load_domain ./intl/loadmsgcat.c:1177:9
 #9 0x00007f53036a6e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#10 0x000055e086374b7d fir::IntrinsicLibrary::genAtand(mlir::Type, llvm::ArrayRef<mlir::Value>)
#11 0x000055e086392ff4 fir::ExtendedValue fir::IntrinsicLibrary::genElementalCall<mlir::Value (fir::IntrinsicLibrary::*)(mlir::Type, llvm::ArrayRef<mlir::Value>)>(mlir::Value (fir::IntrinsicLibrary::*)(mlir::Type, llvm::ArrayRef<mlir::Value>), llvm::StringRef, mlir::Type, llvm::ArrayRef<fir::ExtendedValue>, bool) 
#12 0x000055e086392ea2 fir::invokeHandler(mlir::Value (fir::IntrinsicLibrary::*)(mlir::Type, llvm::ArrayRef<mlir::Value>), fir::IntrinsicHandler const&, std::optional<mlir::Type>, llvm::ArrayRef<fir::ExtendedValue>, bool, fir::IntrinsicLibrary&) IntrinsicCall.cpp:0:0
#13 0x000055e086392d7c std::__detail::__variant::__gen_vtable_impl<std::__detail::__variant::_Multi_array<std::__detail::__variant::__deduce_visit_result<fir::ExtendedValue> (*)(fir::IntrinsicLibrary::genIntrinsicCall(llvm::StringRef, std::optional<mlir::Type>, llvm::ArrayRef<fir::ExtendedValue>)::$_1&&, std::variant<mlir::Value (fir::IntrinsicLibrary::*)(mlir::Type, llvm::ArrayRef<mlir::Value>), fir::ExtendedValue (fir::IntrinsicLibrary::*)(mlir::Type, llvm::ArrayRef<fir::ExtendedValue>), void (fir::IntrinsicLibrary::*)(llvm::ArrayRef<fir::ExtendedValue>)> const&)>, std::integer_sequence<unsigned long, 0ul>>::__visit_invoke(fir::IntrinsicLibrary::genIntrinsicCall(llvm::StringRef, std::optional<mlir::Type>, llvm::ArrayRef<fir::ExtendedValue>)::$_1&&, std::variant<mlir::Value (fir::IntrinsicLibrary::*)(mlir::Type, llvm::ArrayRef<mlir::Value>), fir::ExtendedValue (fir::IntrinsicLibrary::*)(mlir::Type, llvm::ArrayRef<fir::ExtendedValue>), void (fir::IntrinsicLibrary::*)(llvm::ArrayRef<fir::ExtendedValue>)> const&) IntrinsicCall.cpp:0:0
#14 0x000055e0863723ce fir::IntrinsicLibrary::genIntrinsicCall(llvm::StringRef, std::optional<mlir::Type>, llvm::ArrayRef<fir::ExtendedValue>) 
#15 0x000055e08638c596 fir::genIntrinsicCall(fir::FirOpBuilder&, mlir::Location, llvm::StringRef, std::optional<mlir::Type>, llvm::ArrayRef<fir::ExtendedValue>, Fortran::lower::AbstractConverter*) 
#16 0x000055e0857d42c9 genIntrinsicRefCore(llvm::SmallVector<std::optional<Fortran::lower::PreparedActualArgument>, 1u>&, Fortran::evaluate::SpecificIntrinsic const*, fir::IntrinsicArgumentLoweringRules const*, (anonymous namespace)::CallContext&) ConvertCall.cpp:0:0
#17 0x000055e0857d1284 genHLFIRIntrinsicRefCore(llvm::SmallVector<std::optional<Fortran::lower::PreparedActualArgument>, 1u>&, Fortran::evaluate::SpecificIntrinsic const*, fir::IntrinsicArgumentLoweringRules const*, (anonymous namespace)::CallContext&) ConvertCall.cpp:0:0
#18 0x000055e0857d02c8 genIntrinsicRef(Fortran::evaluate::SpecificIntrinsic const*, (anonymous namespace)::CallContext&) ConvertCall.cpp:0:0
#19 0x000055e0857cc428 Fortran::lower::convertCallToHLFIR(mlir::Location, Fortran::lower::AbstractConverter&, Fortran::evaluate::ProcedureRef const&, std::optional<mlir::Type>, Fortran::lower::SymMap&, Fortran::lower::StatementContext&) 
#20 0x000055e085914c70 std::__detail::__variant::__gen_vtable_impl<std::__detail::__variant::_Multi_array<std::__detail::__variant::__deduce_visit_result<hlfir::EntityWithAttributes> (*)(hlfir::EntityWithAttributes (anonymous namespace)::HlfirBuilder::gen<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>>(Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>> const&)::'lambda'(Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4> const&)&&, std::variant<Fortran::evaluate::ComplexComponent<4>, Fortran::evaluate::Parentheses<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>>, Fortran::evaluate::Negate<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>>, Fortran::evaluate::Add<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>>, Fortran::evaluate::Subtract<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>>, Fortran::evaluate::Multiply<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>>, Fortran::evaluate::Divide<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>>, Fortran::evaluate::Power<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>>, Fortran::evaluate::RealToIntPower<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>>, Fortran::evaluate::Extremum<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>>, Fortran::evaluate::Convert<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>, (Fortran::common::TypeCategory)0>, Fortran::evaluate::Convert<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>, (Fortran::common::TypeCategory)1>, Fortran::evaluate::Constant<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>>, Fortran::evaluate::ArrayConstructor<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>>, Fortran::evaluate::Designator<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>>, Fortran::evaluate::FunctionRef<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>>> const&)>, std::integer_sequence<unsigned long, 15ul>>::__visit_invoke(hlfir::EntityWithAttributes (anonymous namespace)::HlfirBuilder::gen<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>>(Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>> const&)::'lambda'(Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4> const&)&&, std::variant<Fortran::evaluate::ComplexComponent<4>, Fortran::evaluate::Parentheses<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>>, Fortran::evaluate::Negate<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>>, Fortran::evaluate::Add<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>>, Fortran::evaluate::Subtract<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>>, Fortran::evaluate::Multiply<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>>, Fortran::evaluate::Divide<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>>, Fortran::evaluate::Power<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>>, Fortran::evaluate::RealToIntPower<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>>, Fortran::evaluate::Extremum<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>>, Fortran::evaluate::Convert<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>, (Fortran::common::TypeCategory)0>, Fortran::evaluate::Convert<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>, (Fortran::common::TypeCategory)1>, Fortran::evaluate::Constant<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>>, Fortran::evaluate::ArrayConstructor<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>>, Fortran::evaluate::Designator<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>>, Fortran::evaluate::FunctionRef<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>>> const&) ConvertExprToHLFIR.cpp:0:0
#21 0x000055e085912d8b hlfir::EntityWithAttributes (anonymous namespace)::HlfirBuilder::gen<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>>(Fortran::evaluate::Expr<Fortran::evaluate::Type<(Fortran::common::TypeCategory)1, 4>> const&) ConvertExprToHLFIR.cpp:0:0
#22 0x000055e085904af7 hlfir::EntityWithAttributes (anonymous namespace)::HlfirBuilder::gen<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)1>>(Fortran::evaluate::Expr<Fortran::evaluate::SomeKind<(Fortran::common::TypeCategory)1>> const&) ConvertExprToHLFIR.cpp:0:0
#23 0x000055e0858fb2e8 hlfir::EntityWithAttributes (anonymous namespace)::HlfirBuilder::gen<Fortran::evaluate::SomeType>(Fortran::evaluate::Expr<Fortran::evaluate::SomeType> const&) ConvertExprToHLFIR.cpp:0:0
#24 0x000055e0858fb7fd Fortran::lower::convertExprToValue(mlir::Location, Fortran::lower::AbstractConverter&, Fortran::evaluate::Expr<Fortran::evaluate::SomeType> const&, Fortran::lower::SymMap&, Fortran::lower::StatementContext&) 
#25 0x000055e08576acdb (anonymous namespace)::FirConverter::genExprValue(Fortran::evaluate::Expr<Fortran::evaluate::SomeType> const&, Fortran::lower::StatementContext&, mlir::Location*) Bridge.cpp:0:0
#26 0x000055e0859802cc genOutputItemList(Fortran::lower::AbstractConverter&, mlir::Value, std::__cxx11::list<Fortran::parser::OutputItem, std::allocator<Fortran::parser::OutputItem>> const&, bool, bool, mlir::Value&, bool) IO.cpp:0:0
#27 0x000055e08597d063 Fortran::lower::genPrintStatement(Fortran::lower::AbstractConverter&, Fortran::parser::PrintStmt const&) 
#28 0x000055e085786fe5 (anonymous namespace)::FirConverter::genFIR(Fortran::lower::pft::Evaluation&, bool) Bridge.cpp:0:0
#29 0x000055e0857b9db7 (anonymous namespace)::FirConverter::lowerFunc(Fortran::lower::pft::FunctionLikeUnit&) Bridge.cpp:0:0
#30 0x000055e0857690b3 Fortran::lower::LoweringBridge::lower(Fortran::parser::Program const&, Fortran::semantics::SemanticsContext const&) 
#31 0x000055e0856ceba3 Fortran::frontend::CodeGenAction::beginSourceFileAction() 
#32 0x000055e0852d47ef Fortran::frontend::FrontendAction::beginSourceFile(Fortran::frontend::CompilerInstance&, Fortran::frontend::FrontendInputFile const&) 
#33 0x000055e0852c98b9 Fortran::frontend::CompilerInstance::executeAction(Fortran::frontend::FrontendAction&)
#34 0x000055e0852d7a3e Fortran::frontend::executeCompilerInvocation(Fortran::frontend::CompilerInstance*)
#35 0x000055e084f9243d fc1_main(llvm::ArrayRef<char const*>, char const*)
#36 0x000055e084f91426 main 
#37 0x00007f5303696d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#38 0x00007f5303696e40 call_init ./csu/../csu/libc-start.c:128:20
#39 0x00007f5303696e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#40 0x000055e084f90985 _start 
flang-new: error: unable to execute command: Aborted
flang-new: error: flang frontend command failed due to signal (use -v to see invocation)
flang-new version 18.0.0git (https://github.com/llvm/llvm-project.git 651a42ff65c3afc2a2ec6c7fc19009387757d686)
Target: x86_64-unknown-linux-gnu
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsW19zozgS_zTkRRUXiP8PefB44tvUzd5MTeb2HikhNY4uQnBCZJz99FcS2BjiOE6yGddWuWp2A7LU_dOvW60W0KRp-EoCXDnhJyf8fEFafVepq_tLolT1s7nIK_Z49R1qVbGWgkIOTtoGEK3KkkiGBJeAnMgtBJGrSwk_EdFEslmRuk7kOjh13M-OOzfX9h-tZFMJ6FtxgCjRO0Nsc62qlSIlqrtbhJACItDawQv0uG1bI8f_jLzZtuHRNqy397XiUiMHz804q8LBSS9kgwskmwDsb-3_500DSvNKooJw0Spw_Pmku17rrmVLgOPPkYOXuqwdvBTiobysVfVfoNrBS9vJNPPcwcuvteYl_xOUg5efWi6YvbqRWnHZcLogQsxoXTv-HHs4MHJLwZXB4M__IKIFVGxut4O-8FwR9di1rkDO-3kPI3881mBIMNC6lrlS5PE7FI6_mChw_GtDlT9HAxVO5BK1amYN_xMcnDg4NbxbWzg4tkwBmx1g9VYTeo9YW9ZP6Ry5B3Kw7yJ37bquG4bgJiHOPcDFDvTmsekuvhljW8k_FKEG2NBJkZ9Z1WgFpHRwZObOpba4t2q8iRoc5C665StJxG9EMmEsk_SjuuamN41r_9sKwr2guAh9149IEWIXWZp6o6-TKIuCS8Flu75cybb7gc6aahY5-JO7DnCIh4VjZPojmbHrk5iiLKv1nQLCsnsuRMbLWkAJUhNrpJmDl7LWwsHL3W4z6vjzwLhSHA3yg2PkSw1KEnFQcpw4_tzbYSPcJ3l32EFxSToRF03JDeIIrRprDyupu3TwcmbvHhsGdWNEVw1fO3ipCG_Aysax4893OIjHotMwLnxE8krpTrBmnflsU4fOMzMeJCRPJHg5yqTIREVYxqqS8M4uXNrpmuayWVHSifO82EDaMXs6mW0EafQ6V_JTSKMhBmPfGy2nyI-DPGa_KopsQXhjECkuimAAcb3WIBmwYyPcde_3wsTLp8oNYy8IsVtE-u4geT2S8GuVj3rfGj0r0x0v0JFi99NvpS9QXlViiJfGhHhqQiB4sBWXD9U9DIHzhKw81dPDQmar0f1-0GjW9apqEz7J2I-s5o6Jt3K3D8hmwgZCivZt-zt7iyHdn5LOYjpAzzIGmnCxuXsgihOpN7crkNmDJrkAu1c4_uLIkb-3QvOMmOkePyhjYNLF7IE3XGcKmlboQ0x1ca23-ctrfkTWaK8f-f6HmTXdeGmQedZ-Yy_acnGyYLTrcOOA-tcjOMgTXqCHirPXqH2DMa53VnPa23RrDZO6rEBlDfyvBUnB8RettIcehkRl8vEFclthhpl_vTtbx-0C2dklzy75Ppc8JroHk9QM-_SY9OfkfreTFYTjKSQ0TKNhCnvAbn9bcvW13p6Bo3Hi8qWi9lRzIMv5wA18WSmtiOw6iOon9H3neaMVoXpRyQdQ2uCej-mIRofKmAWYpmiXhe9QLCo1PqzelkSIP4DqSu1utzvzeg7QNwU1UcDmVLdEzNWqNXlxPwuvtRfRkxnBAxEt0dBrr4HygtMtxI0Xz_fnMBstXwwMY45WQDMa4-CEyEo-llXbIElKaGp7Pu_jlXGERSU1rDdLpefz-YUST2j1cBIYWn_7srz5fub2XdwmE25dTJOpyzo4efMs_3rE6RgxpQFOnl2zdJD2o7L-MtpTdgPNK5b9S4b_pioKrFXwHYq3HTueA3P7WP5O6n0Idjtpou0ReczslkI8fsaWegGN3b_XueJODCFcaq4f_8P13VxrxfNWQzM9YLzQ_SUv_c0M32xWm61tGjzGLtDZcjFdOrQqy0oOXRZEw6oyZ8LUMyYN-qT04Iq7XtfqI7WPc-suL4oFKXNGHBwfxvYOzSO1hxLaA-oXVVkLWJs_lbQBexHsW1KT9UoUSH0HjfGcj7TqQRT_gpW9PhmAOWMn1H7b5jbOnhCCjVC1eDwhhM_8gbNTOsG3bh85mf7vQMSP6kbqUwO5XmsFZVueEEKfcnwcgi5BO3ac-7dD7B2FuNEv7isfG3dNSmRxqLY_qpws_IB9o3ZaEMtWUpMed2f1j0Px_qeIXvjCY8Rz4nlOPM-J5znxPCee58TznHieE89z4nlOPKeZzuaRt8mu-ofUe598Y2_y2BazJEfnDPOtGebRvOMx725AivgEvN9WJfyTS_ba2f8ltL9L-ZtYH338FCZFjiE5EevbFzPv57AX9SZGgikjccFeevPVCe1eb_-CN19vJeGj33iF45eGEaEsf8lZllwNM984i5nghs1fy8O-Ke7_aMJ-lfBJcbaC_Y40_k4hTVxMKVqB_NrqutU3Gsov3ABKXusZ0w-Bdo_RWUbXa8_rZRn5E35qopqNggHJSAYRwszyaZLwzNhp9Bm-ztz8fYJ4p1eKbr7uJ3D8RUIaMzfyn7XcCuSmWKGz4BuIfXayveRSjyLKgHTyfj-JCgjf5Pjdq_PncNdF_8L2unNy64cjKg_54-SVfp6yPH49SAvHpHDH4Nykel_4Pfxb8g1xB1BOKlPiKHXz542--YajE7j78wTc2JhdHdSz8aCBkkjNaV8Dc7u57WPCfh-Y1LpEFHIyAV4oI0CyzcmEwT9Azi1BXVMOKy5vq1ZRWHIB_U99MdBW0ThRwiyIoTikaNnfHdA0pWuKtKy5AHVjj1IU9nG2X-WNrFttFDzD2Tj7wDRN8vQwZxMkXchfA231QNfxXOBRGYcfTJiNiQ-H4PSKB1QP293hdXzORzBG22hQpDjwGSqol5WEy-c-m6R3RA3fBHWHsHHbropoosILcIRsKc3QZ1q7E7HURVkmeE6zRhOlM0qEyLYFOLRpn5YI9UVI-wbN7hx_HtrapmjQOq33iSBwkR3DJddTRd2lkX5ppXc1P9gIxTtBJd0ndDSVfbPYK9yPTWgMt7IDd0KlmyYh6qSiPTWMoJTZWOeolSQXgHSFejfaFH_ausC8UhrYofG2FW08a1s52hUKItZa0X0RV19devlg2wAQ33HVdKIFPYBqeCWRl8zcmbvi2oy_07q2AREvHbxccX3X5jNalX015qQoc2ZGRaFHAlwUUUh9UlBMMNCIxgX1UtdN_SSOw5hFybAGfxC1ArN1oL4Gq5X3svopd2qxxnWNF-zKZ6mfkgu48mI3DBPPC4OLuyuMC0yKgMQUQs-PWOKlAD72IjeiUeKRC36FXRy4npd45hQUzJIwiUPAPlC3cAMWO4ELJeFiZqY1q9TqgjdNC1dxEkbJhSA5iMYW92Lcl59iJ_x8oa4sDXm7apzANQlYM0jQXAtbEby0I8LP6GZxjfrizyeVtJF70Spx9TriHby0OM3as1D_HwAA__-n-HjD">