[Bug rtl-optimization/20182] Improper code generation causes stack corruption

jay at systech dot com gcc-bugzilla@gcc.gnu.org
Thu Feb 24 13:47:00 GMT 2005


------- Additional Comments From jay at systech dot com  2005-02-23 23:29 -------
Subject: RE:  Improper code generation causes 
	stack corruption

I tried the -fno-strict-aliasing option, but this generates the same code.
Although this may violate aliasing rules, the compiler is not messing up
with the '&V42Parms', but the 'Size' argument.  The problem seems to me to
be:

	FunctionB(int *pSize)
	{
	}

	FunctionA(int Size)
	{
		FunctionB(&Size);
	}

When code calls FunctionA(), it passes Size in a register.  When FunctionA
tries to pass the address of Size to FunctionB(), it must first make a local
copy of Size on the stack (or somewhere in memory), so that it can take the
address of it.  This is where things are going wrong.

Jay
-----Original Message-----
From: pinskia at gcc dot gnu dot org [mailto:gcc-bugzilla@gcc.gnu.org]
Sent: Wednesday, February 23, 2005 3:05 PM
To: jay@systech.com
Subject: [Bug rtl-optimization/20182] Improper code generation causes
stack corruption



------- Additional Comments From pinskia at gcc dot gnu dot org  2005-02-23
23:05 -------
You are violating aliasing rules:
(uint16 *)&V42Parms

try with -fno-strict-aliasing or with an union.  Please read
http://gcc.gnu.org/bugs.html which talks 
about this problem.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|critical                    |normal
             Status|UNCONFIRMED                 |RESOLVED
          Component|c                           |rtl-optimization
         Resolution|                            |INVALID


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20182

------- You are receiving this mail because: -------
You reported the bug, or are watching the reporter.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20182



More information about the Gcc-bugs mailing list