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

Reply via email to