Commit c23127ce by Martin Liska

Fix for PR64068 and PR64559.

	* g++.dg/ipa/pr64068.C: New test.
	* gcc.dg/ipa/PR64559.c: New test.
	PR ipa/64068
	PR ipa/64559
	* ipa.c (symbol_table::remove_unreachable_nodes):
	Do not put abstract origins into boundary.

From-SVN: r219672
parent 40d54d24
2015-01-15 Jan Hubicka <hubicka@ucw.cz>
PR ipa/64068
PR ipa/64559
* ipa.c (symbol_table::remove_unreachable_nodes):
Do not put abstract origins into boundary.
2015-01-15 Evgeny Stupachenko <evstupac@gmail.com>
* config/i386/gnu-user.h (CRT_GET_RFIB_DATA): Remove EBX register usage.
......
......@@ -400,7 +400,6 @@ symbol_table::remove_unreachable_nodes (FILE *file)
n = n->next_sibling_clone)
if (n->decl == DECL_ABSTRACT_ORIGIN (node->decl))
n->used_as_abstract_origin = true;
enqueue_node (origin_node, &first, &reachable);
}
}
/* If any symbol in a comdat group is reachable, force
......
2015-01-15 Martin Liska <mliska@suse.cz>
* g++.dg/ipa/pr64068.C: New test.
* gcc.dg/ipa/PR64559.c: New test.
2015-01-15 H.J. Lu <hongjiu.lu@intel.com>
* g++.dg/other/anon5.C: Ignore additional messages on Linux/x86
......
/* { dg-do compile } */
/* { dg-options "-O2" } */
typedef int PROV_ENUMALGS_EX, PCCRYPT_OID_INFO;
class A {
int m_fn2();
virtual bool m_fn1(PCCRYPT_OID_INFO);
};
int fn1();
void fn2();
int A::m_fn2() { m_fn1(0); }
bool fn3() {
for (;;) {
if (fn1()) {
if (fn1() != 259)
fn2();
break;
}
return 1;
}
return 0;
}
class B {
public:
B() { fn3(); }
};
class C : A {
bool m_fn1(PCCRYPT_OID_INFO) { m_fn3(); }
int isSupportedByProvider_algId;
PROV_ENUMALGS_EX isSupportedByProvider_outEnumAlgs;
PROV_ENUMALGS_EX isSupportedByProvider_enumAlgs;
bool m_fn3() {
while (1) {
if (fn1()) {
if (fn1() != 259)
fn2();
break;
}
if (isSupportedByProvider_algId)
isSupportedByProvider_outEnumAlgs = isSupportedByProvider_enumAlgs;
return 1;
}
return 0;
}
};
void fn4() { B(); }
/* { dg-do compile } */
/* { dg-options "-Os" } */
int a, b, c, d;
struct S
{
int f0;
};
static int
fn1 (int p)
{
return p == 0 || a;
}
static int
fn2 ()
{
d = fn1 (c);
return 0;
}
static int
fn3 (struct S p)
{
p.f0 || fn2 ();
if (fn1 (1))
b = 0;
return 0;
}
int
main ()
{
struct S e = { 1 };
fn3 (e);
return 0;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment