| Davide Italiano | 7e274e0 | 2016-12-22 16:03:48 +0000 | [diff] [blame^] | 1 | ; XFAIL: *
|
| 2 | ; GVN failed to do constant expression folding and expanded
|
| 3 | ; them unfolded in many places, producing exponentially large const
|
| 4 | ; expressions. As a result, the compilation never fisished.
|
| 5 | ; This test checks that we are folding constant expression
|
| 6 | ; PR 28418
|
| 7 | ; RUN: opt -newgvn -S < %s | FileCheck %s
|
| 8 |
|
| 9 | %2 = type { i32, i32, i32, i32, i32 }
|
| 10 | define i32 @_Z16vector3util_mainv(i32 %x, i32 %y) {
|
| 11 | %tmp1 = alloca %2, align 4
|
| 12 | %tmp114 = getelementptr inbounds %2, %2* %tmp1, i64 0, i32 1
|
| 13 | %tmp115 = bitcast i32* %tmp114 to <4 x i32>*
|
| 14 | store <4 x i32> <i32 234567891, i32 345678912, i32 456789123, i32 0>, <4 x i32>* %tmp115, align 4
|
| 15 | %tmp1683 = getelementptr inbounds %2, %2* %tmp1, i64 0, i32 1
|
| 16 | %tmp1688 = load i32, i32* %tmp1683, align 4
|
| 17 | %tmp1693 = shl i32 %tmp1688, 5
|
| 18 | %tmp1694 = xor i32 %tmp1693, %tmp1688
|
| 19 | %tmp1695 = lshr i32 %tmp1694, 7
|
| 20 | %tmp1696 = xor i32 %tmp1695, %tmp1694
|
| 21 | %tmp1697 = shl i32 %tmp1696, 22
|
| 22 | %tmp1698 = xor i32 %tmp1697, %tmp1696
|
| 23 | %tmp1707 = shl i32 %tmp1698, 5
|
| 24 | %tmp1708 = xor i32 %tmp1707, %tmp1698
|
| 25 | %tmp1709 = lshr i32 %tmp1708, 7
|
| 26 | %tmp1710 = xor i32 %tmp1709, %tmp1708
|
| 27 | %tmp1711 = shl i32 %tmp1710, 22
|
| 28 | %tmp1712 = xor i32 %tmp1711, %tmp1710
|
| 29 | %tmp1721 = shl i32 %tmp1712, 5
|
| 30 | %tmp1722 = xor i32 %tmp1721, %tmp1712
|
| 31 | %tmp1723 = lshr i32 %tmp1722, 7
|
| 32 | %tmp1724 = xor i32 %tmp1723, %tmp1722
|
| 33 | %tmp1725 = shl i32 %tmp1724, 22
|
| 34 | %tmp1726 = xor i32 %tmp1725, %tmp1724
|
| 35 | %tmp1735 = shl i32 %tmp1726, 5
|
| 36 | %tmp1736 = xor i32 %tmp1735, %tmp1726
|
| 37 | %tmp1737 = lshr i32 %tmp1736, 7
|
| 38 | %tmp1738 = xor i32 %tmp1737, %tmp1736
|
| 39 | %tmp1739 = shl i32 %tmp1738, 22
|
| 40 | %tmp1740 = xor i32 %tmp1739, %tmp1738
|
| 41 | store i32 %tmp1740, i32* %tmp1683, align 4
|
| 42 | ; CHECK: store i32 310393545, i32* %tmp114, align 4
|
| 43 | %tmp1756 = getelementptr inbounds %2, %2* %tmp1, i64 0, i32 1
|
| 44 | %tmp1761 = load i32, i32* %tmp1756, align 4
|
| 45 | %tmp1766 = shl i32 %tmp1761, 5
|
| 46 | %tmp1767 = xor i32 %tmp1766, %tmp1761
|
| 47 | %tmp1768 = lshr i32 %tmp1767, 7
|
| 48 | %tmp1769 = xor i32 %tmp1768, %tmp1767
|
| 49 | %tmp1770 = shl i32 %tmp1769, 22
|
| 50 | %tmp1771 = xor i32 %tmp1770, %tmp1769
|
| 51 | %tmp1780 = shl i32 %tmp1771, 5
|
| 52 | %tmp1781 = xor i32 %tmp1780, %tmp1771
|
| 53 | %tmp1782 = lshr i32 %tmp1781, 7
|
| 54 | %tmp1783 = xor i32 %tmp1782, %tmp1781
|
| 55 | %tmp1784 = shl i32 %tmp1783, 22
|
| 56 | %tmp1785 = xor i32 %tmp1784, %tmp1783
|
| 57 | %tmp1794 = shl i32 %tmp1785, 5
|
| 58 | %tmp1795 = xor i32 %tmp1794, %tmp1785
|
| 59 | %tmp1796 = lshr i32 %tmp1795, 7
|
| 60 | %tmp1797 = xor i32 %tmp1796, %tmp1795
|
| 61 | %tmp1798 = shl i32 %tmp1797, 22
|
| 62 | %tmp1799 = xor i32 %tmp1798, %tmp1797
|
| 63 | %tmp1808 = shl i32 %tmp1799, 5
|
| 64 | %tmp1809 = xor i32 %tmp1808, %tmp1799
|
| 65 | %tmp1810 = lshr i32 %tmp1809, 7
|
| 66 | %tmp1811 = xor i32 %tmp1810, %tmp1809
|
| 67 | %tmp1812 = shl i32 %tmp1811, 22
|
| 68 | %tmp1813 = xor i32 %tmp1812, %tmp1811
|
| 69 | store i32 %tmp1813, i32* %tmp1756, align 4
|
| 70 | ; CHECK: store i32 -383584258, i32* %tmp114, align 4
|
| 71 | %tmp2645 = getelementptr inbounds %2, %2* %tmp1, i64 0, i32 1
|
| 72 | %tmp2650 = load i32, i32* %tmp2645, align 4
|
| 73 | %tmp2655 = shl i32 %tmp2650, 5
|
| 74 | %tmp2656 = xor i32 %tmp2655, %tmp2650
|
| 75 | %tmp2657 = lshr i32 %tmp2656, 7
|
| 76 | %tmp2658 = xor i32 %tmp2657, %tmp2656
|
| 77 | %tmp2659 = shl i32 %tmp2658, 22
|
| 78 | %tmp2660 = xor i32 %tmp2659, %tmp2658
|
| 79 | %tmp2669 = shl i32 %tmp2660, 5
|
| 80 | %tmp2670 = xor i32 %tmp2669, %tmp2660
|
| 81 | %tmp2671 = lshr i32 %tmp2670, 7
|
| 82 | %tmp2672 = xor i32 %tmp2671, %tmp2670
|
| 83 | %tmp2673 = shl i32 %tmp2672, 22
|
| 84 | %tmp2674 = xor i32 %tmp2673, %tmp2672
|
| 85 | %tmp2683 = shl i32 %tmp2674, 5
|
| 86 | %tmp2684 = xor i32 %tmp2683, %tmp2674
|
| 87 | %tmp2685 = lshr i32 %tmp2684, 7
|
| 88 | %tmp2686 = xor i32 %tmp2685, %tmp2684
|
| 89 | %tmp2687 = shl i32 %tmp2686, 22
|
| 90 | %tmp2688 = xor i32 %tmp2687, %tmp2686
|
| 91 | %tmp2697 = shl i32 %tmp2688, 5
|
| 92 | %tmp2698 = xor i32 %tmp2697, %tmp2688
|
| 93 | %tmp2699 = lshr i32 %tmp2698, 7
|
| 94 | %tmp2700 = xor i32 %tmp2699, %tmp2698
|
| 95 | %tmp2701 = shl i32 %tmp2700, 22
|
| 96 | %tmp2702 = xor i32 %tmp2701, %tmp2700
|
| 97 | store i32 %tmp2702, i32* %tmp2645, align 4
|
| 98 | ; CHECK: store i32 -57163022, i32* %tmp114, align 4
|
| 99 | ret i32 0
|
| 100 | }
|