https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111903
--- Comment #4 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The trunk branch has been updated by Andrew Pinski <pins...@gcc.gnu.org>: https://gcc.gnu.org/g:13c0d052478bb45cc97869f5cc333f269aadb36f commit r14-4858-g13c0d052478bb45cc97869f5cc333f269aadb36f Author: Andrew Pinski <pins...@gmail.com> Date: Fri Oct 20 14:47:55 2023 -0700 convert_to_complex vs invalid_conversion [PR111903] convert_to_complex when creating a COMPLEX_EXPR does not currently check if either the real or imag parts was not error_mark_node. This later on confuses the gimpilfier when there was a SAVE_EXPR wrapped around that COMPLEX_EXPR. The simple fix is after calling convert inside convert_to_complex_1, check that the either result was an error_operand and return an error_mark_node in that case. Bootstrapped and tested on x86_64-linux-gnu with no regressions. PR c/111903 gcc/ChangeLog: * convert.cc (convert_to_complex_1): Return error_mark_node if either convert was an error when converting from a scalar. gcc/testsuite/ChangeLog: * gcc.target/i386/float16-8.c: New test.