backport: [multiple changes]

2009-07-28  H.J. Lu  <hongjiu.lu@intel.com>

	Backport from mainline:
	2009-07-30  Martin Jambor  <mjambor@suse.cz>

	PR tree-optimization/40570
	* gcc.c-torture/compile/pr40570.c: New test.

	2009-07-29  Richard Guenther  <rguenther@suse.de>

	PR c++/40834
	* g++.dg/torture/pr40834.C: New testcase.

From-SVN: r150487
This commit is contained in:
H.J. Lu 2009-08-05 14:45:15 +00:00 committed by H.J. Lu
parent 4c0fa9f589
commit fcb9d7e164
3 changed files with 87 additions and 0 deletions

View File

@ -1,3 +1,16 @@
2009-07-28 H.J. Lu <hongjiu.lu@intel.com>
Backport from mainline:
2009-07-30 Martin Jambor <mjambor@suse.cz>
PR tree-optimization/40570
* gcc.c-torture/compile/pr40570.c: New test.
2009-07-29 Richard Guenther <rguenther@suse.de>
PR c++/40834
* g++.dg/torture/pr40834.C: New testcase.
2009-08-05 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/40924

View File

@ -0,0 +1,52 @@
/* { dg-do run } */
extern "C" void abort (void);
class XalanDOMString
{
public:
int y;
};
class XObject
{
public:
const XalanDOMString& str() const { return x; }
XalanDOMString x;
};
class XObjectPtr
{
public:
XObjectPtr(const XObjectPtr& theSource)
{
m_xobjectPtr = theSource.m_xobjectPtr;
}
const XObject* operator->() const
{
return m_xobjectPtr;
};
XObjectPtr(XObject *p) { m_xobjectPtr = p; }
XObject* m_xobjectPtr;
};
class FunctionSubstringBefore
{
public:
int execute( const XObjectPtr arg1) const
{
const XalanDOMString& theFirstString = arg1->str();
return theFirstString.y;
}
};
int
main ()
{
XObject x;
XObjectPtr y (&x);
x.x.y = -1;
FunctionSubstringBefore z;
if (z.execute (y) != -1)
abort ();
return 0;
}

View File

@ -0,0 +1,22 @@
extern void anything(int);
static int foo(int i);
static int bar(int i) { foo(i); }
extern int j;
static int foo(int i)
{
if (j)
anything(j);
return bar(i);
}
int baz()
{
foo(0);
if (baz())
return 1;
return 0;
}