From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2153) id 6B0003858292; Mon, 10 Oct 2022 07:38:12 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 6B0003858292 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1665387492; bh=muTmxkBnKOjrgUfYMHbjz9nvVFYq2gjD/KjDLC1dfcM=; h=From:To:Subject:Date:From; b=KGYoMOSPIkAFw8j2r6WrARMfwRkV8HzJpdprUj49dlNzkhJew0a4hMjkUXS5TH5eS q1BiB/JsL2n0r5vj3nTinP2M6B1ZbaeO/n4p3uMK118SJJCBQrgWqjAmvvpSO7wL/R LKPCRlsrDM/xigtWNbAKFpGXyu84fWqv/I6lTJ3E= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Jakub Jelinek To: gcc-cvs@gcc.gnu.org Subject: [gcc r13-3188] openmp, fortran: Fix up IFN_ASSUME call X-Act-Checkin: gcc X-Git-Author: Jakub Jelinek X-Git-Refname: refs/heads/master X-Git-Oldrev: 59d27853f10fdefa32779d74056fb7d16a6bb965 X-Git-Newrev: 70f66a47fdf7d5f3837e475175b622abb5b985ad Message-Id: <20221010073812.6B0003858292@sourceware.org> Date: Mon, 10 Oct 2022 07:38:12 +0000 (GMT) List-Id: https://gcc.gnu.org/g:70f66a47fdf7d5f3837e475175b622abb5b985ad commit r13-3188-g70f66a47fdf7d5f3837e475175b622abb5b985ad Author: Jakub Jelinek Date: Mon Oct 10 09:34:35 2022 +0200 openmp, fortran: Fix up IFN_ASSUME call Like in other spots in trans-openmp.cc that create a TARGET_EXPR, the slot has to be created with create_tmp_var_raw, because gfc_create_var adds the var to BLOCK_VARS and that ICEs during expansion because gimple_add_tmp_var_fn has: gcc_assert (!DECL_CHAIN (tmp) && !DECL_SEEN_IN_BIND_EXPR_P (tmp)); assertion. Also, both C/C++ ensure the argument to IFN_ASSUME has boolean_type_node, it is easier if Fortran does that too. 2022-10-10 Jakub Jelinek * trans-openmp.cc (gfc_trans_omp_assume): Use create_tmp_var_raw instead of gfc_create_var for TARGET_EXPR slot creation. Create it with boolean_type_node and convert. Diff: --- gcc/fortran/trans-openmp.cc | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/gcc/fortran/trans-openmp.cc b/gcc/fortran/trans-openmp.cc index 8ea573f7d02..9bd4e6c7e1b 100644 --- a/gcc/fortran/trans-openmp.cc +++ b/gcc/fortran/trans-openmp.cc @@ -4588,11 +4588,14 @@ gfc_trans_omp_assume (gfc_code *code) t = se.expr; else { - tree var = gfc_create_var (TREE_TYPE (se.expr), NULL); + tree var = create_tmp_var_raw (boolean_type_node); + DECL_CONTEXT (var) = current_function_decl; stmtblock_t block2; gfc_init_block (&block2); gfc_add_block_to_block (&block2, &se.pre); - gfc_add_modify_loc (loc, &block2, var, se.expr); + gfc_add_modify_loc (loc, &block2, var, + fold_convert_loc (loc, boolean_type_node, + se.expr)); gfc_add_block_to_block (&block2, &se.post); t = gfc_finish_block (&block2); t = build4 (TARGET_EXPR, boolean_type_node, var, t, NULL, NULL);