@@ -22,9 +22,8 @@ use middle::lang_items::ExchangeFreeFnLangItem;
22
22
use middle:: subst;
23
23
use middle:: subst:: { Subst , Substs } ;
24
24
use middle:: ty:: { self , Ty } ;
25
- use trans:: adt:: GetDtorType ; // for tcx.dtor_type()
26
25
use trans:: adt;
27
- use trans:: attributes ;
26
+ use trans:: adt :: GetDtorType ; // for tcx.dtor_type()
28
27
use trans:: base:: * ;
29
28
use trans:: build:: * ;
30
29
use trans:: callee;
@@ -44,7 +43,6 @@ use trans::type_::Type;
44
43
use arena:: TypedArena ;
45
44
use libc:: c_uint;
46
45
use syntax:: ast;
47
- use syntax:: attr:: InlineAttr ;
48
46
49
47
pub fn trans_exchange_free_dyn < ' blk , ' tcx > ( cx : Block < ' blk , ' tcx > ,
50
48
v : ValueRef ,
@@ -252,25 +250,6 @@ fn get_drop_glue_core<'a, 'tcx>(ccx: &CrateContext<'a, 'tcx>,
252
250
253
251
update_linkage ( ccx, llfn, None , OriginalTranslation ) ;
254
252
255
- // FIXME: Currently LLVM has a bug where if an SSA value is created in one
256
- // landing pad and then used in another it will abort during
257
- // compilation. The compiler never actually generates nested landing
258
- // pads, but this often arises when destructors are inlined into
259
- // other functions. To prevent this inlining from happening (and thus
260
- // preventing the LLVM abort) we mark all drop glue as inline(never)
261
- // on MSVC.
262
- //
263
- // For more information about the bug, see:
264
- //
265
- // https://llvm.org/bugs/show_bug.cgi?id=23884
266
- //
267
- // This is clearly not the ideal solution to the problem (due to the
268
- // perf hits), so this should be removed once the upstream bug is
269
- // fixed.
270
- if ccx. sess ( ) . target . target . options . is_like_msvc {
271
- attributes:: inline ( llfn, InlineAttr :: Never ) ;
272
- }
273
-
274
253
ccx. stats ( ) . n_glues_created . set ( ccx. stats ( ) . n_glues_created . get ( ) + 1 ) ;
275
254
// All glue functions take values passed *by alias*; this is a
276
255
// requirement since in many contexts glue is invoked indirectly and
0 commit comments