about summary refs log tree commit diff
path: root/src/librustc_codegen_llvm/context.rs
AgeCommit message (Collapse)AuthorLines
2019-03-30Remove redundant importsFabian Drinck-1/+0
2019-03-29Move get_param and set_value_namebjorn3-5/+0
2019-03-29Don't use c_uint in cg_ssabjorn3-2/+2
2019-03-27Use informational target machine for metadataSimonas Kazlauskas-1/+1
Since there is nothing to optimise there...
2019-02-25librustc_codegen_llvm: deny(elided_lifetimes_in_paths)Mazdak Farrokhzad-1/+1
2019-02-24Auto merge of #58304 - gnzlbg:simd_saturated, r=nagisabors-8/+18
Add generic simd saturated add/sub intrinsics r? @eddyb
2019-02-18librustc_codegen_llvm => 2018Taiki Endo-15/+15
2019-02-14Rollup merge of #58308 - gnzlbg:context_insert_intr, r=eddybMazdak Farrokhzad-12/+17
Extract block to insert an intrinsic into its own function r? @eddyb
2019-02-10rustc: doc commentsAlexander Regueiro-2/+2
2019-02-08Add simd_saturating_{add,sub} intrinsicsgnzlbg-8/+18
2019-02-08Extract block to insert an intrinsic into its own functiongnzlbg-12/+17
2019-01-29Use LLVM intrinsics for saturating add/subNikita Popov-0/+24
2019-01-24Implement optimize(size) and optimize(speed)Simonas Kazlauskas-2/+3
2019-01-04add support for principal-less trait object typesAriel Ben-Yehuda-2/+3
should be a pure refactoring.
2018-12-25Remove licensesMark Rousskov-10/+0
2018-12-17Auto merge of #56642 - nikic:llvm-6, r=alexcrichtonbors-5/+0
Bump minimum required LLVM version to 6.0 Based on the discussion in #55842, while the overall position of Rust wrt LLVM continues to be contentious, there does seem to be a consensus that there is no need for continued support of LLVM 5. This PR bumps our version requirement to LLVM 6.0 and makes Travis run against that. I hope that this is going to unblock #52694. If I understand correctly, while this issue still exists in LLVM 6, Ubuntu has backported the relevant patch. r? @alexcrichton
2018-12-12rustc: Switch `extern` functions to abort by default on panicAlex Crichton-1/+0
This was intended to land way back in 1.24, but it was backed out due to breakage which has long since been fixed. An unstable `#[unwind]` attribute can be used to tweak the behavior here, but this is currently simply switching rustc's internal default to abort-by-default if an `extern` function panics, making our codegen sound primarily (as currently you can produce UB with safe code) Closes #52652
2018-12-11Remove env_alloca hackNikita Popov-5/+0
This is no longer necessary for LLVM >= 6.
2018-12-07Various minor/cosmetic improvements to codeAlexander Regueiro-1/+1
2018-12-02Auto merge of #56198 - bjorn3:cg_ssa_refactor, r=eddybbors-7/+7
Refactor rustc_codegen_ssa cc #56108 (not all things are done yet) This removes an unsafe method from cg_ssa. r? @eddyb cc @sunfishcode
2018-11-29Remove an unnecessary referencebjorn3-1/+1
2018-11-29Don't use llvm intrinsic names in cg_ssabjorn3-2/+2
2018-11-29Remove static_replace_all_uses and statics_to_rauw from cg_ssabjorn3-4/+4
2018-11-26libcore: Add va_list lang item and intrinsicsDan Robertson-11/+16
- Add the llvm intrinsics used to manipulate a va_list. - Add the va_list lang item in order to allow implementing VaList in libcore.
2018-11-16[eddyb] rustc_codegen_llvm: remove unused parametrization of `CodegenCx` and ↵Eduard-Mihai Burtescu-12/+12
`Builder` over `Value`s.
2018-11-16[eddyb] rustc_codegen_ssa: rename `interfaces` to `traits`.Eduard-Mihai Burtescu-1/+1
2018-11-16Finished moving backend-agnostic code to rustc_codegen_ssaDenis Merigoux-9/+10
2018-11-16Great separation of librustc_codegen_llvm: librustc_codegen_ssa compilesDenis Merigoux-0/+4
2018-11-16Preparing the generalization of base:compile_coodegen_unitDenis Merigoux-0/+31
2018-11-16Renamed lifetimes for better understandingDenis Merigoux-14/+13
2018-11-16Move doc to trait declarationsDenis Merigoux-1/+0
2018-11-16Generalized base:maybe_create_entry_wrapperDenis Merigoux-0/+8
2018-11-16Generalized mono_item.rs and base.rs:codegen_instanceDenis Merigoux-0/+8
2018-11-16Generalized mir::codegen_mir (and all subsequent functions)Denis Merigoux-87/+97
2018-11-16Generalized base::unsize_thin_ptrDenis Merigoux-26/+0
2018-11-16Generalized base::unsized_infoDenis Merigoux-2/+13
2018-11-16[eddyb/rebase cleanup] s/&self./self.Eduard-Mihai Burtescu-29/+29
2018-11-16Traitified IntrinsicCallMethodsDenis Merigoux-7/+2
2018-11-16Generalized memset and memcpyDenis Merigoux-316/+322
2018-11-16Prefixed type methods & removed trait impl for write::CodegenContextDenis Merigoux-26/+26
2018-11-16Traitification of type_ methodsDenis Merigoux-26/+27
The methods are now attached to CodegenCx instead of Type
2018-11-16Removed genericity over Value in various functionsDenis Merigoux-21/+21
Prelude to using associated types in traits rather than type parameters
2018-11-16Generalized base.rs#call_memcpy and everything that it usesDenis Merigoux-18/+23
Generalized operand.rs#nontemporal_store and fixed tidy issues Generalized operand.rs#nontemporal_store's implem even more With a BuilderMethod trait implemented by Builder for LLVM Cleaned builder.rs : no more code duplication, no more ValueTrait Full traitification of builder.rs
2018-11-16Reduced line length to pass tidyDenis Merigoux-13/+12
Generalized FunctionCx Added ValueTrait and first change Generalize CondegenCx Generalized the Builder struct defined in librustc_codegen_llvm/builder.rs
2018-11-12Use type safe `VariantIdx` instead of `usize` everywhereOliver Scherer-2/+2
2018-11-10Auto merge of #55650 - nikic:funnel-shift, r=nagisabors-0/+12
Implement rotate using funnel shift on LLVM >= 7 Implement the rotate_left and rotate_right operations using llvm.fshl and llvm.fshr if they are available (LLVM >= 7). Originally I wanted to expose the funnel_shift_left and funnel_shift_right intrinsics and implement rotate_left and rotate_right on top of them. However, emulation of funnel shifts requires emitting a conditional to check for zero shift amount, which is not necessary for rotates. I was uncomfortable doing that here, as I don't want to rely on LLVM to optimize away that conditional (and for variable rotates, I'm not sure it can). We should revisit that question when we raise our minimum version requirement to LLVM 7 and don't need emulation code anymore. Fixes #52457.
2018-11-08Rollup merge of #55633 - nikic:memcpy-align, r=nagisaMark Rousskov-6/+0
Support memcpy/memmove with differing src/dst alignment If LLVM 7 is used, generate memcpy/memmove with differing src/dst alignment. I've added new FFI functions to construct these through the builder API, which is more convenient than dealing with differing intrinsic signatures depending on the LLVM version. Fixes #49740.
2018-11-04rustc_target: pass contexts by reference, not value.Eduard-Mihai Burtescu-6/+6
2018-11-04Support memcpy/memmove with differing src/dst alignmentNikita Popov-6/+0
If LLVM 7 is used, generate memcpy/memmove with differing src/dst alignment. I've added new FFI functions to construct these through the builder API, which is more convenient than dealing with differing intrinsic signatures depending on the LLVM version.
2018-11-03Implement rotate using funnel shift on LLVM >= 7Nikita Popov-0/+12
Implement the rotate_left and rotate_right operations using llvm.fshl and llvm.fshr if they are available (LLVM >= 7). Originally I wanted to expose the funnel_shift_left and funnel_shift_right intrinsics and implement rotate_left and rotate_right on top of them. However, emulation of funnel shifts requires emitting a conditional to check for zero shift amount, which is not necessary for rotates. I was uncomfortable doing that here, as I don't want to rely on LLVM to optimize away that conditional (and for variable rotates, I'm not sure it can). We should revisit that question when we raise our minimum version requirement to LLVM 7 and don't need emulation code anymore.