<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/76519>76519</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[Flang][OpenMP] compilation error in Semantics
</td>
</tr>
<tr>
<th>Labels</th>
<td>
flang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
jeinstei
</td>
</tr>
</table>
<pre>
I was following the instructions laid out in `flang/docs/GettingStarted.md`, and finding that the ninja compile is failing due to possible dangling references in the omp Semantics, and possible also mod-file. The error is reproduced below.
I'm running an Arch variant (EndeavourOS) with `gcc (GCC) 13.2.1 20230801` on commit 04873773.
I'm happy to try different things to handle this, but it won't happen in the next few days.
```
FAILED: tools/flang/lib/Semantics/CMakeFiles/obj.FortranSemantics.dir/check-omp-structure.cpp.o
/usr/bin/c++ -DFLANG_INCLUDE_TESTS=1 -DFLANG_LITTLE_ENDIAN=1 -DGTEST_HAS_RTTI=0 -D_DEBUG -D_GLIBCXX_ASSERTIONS -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/data/devtools/root/build/tools/flang/lib/Semantics -I/data/devtools/root/llvm-project/flang/lib/Semantics -I/data/devtools/root/llvm-project/flang/include -I/data/devtools/root/build/tools/flang/include -I/data/devtools/root/build/include -I/data/devtools/root/llvm-project/llvm/include -isystem /data/devtools/root/llvm-project/llvm/../mlir/include -isystem /data/devtools/root/build/tools/mlir/include -isystem /data/devtools/root/build/tools/clang/include -isystem /data/devtools/root/llvm-project/llvm/../clang/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -fno-lifetime-dse -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-maybe-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -Werror -Wno-deprecated-copy -Wno-ctad-maybe-unsupported -fno-strict-aliasing -fno-semantic-interposition -O3 -DNDEBUG -std=c++17 -fno-exceptions -funwind-tables -fno-rtti -UNDEBUG -MD -MT tools/flang/lib/Semantics/CMakeFiles/obj.FortranSemantics.dir/check-omp-structure.cpp.o -MF tools/flang/lib/Semantics/CMakeFiles/obj.FortranSemantics.dir/check-omp-structure.cpp.o.d -o tools/flang/lib/Semantics/CMakeFiles/obj.FortranSemantics.dir/check-omp-structure.cpp.o -c /data/devtools/root/llvm-project/flang/lib/Semantics/check-omp-structure.cpp
/data/devtools/root/llvm-project/flang/lib/Semantics/check-omp-structure.cpp: In member function ‘void Fortran::semantics::OmpStructureChecker::ErrIfLHSAndRHSSymbolsMatch(const Fortran::parser::Variable&, const Fortran::parser::Expr&)’:
/data/devtools/root/llvm-project/flang/lib/Semantics/check-omp-structure.cpp:1777:19: error: possibly dangling reference to a temporary [-Werror=dangling-reference]
1777 | const Symbol &varSymbol = evaluate::GetSymbolVector(*v).front();
| ^~~~~~~~~
/data/devtools/root/llvm-project/flang/lib/Semantics/check-omp-structure.cpp:1777:67: note: the temporary was destroyed at the end of the full expression ‘(& Fortran::evaluate::GetSymbolVector(const A&) [with A = Expr<SomeType>; SymbolVector = std::vector<Fortran::common::Reference<const Fortran::semantics::Symbol> >]().std::vector<Fortran::common::Reference<const Fortran::semantics::Symbol> >::front())->Fortran::common::Reference<const Fortran::semantics::Symbol>::operator std::conditional_t<true, const Fortran::semantics::Symbol&, void>()’
1777 | const Symbol &varSymbol = evaluate::GetSymbolVector(*v).front();
| ^
/data/devtools/root/llvm-project/flang/lib/Semantics/check-omp-structure.cpp: In member function ‘void Fortran::semantics::OmpStructureChecker::CheckAtomicUpdateStmt(const Fortran::parser::AssignmentStmt&)’:
/data/devtools/root/llvm-project/flang/lib/Semantics/check-omp-structure.cpp:1923:19: error: possibly dangling reference to a temporary [-Werror=dangling-reference]
1923 | const Symbol &varSymbol = evaluate::GetSymbolVector(*v).front();
| ^~~~~~~~~
/data/devtools/root/llvm-project/flang/lib/Semantics/check-omp-structure.cpp:1923:67: note: the temporary was destroyed at the end of the full expression ‘(& Fortran::evaluate::GetSymbolVector(const A&) [with A = Expr<SomeType>; SymbolVector = std::vector<Fortran::common::Reference<const Fortran::semantics::Symbol> >]().std::vector<Fortran::common::Reference<const Fortran::semantics::Symbol> >::front())->Fortran::common::Reference<const Fortran::semantics::Symbol>::operator std::conditional_t<true, const Fortran::semantics::Symbol&, void>()’
1923 | const Symbol &varSymbol = evaluate::GetSymbolVector(*v).front();
| ^
cc1plus: all warnings being treated as errors
[5546/7100] Building CXX object tools/flang/lib/...akeFiles/obj.FortranSemantics.dir/mod-file.cpp.o
FAILED: tools/flang/lib/Semantics/CMakeFiles/obj.FortranSemantics.dir/mod-file.cpp.o
/usr/bin/c++ -DFLANG_INCLUDE_TESTS=1 -DFLANG_LITTLE_ENDIAN=1 -DGTEST_HAS_RTTI=0 -D_DEBUG -D_GLIBCXX_ASSERTIONS -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/data/devtools/root/build/tools/flang/lib/Semantics -I/data/devtools/root/llvm-project/flang/lib/Semantics -I/data/devtools/root/llvm-project/flang/include -I/data/devtools/root/build/tools/flang/include -I/data/devtools/root/build/include -I/data/devtools/root/llvm-project/llvm/include -isystem /data/devtools/root/llvm-project/llvm/../mlir/include -isystem /data/devtools/root/build/tools/mlir/include -isystem /data/devtools/root/build/tools/clang/include -isystem /data/devtools/root/llvm-project/llvm/../clang/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -fno-lifetime-dse -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-maybe-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -Werror -Wno-deprecated-copy -Wno-ctad-maybe-unsupported -fno-strict-aliasing -fno-semantic-interposition -O3 -DNDEBUG -std=c++17 -fno-exceptions -funwind-tables -fno-rtti -UNDEBUG -MD -MT tools/flang/lib/Semantics/CMakeFiles/obj.FortranSemantics.dir/mod-file.cpp.o -MF tools/flang/lib/Semantics/CMakeFiles/obj.FortranSemantics.dir/mod-file.cpp.o.d -o tools/flang/lib/Semantics/CMakeFiles/obj.FortranSemantics.dir/mod-file.cpp.o -c /data/devtools/root/llvm-project/flang/lib/Semantics/mod-file.cpp
/data/devtools/root/llvm-project/flang/lib/Semantics/mod-file.cpp: In function ‘void Fortran::semantics::PutInit(llvm::raw_ostream&, const Symbol&, const MaybeExpr&, const Fortran::parser::Expr*, const std::map<const Symbol*, Fortran::parser::CharBlock>&)’:
/data/devtools/root/llvm-project/flang/lib/Semantics/mod-file.cpp:912:23: error: possibly dangling reference to a temporary [-Werror=dangling-reference]
912 | const Symbol &dtSym{dtConst->result().derivedTypeSpec().typeSymbol()};
| ^~~~~
/data/devtools/root/llvm-project/flang/lib/Semantics/mod-file.cpp:912:75: note: the temporary was destroyed at the end of the full expression ‘(& dtConst->Fortran::evaluate::Constant<Fortran::evaluate::SomeKind<Fortran::common::TypeCategory::Derived> >::<anonymous>.Fortran::evaluate::ConstantBase<Fortran::evaluate::SomeKind<Fortran::common::TypeCategory::Derived>, std::map<Fortran::common::Reference<const Fortran::semantics::Symbol>, Fortran::common::Indirection<Fortran::evaluate::Expr<Fortran::evaluate::SomeType>, true>, Fortran::evaluate::ComponentCompare> >::result().Fortran::evaluate::SomeKind<Fortran::common::TypeCategory::Derived>::derivedTypeSpec())->Fortran::semantics::DerivedTypeSpec::typeSymbol()’
912 | const Symbol &dtSym{dtConst->result().derivedTypeSpec().typeSymbol()};
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
cc1plus: all warnings being treated as errors
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsOltT47jSv0a8qORybHJ74MGxEzb1cdkimWXeUorVTjQrS_4kOUz2YX_7KclOIBkYhllg59TBRQWr1epWt1p9K1Nj-EoCnKHuCHWzE1rbtdJnX4BLY4GfLBXbnk3xHTW4UEKoOy5X2K4Bu3ld55YrabCgnGFVW8wlRr2wEFSuUDRhKjcompyDtVyuZpZqCywoGeqFKEoxlQwXXLKGJLWeruTyC8W5KisuAHODC8qFw2A1YKtwpYzhSwGYUbnyExoK0CBzMI69o6HKCs-gpNJyt4GG034hFUbhUjFScAEBnq8Bg9ZKO2YaKq1YnQPDSxDqLkBhhsKk-Z2iqF9iXUvp2FKJE52v8YZqTqXFKBqMJQO6UbW-nqFoiO-4XTt1rPLczZ6nqYN24iAKOjgKozgchB3UC7GSTuCSWxyeDvpxvx8H-FvGa1pVW6cCq7eY8cJL7ZTG5co4-JpKJsABvNBLdx4W3ymJor71y0HuVCThq8UF3GFGt-ZASnc4zZ8fTpLpxThDcYKtUsId5-50BV-iaPJAz5P0kv4JEy7ADdTySzBR2moq9zgB4xpFk3wN-Z9ElRVpbKjWEORVFaid1NGkNg5xyaVDR9EIRSNMsslFcnW-mF6lF5-y8WI-ns1nKM46-5mL6Xx-MV6Mr7JpctXOnDu0xW_JbHEzn09RnIWYZItsPPp07l7OL6aj9PPnRTKbjW_m0-urmYdefVrMrj_dpGM3WszmWbpIr69m8-RqvrhM0pvr2f3E5PrmMvkWfDG9nN5Dp-4-UEvdP9jsdKmVsk7OmguGoskzKn6GihCbklRafYHcvjYRLnNRM_hJOV62-sewjzbqhg_XcrM1Fkr8chJBgKJJKbylvojcsfSvQSM_1uA_lOsbesXv0xSTQipiWgshXFrQlTLcOXdMig03fMkFt1vCpeASDFlzxkBicus9J4ozRi0Qy0toaAlegBsRZgCTWyqEw_1qNcXkVipSy9oAIxXVtAQLGpPbO80tOIfg3Rm5zamx5P9rKpoVJTeGyxUpOAhGuOSWU8H_Am0wqYD5nTeYQsmV_8HklpeV4Dm3pKBC2LVW9Wrd0qPbJZBa3lNizYRUUtai5ZoLagwpoaR5DsY0QA2slo4jKdUGGlgFxvCS_-W2eA-VCr7mUFlit5UDMRBgwbEgG65tTQVhVjnpTb1agbFEbUBrztr1Lio4H7_TgADqoiXhkoG0tDmf29xStpfH1FWlXJzFpGCcrqQy7taTXAnHqChq6YM2MdAGb1I4Q3owbg61Ycqg0pBTC4zkqtq223qKobMiq3luCRWcuvP6vmldx5hkV60vNpahOGudfaePm6WNAtuN1vKOS0YsXQowzby2lmPyaUfkMsPkcv4usYpcTt6DT8AwUe8jUP4Sr_L0Tp7gsI_tb8chTvBU4hLKJWi8s3SMxhEahGg42CjOcKsWFCcoTsyeqB9el9VsRzB1PEA3E2Otp8XFb7NEspvfZrNtuVTCXFKbr1E0yJU09pBuRbXZrf3DJYhLASjqubTsGezx10p7zOFu20M38R666_T7fffPMcStY092efP2kYTbJZ0UWygrpaneYtQdPYwIDTrZo6Nu1siBHSeM-il2T6OQRqcYRb0N1btBnGHYUFFTC412zsE2c39AbpVG0QBFyQZFw6DQSlo_HqJ41PLxz47P4YO647_b5z2V23M_WCovkM_E79XniiwGxmq1BYbbeggkw6rwr4ULS_C10i7WPLRrL3bv0Kae01uj9aQxNXdyvlpJvM69DcbpTJUw31aA4jGKR_ghAY_mHbajvmmIxunBDlzwUu37zd4G4vSRC3B0DRtOKB5jx7qbNccavBM_D3poTtGQoHj82ryaoapAU6fQvXC5ksyHRyoWFsWp1TU84TceJ924GefrHJdGhL0r-WXu30sf1B3_NwcQP0isKnn-qXLJ8syW9vnYkfj2jMsBG_x_Jy4Mo_id4sIwiv_X4kKj3I-48BEXfoG48O_fv5-OC3neqUTtRMZUCHxHtfSdhCX4_rIGV8RiahoPZtrL3R11u6c9FE36nTBE3QyPai58Rzr9_BmrpbvZTxRfQRD8WMW17zX7Muvt2qqHfD56qR-91I9e6kcv9aOX-tFL_UV6qUcB6nUbqIfEX7trerz1V2qVPiT7iuXGAdmmpv2JYvb32k4ld8mb93oepundQhmXTZUH_cyDHLMBXTqj3rczf7Dxmdxj7jPfklb7FHrHx-M9SStdUz0SKv_TZ7pvWDQfKXrYiVCc-ILubQtlPOxEBwn0cbLOXD6O-iNmUzfjChUNphZtKh4w0HwDzJVxswryFupc607DPmPvZz-ctLeF81srt999u0L5gbK-UzN7HCrtcZ15iOWK5P_jkn2vGnXaT6mFldLbBpI1x3JQcqI4pVLJbalcdTMOfmBrI2rgbbfnrt_RBX31Qvj4hj-kOZWM6ybKfl_QtmfxjCp27Ywoxb6ufoT7sabLSkmQ1r1QDQcndnDT3vIQ_PjRq_xYc-JI0dnROg_8xgMcdQh-QcfTPH-_6HHO6p-0DQ6_kTphZzEbxkN6Amedfhj3B73T0_BkfdYbDOLwdBDTDnShyxjr9ZYs6sVABwWNTqMTfhaFUdyJokFnEIanYRB16RJOl8NoEMfdbjhEpyGUlIvAec1A6dUJN6aGs36v2xmeCLoEYfy3e1HUOtIIdbMTfea97LJeGXQaCm6suadguRX-g7-JX9HNUHd0XYG8_B11s_bTuyYfbr-Lk_df053UWpytra28EUUTFE1W3K7rZZCr8r4-OvLxfs_Opftt_ycAAP__fr0uQg">