diff mbox series

[06/11] gcc: Handle location wrappers in operand_equal_p

Message ID 1510973563-10046-7-git-send-email-dmalcolm@redhat.com
State New
Headers show
Series C++: locations for (almost) everything (PR 43486) | expand

Commit Message

David Malcolm Nov. 18, 2017, 2:52 a.m. UTC
Fixes e.g. c-c++-common/Wsizeof-pointer-memaccess1.c

gcc/ChangeLog:
	* fold-const.c (operand_equal_p): Handle location wrappers.
	* tree.c (inchash::add_expr): Likewise.
---
 gcc/fold-const.c | 3 +++
 gcc/tree.c       | 1 +
 2 files changed, 4 insertions(+)
diff mbox series

Patch

diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index e9cd968..ababa68 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -2802,6 +2802,9 @@  operand_equal_p (const_tree arg0, const_tree arg1, unsigned int flags)
 	  != TYPE_ADDR_SPACE (TREE_TYPE (TREE_TYPE (arg1)))))
     return 0;
 
+  STRIP_ANY_LOCATION_WRAPPER (arg0);
+  STRIP_ANY_LOCATION_WRAPPER (arg1);
+
   /* Check equality of integer constants before bailing out due to
      precision differences.  */
   if (TREE_CODE (arg0) == INTEGER_CST && TREE_CODE (arg1) == INTEGER_CST)
diff --git a/gcc/tree.c b/gcc/tree.c
index f71b484..6ef290d 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -7092,6 +7092,7 @@  add_expr (const_tree t, inchash::hash &hstate, unsigned int flags)
 
   if (!(flags & OEP_ADDRESS_OF))
     STRIP_NOPS (t);
+  STRIP_ANY_LOCATION_WRAPPER (t);
 
   code = TREE_CODE (t);