From c38422135e51852cdfe3236176afd0e2e3c53707 Mon Sep 17 00:00:00 2001 From: Maximilian Downey Twiss <creatorsmithmdt@gmail.com> Date: Fri, 18 Nov 2022 09:16:15 +1100 Subject: [PATCH 14/56] middle-end: Set TREE_ADDRESSABLE in folding debug stmts.
gcc/ChangeLog: * gimple-fold.cc (canonicalize_constructor_val): Set TREE_ADDRESSABLE. gcc/testsuite/ChangeLog: * g++.dg/tree-ssa/array-temp1.C: Adjust. --- gcc/gimple-fold.cc | 4 +--- gcc/testsuite/g++.dg/tree-ssa/array-temp1.C | 6 ++++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/gcc/gimple-fold.cc b/gcc/gimple-fold.cc index efc0354566e..e788d4a79db 100644 --- a/gcc/gimple-fold.cc +++ b/gcc/gimple-fold.cc @@ -248,9 +248,7 @@ canonicalize_constructor_val (tree cval, tree from_decl) if (TREE_TYPE (base) == error_mark_node) return NULL_TREE; if (VAR_P (base)) - /* ??? We should be able to assert that TREE_ADDRESSABLE is set, - but since the use can be in a debug stmt we can't. */ - ; + TREE_ADDRESSABLE (base) = 1; else if (TREE_CODE (base) == FUNCTION_DECL) { /* Make sure we create a cgraph node for functions we'll reference. diff --git a/gcc/testsuite/g++.dg/tree-ssa/array-temp1.C b/gcc/testsuite/g++.dg/tree-ssa/array-temp1.C index 3df7aadd30a..97c2e0521c9 100644 --- a/gcc/testsuite/g++.dg/tree-ssa/array-temp1.C +++ b/gcc/testsuite/g++.dg/tree-ssa/array-temp1.C @@ -13,3 +13,9 @@ int f() using AR = const int[]; return AR{ 1,42,3,4,5,6,7,8,9,0 }[5]; } + +int g() +{ + std::initializer_list<int> a = {1,42,3}; + return a.begin()[0]; +} -- 2.38.1