diff options
author | Martin Jambor <mjambor@suse.cz> | 2019-06-25 13:05:19 +0200 |
---|---|---|
committer | Martin Jambor <jamborm@gcc.gnu.org> | 2019-06-25 13:05:19 +0200 |
commit | 4c3d876014207c013566132a93cb9d29f0c96a7b (patch) | |
tree | af305bd0e842e15cbf4c0a463fe00bfc06609585 /gcc | |
parent | 332d6c4189218b06a22260beae02fa40d1ec3286 (diff) | |
download | gcc-4c3d876014207c013566132a93cb9d29f0c96a7b.zip gcc-4c3d876014207c013566132a93cb9d29f0c96a7b.tar.gz gcc-4c3d876014207c013566132a93cb9d29f0c96a7b.tar.bz2 |
[PR 90939] Remove outdated assert in ipcp_bits_lattice::meet_with
2019-06-25 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: r272646
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/ipa-cp.c | 1 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/lto/pr90939_0.C | 64 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/lto/pr90939_1.C | 45 |
5 files changed, 119 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9814b5b..fee1f55 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2019-06-25 Martin Jambor <mjambor@suse.cz> + + PR ipa/90939 + * ipa-cp.c (ipcp_bits_lattice::meet_with): Remove assert. + 2019-06-25 Richard Biener <rguenther@suse.de> PR tree-optimization/90930 diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c index d3a8875..69c00a9 100644 --- a/gcc/ipa-cp.c +++ b/gcc/ipa-cp.c @@ -1085,7 +1085,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); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b147b67..ca27bc3 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2019-06-25 Martin Jambor <mjambor@suse.cz> + + PR ipa/90939 + * g++.dg/lto/pr90939_[01].C: New test. + 2019-06-25 Richard Biener <rguenther@suse.de> PR tree-optimization/90930 diff --git a/gcc/testsuite/g++.dg/lto/pr90939_0.C b/gcc/testsuite/g++.dg/lto/pr90939_0.C new file mode 100644 index 0000000..8987c34 --- /dev/null +++ b/gcc/testsuite/g++.dg/lto/pr90939_0.C @@ -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; +} diff --git a/gcc/testsuite/g++.dg/lto/pr90939_1.C b/gcc/testsuite/g++.dg/lto/pr90939_1.C new file mode 100644 index 0000000..9add894 --- /dev/null +++ b/gcc/testsuite/g++.dg/lto/pr90939_1.C @@ -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) {} |