Commit c3ca1b9
committed
gccrs: Fix ICE with invalid const expression
This patch handles the overflowed var expression in the const block, so that
we error properly in the const expr code. It was missing some stuff from the
c++ implementation in how this should be handled properly.
Fixes #4139
gcc/rust/ChangeLog:
* backend/rust-compile-expr.cc (CompileExpr::compile_integer_literal): cleanup
* backend/rust-constexpr.cc (struct constexpr_global_ctx): port over c++ helpers
(decl_really_constant_value): likewise
(eval_constant_expression): likewise
(non_const_var_error): likewise
gcc/testsuite/ChangeLog:
* rust/compile/issue-4139.rs: New test.
Signed-off-by: Philip Herron <herron.philip@googlemail.com>1 parent b45db77 commit c3ca1b9
File tree
3 files changed
+135
-39
lines changed- gcc
- rust/backend
- testsuite/rust/compile
3 files changed
+135
-39
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1655 | 1655 | | |
1656 | 1656 | | |
1657 | 1657 | | |
1658 | | - | |
1659 | | - | |
| 1658 | + | |
1660 | 1659 | | |
1661 | 1660 | | |
| 1661 | + | |
| 1662 | + | |
| 1663 | + | |
| 1664 | + | |
1662 | 1665 | | |
1663 | | - | |
| 1666 | + | |
1664 | 1667 | | |
1665 | | - | |
| 1668 | + | |
1666 | 1669 | | |
1667 | 1670 | | |
| 1671 | + | |
| 1672 | + | |
1668 | 1673 | | |
1669 | | - | |
1670 | | - | |
| 1674 | + | |
1671 | 1675 | | |
1672 | 1676 | | |
1673 | 1677 | | |
1674 | 1678 | | |
1675 | | - | |
1676 | | - | |
1677 | | - | |
1678 | | - | |
1679 | 1679 | | |
1680 | 1680 | | |
1681 | 1681 | | |
1682 | 1682 | | |
1683 | 1683 | | |
| 1684 | + | |
| 1685 | + | |
| 1686 | + | |
1684 | 1687 | | |
1685 | 1688 | | |
1686 | 1689 | | |
1687 | 1690 | | |
1688 | | - | |
1689 | 1691 | | |
1690 | 1692 | | |
1691 | 1693 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
101 | 101 | | |
102 | 102 | | |
103 | 103 | | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
104 | 107 | | |
105 | 108 | | |
106 | 109 | | |
107 | 110 | | |
108 | 111 | | |
109 | 112 | | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
110 | 152 | | |
111 | 153 | | |
112 | 154 | | |
| |||
457 | 499 | | |
458 | 500 | | |
459 | 501 | | |
| 502 | + | |
460 | 503 | | |
461 | 504 | | |
462 | 505 | | |
| |||
1925 | 1968 | | |
1926 | 1969 | | |
1927 | 1970 | | |
1928 | | - | |
1929 | | - | |
1930 | | - | |
1931 | | - | |
1932 | | - | |
1933 | | - | |
1934 | | - | |
1935 | | - | |
1936 | | - | |
1937 | | - | |
1938 | | - | |
1939 | | - | |
1940 | | - | |
1941 | | - | |
| 1971 | + | |
| 1972 | + | |
| 1973 | + | |
| 1974 | + | |
| 1975 | + | |
| 1976 | + | |
| 1977 | + | |
| 1978 | + | |
| 1979 | + | |
| 1980 | + | |
| 1981 | + | |
| 1982 | + | |
| 1983 | + | |
| 1984 | + | |
| 1985 | + | |
| 1986 | + | |
| 1987 | + | |
| 1988 | + | |
| 1989 | + | |
| 1990 | + | |
| 1991 | + | |
| 1992 | + | |
| 1993 | + | |
| 1994 | + | |
1942 | 1995 | | |
1943 | | - | |
1944 | | - | |
1945 | | - | |
1946 | | - | |
1947 | | - | |
| 1996 | + | |
| 1997 | + | |
| 1998 | + | |
| 1999 | + | |
| 2000 | + | |
| 2001 | + | |
1948 | 2002 | | |
1949 | | - | |
1950 | | - | |
1951 | | - | |
| 2003 | + | |
| 2004 | + | |
1952 | 2005 | | |
1953 | 2006 | | |
1954 | 2007 | | |
| |||
4024 | 4077 | | |
4025 | 4078 | | |
4026 | 4079 | | |
| 4080 | + | |
| 4081 | + | |
| 4082 | + | |
| 4083 | + | |
| 4084 | + | |
| 4085 | + | |
| 4086 | + | |
| 4087 | + | |
| 4088 | + | |
| 4089 | + | |
| 4090 | + | |
4027 | 4091 | | |
4028 | 4092 | | |
4029 | 4093 | | |
| |||
4037 | 4101 | | |
4038 | 4102 | | |
4039 | 4103 | | |
4040 | | - | |
4041 | | - | |
4042 | | - | |
4043 | | - | |
| 4104 | + | |
| 4105 | + | |
4044 | 4106 | | |
4045 | 4107 | | |
4046 | 4108 | | |
4047 | | - | |
4048 | | - | |
| 4109 | + | |
| 4110 | + | |
| 4111 | + | |
| 4112 | + | |
| 4113 | + | |
| 4114 | + | |
| 4115 | + | |
| 4116 | + | |
| 4117 | + | |
| 4118 | + | |
| 4119 | + | |
| 4120 | + | |
| 4121 | + | |
| 4122 | + | |
| 4123 | + | |
| 4124 | + | |
| 4125 | + | |
| 4126 | + | |
| 4127 | + | |
| 4128 | + | |
| 4129 | + | |
| 4130 | + | |
| 4131 | + | |
| 4132 | + | |
| 4133 | + | |
| 4134 | + | |
| 4135 | + | |
4049 | 4136 | | |
4050 | 4137 | | |
4051 | 4138 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
0 commit comments