This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/23180] New: Segfault on const initializer with bogus pointer arithmetics
- From: "falk at debian dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 1 Aug 2005 14:22:51 -0000
- Subject: [Bug c++/23180] New: Segfault on const initializer with bogus pointer arithmetics
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
falk@juist:/tmp% cat bug.cc
void saveLoadEntries(const void *);
void saveOrLoad() {
struct Track {
char soundName[15];
};
struct SaveLoadEntry {
int offs;
int type;
int size;
};
const SaveLoadEntry trackEntries = {
((long) (&((Track *) 42)->soundName[0])) - 42,
0, 1
};
saveLoadEntries(&trackEntries);
}
falk@juist:/tmp% g++ -c bug.cc
bug.cc:15: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
In case anyone wonders, this comes from:
// * To work around a warning in GCC 3.2 (and 3.1 ?) regarding non-POD types[...]
#define OFFS(type,item) (((long)(&((type*)42)->type::item))-42)
This is of course invalid, but it'd be nice if it did what those folks wanted.
--
Summary: Segfault on const initializer with bogus pointer
arithmetics
Product: gcc
Version: 4.1.0
Status: UNCONFIRMED
Keywords: ice-on-invalid-code
Severity: normal
Priority: P2
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: falk at debian dot org
CC: gcc-bugs at gcc dot gnu dot org
GCC build triplet: alphaev68-unknown-linux-gnu
GCC host triplet: alphaev68-unknown-linux-gnu
GCC target triplet: alphaev68-unknown-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23180