Commit graph

191 commits

Author SHA1 Message Date
Mark Simulacrum
1be170b01a Replace BlockAndBuilder with Builder. 2017-01-04 11:33:31 -07:00
bors
d40d01bd0e Auto merge of #38670 - dotdash:transmute_align, r=eddyb
Fix transmute::<T, U> where T requires a bigger alignment than U

For transmute::<T, U> we simply pointercast the destination from a U
pointer to a T pointer, without providing any alignment information,
thus LLVM assumes that the destination is aligned to hold a value of
type T, which is not necessarily true. This can lead to LLVM emitting
machine instructions that assume said alignment, and thus cause aborts.

To fix this, we need to provide the actual alignment to store_operand()
and in turn to store() so they can set the proper alignment information
on the stores and LLVM can emit the proper machine instructions.

Fixes #32947
2017-01-04 14:26:17 +00:00
Björn Steinbrink
71a11a0b10 Fix transmute::<T, U> where T requires a bigger alignment than U
For transmute::<T, U> we simply pointercast the destination from a U
pointer to a T pointer, without providing any alignment information,
thus LLVM assumes that the destination is aligned to hold a value of
type T, which is not necessarily true. This can lead to LLVM emitting
machine instructions that assume said alignment, and thus cause aborts.

To fix this, we need to provide the actual alignment to store_operand()
and in turn to store() so they can set the proper alignment information
on the stores and LLVM can emit the proper machine instructions.

Fixes #32947
2016-12-31 13:13:30 +01:00
Nick Cameron
7720cf02e3 Change --crate-type metadata to --emit=metadata 2016-12-29 13:24:45 +13:00
Mark Simulacrum
bd009dc444 Remove fn_ty from FunctionContext 2016-12-20 20:04:44 -07:00
Mark Simulacrum
6fac0a1a84 Change *.fcx.ccx to *.ccx 2016-12-20 20:04:43 -07:00
Mark Simulacrum
88202c5b83 Replace bcx.ccx() with bcx.ccx 2016-12-20 20:04:41 -07:00
Mark Simulacrum
f103ea4f89 Remove unecessary logic. 2016-12-20 20:03:36 -07:00
Mark Simulacrum
0a71b38803 Remove llretslotptr from FunctionContext 2016-12-20 20:03:33 -07:00
Mark Simulacrum
a42a3429fe Move param_env onto SharedCrateContext, and move functions which need the ParamEnv onto it. 2016-12-20 20:03:32 -07:00
Mark Simulacrum
2b9a0efef4 Move debug_context to MirContext from FunctionContext 2016-12-20 20:03:32 -07:00
Mark Simulacrum
97a2096e5e Inline and cleanup build_return_block 2016-12-20 20:03:31 -07:00
Mark Simulacrum
515d14f094 Inline/Replace finish with build_return_block 2016-12-20 20:03:31 -07:00
Mark Simulacrum
b48e74b5b0 Rename 'blk and 'bcx to 'a 2016-12-20 20:03:31 -07:00
Mark Simulacrum
c693bcc625 Inline memfill and merge with memset_intrinsic. 2016-12-20 20:03:30 -07:00
Mark-Simulacrum
1804131b6d Remove Ref::clone for MirContext mir 2016-12-20 20:03:30 -07:00
Mark-Simulacrum
937001a1f8 Refactor Callee::call to take bcx by-reference.
Also change to not return anything; nothing used the return ValueRef.

Inlines with_cond.
2016-12-20 20:03:29 -07:00
Mark-Simulacrum
9a198534e2 Remove unused imports 2016-12-20 20:03:29 -07:00
Mark-Simulacrum
88b2024a28 Cleanup instruction counting 2016-12-20 20:03:29 -07:00
Mark-Simulacrum
9c38a54cae Inline FunctionContext.mir 2016-12-20 20:03:28 -07:00
Mark-Simulacrum
85ab08084d Remove global builder 2016-12-20 20:03:28 -07:00
Mark-Simulacrum
c4f6173af8 Replace init with get_entry_block. 2016-12-20 20:03:27 -07:00
Mark-Simulacrum
cbbdb73eb0 Remove FunctionContext::cleanup, replacing it with a Drop impl.
Move alloca and initial entry block creation into FunctionContext::new.
2016-12-20 20:03:27 -07:00
Mark-Simulacrum
bf8614b55a Rename Builder::alloca to dynamic_alloca 2016-12-20 20:03:27 -07:00
Mark-Simulacrum
820164582d Remove DebugLoc. 2016-12-20 20:03:24 -07:00
Mark-Simulacrum
28f511cfbd Remove global Builder 2016-12-20 20:02:52 -07:00
Mark-Simulacrum
e0ccc81bbf Remove needless allows 2016-12-20 20:02:52 -07:00
Mark-Simulacrum
da23332b65 Remove remaining traces of block_arena 2016-12-20 20:02:52 -07:00
Mark-Simulacrum
dda6c8cf2f Inline base::malloc_raw_dyn.
Move comment about not unwinding into liballoc.
2016-12-20 20:02:52 -07:00
Mark-Simulacrum
6441c977cb Remove push_ctxt 2016-12-20 20:02:50 -07:00
Mark-Simulacrum
28d00e781b Remove cleanup scope from FunctionContext 2016-12-20 20:02:50 -07:00
Mark-Simulacrum
51dfba1185 Refactor Vec<CleanupScope> into Option<CleanupScope>. 2016-12-20 20:02:50 -07:00
Mark-Simulacrum
86b2bdb435 Rename LandingPad to Funclet
Changes internal storage to direct field values instead of Options,
since both fields are always either set or not set.
2016-12-20 20:02:48 -07:00
Mark-Simulacrum
8f3d824cc7 Remove common::Block. 2016-12-20 20:02:46 -07:00
Mark-Simulacrum
fec59c5f73 Replace lpad().and_then(..) with None 2016-12-20 20:01:41 -07:00
Mark-Simulacrum
ad0a901d37 Remove *_builder 2016-12-20 20:01:40 -07:00
Mark-Simulacrum
e77d928990 Add notes regarding malloc_raw_dyn being unwind incompatible 2016-12-20 20:01:40 -07:00
Mark-Simulacrum
59ef51c12a Replace build.rs with calling functions on builder directly 2016-12-20 20:01:40 -07:00
Mark-Simulacrum
3f17ab9618 Remove unreachable and terminated from Block 2016-12-20 20:01:40 -07:00
Mark-Simulacrum
bf7d4534a7 Refactor Block into BlockAndBuilder 2016-12-20 20:01:40 -07:00
Austin Hicks
9966bbd1b1 Fix computation of enum names based off the discrfield in the case of the null pointer optimization. This functionality is needed by pretty printers for gdb and lldb. 2016-12-14 12:28:26 -05:00
Austin Hicks
cae94e8ec0 Optimize anything using a layout::Struct by introducing a mapping from source code field order to in-memory field order and sorting by alignment. 2016-12-14 12:28:18 -05:00
Michael Woerister
4a494ed8df incr.comp.: Take symbol visibility into account for CGU hashes. 2016-12-09 17:47:56 -05:00
bors
1692c0b587 Auto merge of #37973 - vadimcn:dllimport, r=alexcrichton
Implement RFC 1717

Implement the first two points from #37403.

r? @alexcrichton
2016-12-06 10:54:45 +00:00
Mark-Simulacrum
296ec5f9b7 Refactor FnSig to contain a Slice for its inputs and outputs. 2016-12-05 22:33:38 -07:00
Mark-Simulacrum
1eab19dba8 Refactor ty::FnSig to privatize all fields 2016-12-05 22:22:49 -07:00
Michael Woerister
133aeacf2f Refactor symbol export list generation. 2016-12-05 11:05:25 -05:00
Michael Woerister
5fd7c2bfef trans: Rename reachable to exported_symbols where appropriate. 2016-12-05 11:05:25 -05:00
Vadim Chugunov
bc019dfb39 Emit 'dllimport' attribute for dylib foreign items on Windows. 2016-12-01 16:22:04 -08:00
Michael Woerister
29a6ffa401 incr.comp.: Add more output to -Z incremental-info. 2016-11-30 17:33:52 -05:00