File tree Expand file tree Collapse file tree 2 files changed +185
-1
lines changed
compiler/rustc_mir_transform/src Expand file tree Collapse file tree 2 files changed +185
-1
lines changed Original file line number Diff line number Diff line change @@ -203,7 +203,12 @@ pub fn deduced_param_attrs<'tcx>(
203203 body. local_decls . iter ( ) . skip ( 1 ) . take ( body. arg_count ) . enumerate ( ) . map (
204204 |( arg_index, local_decl) | DeducedParamAttrs {
205205 read_only : !deduce_read_only. mutable_args . contains ( arg_index)
206- && local_decl. ty . is_freeze ( tcx, param_env) ,
206+ // We must normalize here to reveal opaques and normalize
207+ // their substs, otherwise we'll see exponential blow-up in
208+ // compile times: #113372
209+ && tcx
210+ . normalize_erasing_regions ( param_env, local_decl. ty )
211+ . is_freeze ( tcx, param_env) ,
207212 } ,
208213 ) ,
209214 ) ;
Original file line number Diff line number Diff line change 1+ // build-pass
2+ // compile-flags: -Copt-level=s -Clto=fat
3+ // no-prefer-dynamic
4+ // edition: 2021
5+
6+ #![ recursion_limit = "256" ]
7+
8+ fn main ( ) {
9+ spawn ( move || main0 ( ) )
10+ }
11+
12+ fn spawn < F > ( future : impl FnOnce ( ) -> F ) {
13+ future ( ) ;
14+ }
15+
16+ async fn main0 ( ) {
17+ main1 ( ) . await ;
18+ main2 ( ) . await ;
19+ }
20+ async fn main1 ( ) {
21+ main2 ( ) . await ;
22+ main3 ( ) . await ;
23+ }
24+ async fn main2 ( ) {
25+ main3 ( ) . await ;
26+ main4 ( ) . await ;
27+ }
28+ async fn main3 ( ) {
29+ main4 ( ) . await ;
30+ main5 ( ) . await ;
31+ }
32+ async fn main4 ( ) {
33+ main5 ( ) . await ;
34+ main6 ( ) . await ;
35+ }
36+ async fn main5 ( ) {
37+ main6 ( ) . await ;
38+ main7 ( ) . await ;
39+ }
40+ async fn main6 ( ) {
41+ main7 ( ) . await ;
42+ main8 ( ) . await ;
43+ }
44+ async fn main7 ( ) {
45+ main8 ( ) . await ;
46+ main9 ( ) . await ;
47+ }
48+ async fn main8 ( ) {
49+ main9 ( ) . await ;
50+ main10 ( ) . await ;
51+ }
52+ async fn main9 ( ) {
53+ main10 ( ) . await ;
54+ main11 ( ) . await ;
55+ }
56+ async fn main10 ( ) {
57+ main11 ( ) . await ;
58+ main12 ( ) . await ;
59+ }
60+ async fn main11 ( ) {
61+ main12 ( ) . await ;
62+ main13 ( ) . await ;
63+ }
64+ async fn main12 ( ) {
65+ main13 ( ) . await ;
66+ main14 ( ) . await ;
67+ }
68+ async fn main13 ( ) {
69+ main14 ( ) . await ;
70+ main15 ( ) . await ;
71+ }
72+ async fn main14 ( ) {
73+ main15 ( ) . await ;
74+ main16 ( ) . await ;
75+ }
76+ async fn main15 ( ) {
77+ main16 ( ) . await ;
78+ main17 ( ) . await ;
79+ }
80+ async fn main16 ( ) {
81+ main17 ( ) . await ;
82+ main18 ( ) . await ;
83+ }
84+ async fn main17 ( ) {
85+ main18 ( ) . await ;
86+ main19 ( ) . await ;
87+ }
88+ async fn main18 ( ) {
89+ main19 ( ) . await ;
90+ main20 ( ) . await ;
91+ }
92+ async fn main19 ( ) {
93+ main20 ( ) . await ;
94+ main21 ( ) . await ;
95+ }
96+ async fn main20 ( ) {
97+ main21 ( ) . await ;
98+ main22 ( ) . await ;
99+ }
100+ async fn main21 ( ) {
101+ main22 ( ) . await ;
102+ main23 ( ) . await ;
103+ }
104+ async fn main22 ( ) {
105+ main23 ( ) . await ;
106+ main24 ( ) . await ;
107+ }
108+ async fn main23 ( ) {
109+ main24 ( ) . await ;
110+ main25 ( ) . await ;
111+ }
112+ async fn main24 ( ) {
113+ main25 ( ) . await ;
114+ main26 ( ) . await ;
115+ }
116+ async fn main25 ( ) {
117+ main26 ( ) . await ;
118+ main27 ( ) . await ;
119+ }
120+ async fn main26 ( ) {
121+ main27 ( ) . await ;
122+ main28 ( ) . await ;
123+ }
124+ async fn main27 ( ) {
125+ main28 ( ) . await ;
126+ main29 ( ) . await ;
127+ }
128+ async fn main28 ( ) {
129+ main29 ( ) . await ;
130+ main30 ( ) . await ;
131+ }
132+ async fn main29 ( ) {
133+ main30 ( ) . await ;
134+ main31 ( ) . await ;
135+ }
136+ async fn main30 ( ) {
137+ main31 ( ) . await ;
138+ main32 ( ) . await ;
139+ }
140+ async fn main31 ( ) {
141+ main32 ( ) . await ;
142+ main33 ( ) . await ;
143+ }
144+ async fn main32 ( ) {
145+ main33 ( ) . await ;
146+ main34 ( ) . await ;
147+ }
148+ async fn main33 ( ) {
149+ main34 ( ) . await ;
150+ main35 ( ) . await ;
151+ }
152+ async fn main34 ( ) {
153+ main35 ( ) . await ;
154+ main36 ( ) . await ;
155+ }
156+ async fn main35 ( ) {
157+ main36 ( ) . await ;
158+ main37 ( ) . await ;
159+ }
160+ async fn main36 ( ) {
161+ main37 ( ) . await ;
162+ main38 ( ) . await ;
163+ }
164+ async fn main37 ( ) {
165+ main38 ( ) . await ;
166+ main39 ( ) . await ;
167+ }
168+ async fn main38 ( ) {
169+ main39 ( ) . await ;
170+ main40 ( ) . await ;
171+ }
172+ async fn main39 ( ) {
173+ main40 ( ) . await ;
174+ }
175+ async fn main40 ( ) {
176+ boom ( & mut ( ) ) . await ;
177+ }
178+
179+ async fn boom ( f : & mut ( ) ) { }
You can’t perform that action at this time.
0 commit comments