Commit 3edbb06
committed
[SILGen] Don't peephole closures with abstraction differences in the thrown error
The prolog and epilog code in SILGen is not set up to deal with
abstraction differences in the thrown error type of closures, so disable
the peephole optimization for closure literals.
Fixes #71401 / rdar://122366566,
which I've stared at for waaaaay too many hours.1 parent 5cb418a commit 3edbb06
File tree
3 files changed
+53
-6
lines changed- lib
- SILGen
- SIL/IR
- test/SILGen
3 files changed
+53
-6
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3246 | 3246 | | |
3247 | 3247 | | |
3248 | 3248 | | |
| 3249 | + | |
| 3250 | + | |
| 3251 | + | |
| 3252 | + | |
| 3253 | + | |
| 3254 | + | |
| 3255 | + | |
3249 | 3256 | | |
3250 | 3257 | | |
3251 | 3258 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1903 | 1903 | | |
1904 | 1904 | | |
1905 | 1905 | | |
| 1906 | + | |
| 1907 | + | |
| 1908 | + | |
| 1909 | + | |
| 1910 | + | |
| 1911 | + | |
| 1912 | + | |
| 1913 | + | |
1906 | 1914 | | |
1907 | 1915 | | |
1908 | 1916 | | |
1909 | 1917 | | |
1910 | | - | |
1911 | | - | |
| 1918 | + | |
| 1919 | + | |
| 1920 | + | |
1912 | 1921 | | |
1913 | 1922 | | |
1914 | 1923 | | |
| |||
1919 | 1928 | | |
1920 | 1929 | | |
1921 | 1930 | | |
1922 | | - | |
| 1931 | + | |
1923 | 1932 | | |
1924 | 1933 | | |
1925 | 1934 | | |
1926 | 1935 | | |
1927 | 1936 | | |
1928 | 1937 | | |
1929 | 1938 | | |
1930 | | - | |
1931 | 1939 | | |
1932 | 1940 | | |
1933 | 1941 | | |
1934 | 1942 | | |
1935 | | - | |
1936 | 1943 | | |
1937 | 1944 | | |
| 1945 | + | |
| 1946 | + | |
| 1947 | + | |
| 1948 | + | |
| 1949 | + | |
| 1950 | + | |
| 1951 | + | |
| 1952 | + | |
1938 | 1953 | | |
1939 | 1954 | | |
1940 | 1955 | | |
| |||
2000 | 2015 | | |
2001 | 2016 | | |
2002 | 2017 | | |
2003 | | - | |
| 2018 | + | |
| 2019 | + | |
2004 | 2020 | | |
2005 | 2021 | | |
2006 | 2022 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
272 | 272 | | |
273 | 273 | | |
274 | 274 | | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
275 | 299 | | |
276 | 300 | | |
277 | 301 | | |
| |||
0 commit comments