This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/52329] New: Invalid MEM_REF encountered in set_mem_attributes_minus_bitpos
- From: "jamborm at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 21 Feb 2012 17:49:37 +0000
- Subject: [Bug middle-end/52329] New: Invalid MEM_REF encountered in set_mem_attributes_minus_bitpos
- Auto-submitted: auto-generated
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52329
Bug #: 52329
Summary: Invalid MEM_REF encountered in
set_mem_attributes_minus_bitpos
Classification: Unclassified
Product: gcc
Version: 4.7.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: middle-end
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: jamborm@gcc.gnu.org
CC: jakub@gcc.gnu.org
Host: x86_64-suse-linux
Target: x86_64-suse-linux
Build: x86_64-suse-linux
Created attachment 26716
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=26716
Preprocessed source
Bootstrapping revision 184388 with the following patch
Index: gcc/emit-rtl.c
===================================================================
--- gcc/emit-rtl.c (revision 184388)
+++ gcc/emit-rtl.c (working copy)
@@ -1681,6 +1681,7 @@ set_mem_attributes_minus_bitpos (rtx ref
MEM_NOTRAP_P (ref) = !tree_could_trap_p (t);
base = get_base_address (t);
+ gcc_assert (base);
if (base && DECL_P (base)
&& TREE_READONLY (base)
&& (TREE_STATIC (base) || DECL_EXTERNAL (base))
causes an ICE when compiling libstdc++-v3/src/c++98/complex_io.cc
because get_base_address stumbles upon encountering an invalid
MEM_REF
MEM[(struct basic_stringbuf *)&__s._M_stringbuf]._M_string
and returns NULL.
This expression is passed to it by expand_debug_expr via
set_mem_attributes.
Attached is the preprocessed testcase, invocation flags
are -g -O2 -S