From 4e24cdcf92874a469992122d567a27f8e9f2c3d5 Mon Sep 17 00:00:00 2001 From: Kwok Cheung Yeung Date: Thu, 12 Mar 2020 07:38:02 -0700 Subject: [PATCH] Fix ICE in libgomp.oacc-c++/ref-1.C 2020-03-12 Kwok Cheung Yeung gcc/ * omp-sese.c (install_var_field): Generate a field name for a VAR_DECL using the DECL_UID if it does not have a DECL_NAME. --- gcc/ChangeLog.omp | 5 +++++ gcc/omp-sese.c | 24 ++++++++++++++++-------- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/gcc/ChangeLog.omp b/gcc/ChangeLog.omp index 71d5c5fddbf8..409c0f41f5b1 100644 --- a/gcc/ChangeLog.omp +++ b/gcc/ChangeLog.omp @@ -1,3 +1,8 @@ +2020-03-12 Kwok Cheung Yeung + + * omp-sese.c (install_var_field): Generate a field name for a VAR_DECL + using the DECL_UID if it does not have a DECL_NAME. + 2019-10-21 Julian Brown * omp-oacc-kernels-decompose.cc (decompose_kernels_region_body): Add diff --git a/gcc/omp-sese.c b/gcc/omp-sese.c index cfdbb803929a..8138de8eef42 100644 --- a/gcc/omp-sese.c +++ b/gcc/omp-sese.c @@ -543,20 +543,28 @@ install_var_field (tree var, tree record_type) char tmp[20]; if (TREE_CODE (var) == SSA_NAME) - name = SSA_NAME_IDENTIFIER (var); + { + name = SSA_NAME_IDENTIFIER (var); + if (!name) + { + sprintf (tmp, "_%u", (unsigned) SSA_NAME_VERSION (var)); + name = get_identifier (tmp); + } + } else if (TREE_CODE (var) == VAR_DECL) - name = DECL_NAME (var); + { + name = DECL_NAME (var); + if (!name) + { + sprintf (tmp, "D_%u", (unsigned) DECL_UID (var)); + name = get_identifier (tmp); + } + } else gcc_unreachable (); gcc_assert (!fields->get (var)); - if (!name) - { - sprintf (tmp, "_%u", (unsigned) SSA_NAME_VERSION (var)); - name = get_identifier (tmp); - } - tree type = TREE_TYPE (var); if (POINTER_TYPE_P (type) -- 2.47.3