From 5bc0ec81295783f912b11db73e9d6dce983daef0 Mon Sep 17 00:00:00 2001 From: Marek Polacek Date: Tue, 13 Jan 2026 20:03:12 -0500 Subject: [PATCH] Compare ARRAY_REF and COMPONENT_REF using cp_tree_equal --- gcc/cp/reflect.cc | 4 ---- gcc/testsuite/g++.dg/reflect/reflect_object1.C | 2 ++ 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/gcc/cp/reflect.cc b/gcc/cp/reflect.cc index 3b7685506c6..329fd77c464 100644 --- a/gcc/cp/reflect.cc +++ b/gcc/cp/reflect.cc @@ -8276,10 +8276,6 @@ compare_reflections (tree lhs, tree rhs) { case ARRAY_REF: case COMPONENT_REF: - return (TREE_TYPE (lhs) == TREE_TYPE (rhs) - && TREE_OPERAND (lhs, 0) == TREE_OPERAND (rhs, 0) - && TREE_OPERAND (lhs, 1) == TREE_OPERAND (rhs, 1) - && TREE_OPERAND (lhs, 2) == TREE_OPERAND (rhs, 2)); case REAL_CST: return cp_tree_equal (lhs, rhs); default: diff --git a/gcc/testsuite/g++.dg/reflect/reflect_object1.C b/gcc/testsuite/g++.dg/reflect/reflect_object1.C index 6079c185ca1..d330984860a 100644 --- a/gcc/testsuite/g++.dg/reflect/reflect_object1.C +++ b/gcc/testsuite/g++.dg/reflect/reflect_object1.C @@ -11,6 +11,8 @@ struct S { int m; }; template void fn(); int p[2]; static_assert(template_arguments_of(^^fn)[0] == reflect_object(p[1])); +int pp[2][2]; +static_assert(template_arguments_of(^^fn)[0] == reflect_object(pp[1][1])); template void