[PR 90939] Remove outdated assert in ipcp_bits_lattice::meet_with

2019-06-26  Martin Jambor  <mjambor@suse.cz>

	PR ipa/90939
	* ipa-cp.c (ipcp_bits_lattice::meet_with): Remove assert.

	testsuite/
	* g++.dg/lto/pr90939_[01].C: New test.

From-SVN: r272689
This commit is contained in:
Martin Jambor 2019-06-26 14:04:08 +02:00 committed by Martin Jambor
parent 1215a76ab5
commit 7867b61fa3
5 changed files with 125 additions and 1 deletions

View File

@ -1,3 +1,11 @@
2019-06-26 Martin Jambor <mjambor@suse.cz>
Backport from mainline
2019-06-25 Martin Jambor <mjambor@suse.cz>
PR ipa/90939
* ipa-cp.c (ipcp_bits_lattice::meet_with): Remove assert.
2019-06-26 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
Backport from mainline

View File

@ -1070,7 +1070,6 @@ ipcp_bits_lattice::meet_with (ipcp_bits_lattice& other, unsigned precision,
if (TREE_CODE_CLASS (code) == tcc_binary)
{
tree type = TREE_TYPE (operand);
gcc_assert (INTEGRAL_TYPE_P (type));
widest_int o_value, o_mask;
get_value_and_mask (operand, &o_value, &o_mask);

View File

@ -1,3 +1,11 @@
2019-06-26 Martin Jambor <mjambor@suse.cz>
Backport from mainline
2019-06-25 Martin Jambor <mjambor@suse.cz>
PR ipa/90939
* g++.dg/lto/pr90939_[01].C: New test.
2019-06-25 Claudiu Zissulescu <claziss@synopsys.com>
Backport from mainline

View File

@ -0,0 +1,64 @@
// PR ipa/90939
// { dg-lto-do link }
// { dg-lto-options { { -flto -O3 } } }
typedef char uint8_t;
template <class T> class A {
public:
A(T *);
};
template <typename Derived, typename Base> const Derived &To(Base &p1) {
return static_cast<const Derived &>(p1);
}
class H;
template <typename, typename Base> const H *To(Base *p1) {
return p1 ? &To<H>(*p1) : nullptr;
}
enum TextDirection : uint8_t;
enum WritingMode : unsigned;
class B {
public:
WritingMode m_fn1();
};
class C {
public:
int &m_fn2();
};
class D { double d;};
class H : public D {};
class F {
public:
F(C, A<const int>, B *, WritingMode, TextDirection);
};
class G {
public:
C NGLayoutAlgorithm_node;
B NGLayoutAlgorithm_space;
TextDirection NGLayoutAlgorithm_direction;
H NGLayoutAlgorithm_break_token;
G(A<const int> p1) __attribute__((noinline))
: break_token_(&NGLayoutAlgorithm_break_token),
container_builder_(NGLayoutAlgorithm_node, p1, &NGLayoutAlgorithm_space,
NGLayoutAlgorithm_space.m_fn1(),
NGLayoutAlgorithm_direction) {}
G(C p1, const H *) : G(&p1.m_fn2()) {}
A<H> break_token_;
F container_builder_;
};
class I : G {
public:
I(const D *) __attribute__((noinline));
};
C a;
I::I(const D *p1) : G(a, To<H>(p1)) {}
D gd[10];
int main (int argc, char *argv[])
{
I i(&(gd[argc%2]));
return 0;
}

View File

@ -0,0 +1,45 @@
typedef char uint8_t;
template <class T> class A {
public:
A(T *);
};
enum TextDirection : uint8_t;
enum WritingMode : unsigned;
class B {
public:
WritingMode m_fn1();
};
class C {
public:
int &m_fn2();
};
class F {
public:
F(C, A<const int>, B *, WritingMode, TextDirection);
};
class D { double d;};
class H : public D {};
template <class T> A<T>::A(T*) {}
template class A<H>;
template class A<int const>;
WritingMode __attribute__((noipa))
B::m_fn1()
{
return (WritingMode) 0;
}
int gi;
int & __attribute__((noipa))
C::m_fn2 ()
{
return gi;
}
__attribute__((noipa)) F::F(C, A<const int>, B *, WritingMode, TextDirection) {}