This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/36303] location list incomplete for spilled registers
- From: "gcaprino at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 22 May 2008 23:03:35 -0000
- Subject: [Bug middle-end/36303] location list incomplete for spilled registers
- References: <bug-36303-16216@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #4 from gcaprino at gmail dot com 2008-05-22 23:03 -------
(In reply to comment #3)
> >I'm sorry, but I don't understand what you mean.
> *((unsigned int *)(&(p1)->data[0])),
> You are accessing a char array as an unsigned int which violates C/C++ aliasing
> rules and causes undefined code at runtime.
Ah, I see what you mean. Yes, you are right.
That came out of some macro expansion.
Unfortunately I can still see the problem in the
location list when I reference the array elements
without the casts:
_Log("abc",
(__FUNCTION__+((__FUNCTION__[(sizeof("FSS") - 1)] == '_') ?
(sizeof("FSS") - 1) + 1 : (sizeof("FSS") - 1))),
237 , (p1)->f1, (p1)->length,
p1->data[0], p1->data[4], p1->data[8],
p1->data[12], p1->data[16], p1->data[20],
p1->data[24], p1->data[28], p1->data[32],
p1->data[40], p1->data[48], p1->data[56], p2);
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36303