[Bug tree-optimization/95569] New: ICE in tmmark:verify_ssa failed
qianchao9 at huawei dot com
gcc-bugzilla@gcc.gnu.org
Mon Jun 8 03:37:48 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95569
Bug ID: 95569
Summary: ICE in tmmark:verify_ssa failed
Product: gcc
Version: 11.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: qianchao9 at huawei dot com
Target Milestone: ---
Created attachment 48698
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=48698&action=edit
mark tree-addressable
Commit eb72dc663e9070b281be83a80f6f838a3a878822 introduces a ICE on AArch64.
Compiling this with -S -fgnu-tm -O0:
typedef int __attribute__ ((vector_size (16))) vectype;
vectype v;
void
foo (int c)
{
vectype *p = __builtin_malloc (sizeof (vectype));
__transaction_atomic
{
*p = v;
if (c)
__transaction_cancel;
}
}
gives:
testcase.c: In function ‘foo’:
testcase.c:5:1: error: virtual definition of statement not up to date
5 | foo (int c)
| ^~~
D.3669 = v.0_11;
during GIMPLE pass: tmmark
testcase.c:5:1: internal compiler error: verify_ssa failed
on the tmmark output is:
....
<L0>:
__builtin__ITM_memcpyRtWn (&D.3667, &v, 16);
v.0_11 = D.3667;
D.3668 = v.0_11;
__builtin__ITM_memcpyRnWt (p_4, &D.3668, 16);
...
the following fixes the latent bug - we failed to mark 'D.3668'
TREE_ADDRESSABLE (address-taken)
diff --git a/gcc/trans-mem.c b/gcc/trans-mem.c
index c23ecd2b31f..b6b9157006b 100644
--- a/gcc/trans-mem.c
+++ b/gcc/trans-mem.c
@@ -2424,6 +2424,7 @@ expand_assign_tm (struct tm_region *region,
gimple_stmt_iterator *gsi)
if (is_gimple_reg (rhs))
{
tree rtmp = create_tmp_var (TREE_TYPE (rhs));
+ TREE_ADDRESSABLE (rtmp) = 1;
rhs_addr = build_fold_addr_expr (rtmp);
gcall = gimple_build_assign (rtmp, rhs);
gsi_insert_before (gsi, gcall, GSI_SAME_STMT);
More information about the Gcc-bugs
mailing list