about summary refs log tree commit diff
path: root/src/librustc_codegen_llvm/mir/operand.rs
AgeCommit message (Collapse)AuthorLines
2018-11-16Great separation of librustc_codegen_llvm: librustc_codegen_ssa compilesDenis Merigoux-474/+0
2018-11-16Generalized mir::codegen_mir (and all subsequent functions)Denis Merigoux-79/+67
2018-11-16Generalized base::coerce_unsized_intoDenis Merigoux-14/+27
2018-11-16Traitified IntrinsicCallMethodsDenis Merigoux-1/+1
2018-11-16Transfered memcpy and memset to BuilderMethodsDenis Merigoux-1/+1
2018-11-16Generalized memset and memcpyDenis Merigoux-1/+1
2018-11-16Removing LLVM content from CommonMethods -> ConstMethodsDenis Merigoux-1/+1
2018-11-16Prefixed type methods & removed trait impl for write::CodegenContextDenis Merigoux-2/+2
2018-11-16Prefixed const methods with "const" instead of "c"Denis Merigoux-4/+4
2018-11-16Traitification of type_ methodsDenis Merigoux-4/+3
The methods are now attached to CodegenCx instead of Type
2018-11-16Added self argument for Codegen CommonMethod trait methodsDenis Merigoux-4/+4
2018-11-16Replaced Codegen field access by trait methodDenis Merigoux-27/+27
2018-11-16Traitification of common.rs methodsDenis Merigoux-6/+6
2018-11-16New files and folders for traitsDenis Merigoux-1/+1
Moved common enums to common
2018-11-16Use associated types instead of type parameters inside the BuilderMethods traitDenis Merigoux-6/+3
2018-11-16Removed genericity over Value in various functionsDenis Merigoux-9/+7
Prelude to using associated types in traits rather than type parameters
2018-11-16Generalized BasicBlocks in BuilderMethods traitDenis Merigoux-2/+4
2018-11-16Generalized base.rs#call_memcpy and everything that it usesDenis Merigoux-9/+26
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-3/+3
Generalized FunctionCx Added ValueTrait and first change Generalize CondegenCx Generalized the Builder struct defined in librustc_codegen_llvm/builder.rs
2018-11-16rustc_codegen_llvm: begin generalizing over backend values.Irina Popa-23/+35
2018-11-04Support memcpy/memmove with differing src/dst alignmentNikita Popov-3/+3
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-10-25Rebase fallout in ui outputOliver Schneider-2/+0
2018-10-25Report const eval error inside the queryOliver Schneider-6/+10
2018-09-30do not normalize non-scalar constants to a ConstValue::ScalarPairRalf Jung-11/+7
2018-09-07make field always private, add `From` implsNiko Matsakis-1/+0
2018-08-27Miri Memory WorkRalf Jung-1/+1
* Unify the two maps in memory to store the allocation and its kind together. * Share the handling of statics between CTFE and miri: The miri engine always uses "lazy" `AllocType::Static` when encountering a static. Acessing that static invokes CTFE (no matter the machine). The machine only has any influence when writing to a static, which CTFE outright rejects (but miri makes a copy-on-write). * Add an `AllocId` to by-ref consts so miri can use them as operands without making copies. * Move responsibilities around for the `eval_fn_call` machine hook: The hook just has to find the MIR (or entirely take care of everything); pushing the new stack frame is taken care of by the miri engine. * Expose the intrinsics and lang items implemented by CTFE so miri does not have to reimplement them.
2018-08-19Integrate OperandValue::UnsizedRef into OperandValue::Ref.Masaki Hara-12/+8
2018-08-19Implement simple codegen for unsized rvalues.Masaki Hara-3/+43
2018-08-02Second field of ScalarPair can be undef in some casesOliver Schneider-7/+11
2018-07-30rustc_codegen_llvm: fix tidy errors.Irina Popa-1/+6
2018-07-30rustc_codegen_llvm: use safe references for Value.Irina Popa-46/+29
2018-07-30rustc_codegen_llvm: use safe references for Type.Irina Popa-13/+13
2018-07-30rustc_codegen_llvm: move from empty enums to extern types.Irina Popa-2/+1
2018-07-24Rollup merge of #52391 - Amanieu:volatile_unaligned, r=alexcrichtonMark Rousskov-0/+4
Add unaligned volatile intrinsics Surprisingly enough, it turns out that unaligned volatile loads are actually useful for certain (very niche) types of lock-free code. I included unaligned volatile stores for completeness, but I currently do not know of any use cases for them. These are only exposed as intrinsics for now. If they turn out to be useful in practice, we can work towards stabilizing them. r? @alexcrichton
2018-07-23Promoteds are statics and statics have a place, not just a valueOliver Schneider-28/+9
2018-07-20Abort instead of UB if promotion failsOliver Schneider-3/+8
2018-07-14Add unaligned volatile intrinsicsAmanieu d'Antras-0/+4
2018-07-05Update scalar pairs per review commentsJosh Stone-5/+1
2018-07-05Store scalar pair bools as i8 in memoryJosh Stone-11/+12
We represent `bool` as `i1` in a `ScalarPair`, unlike other aggregates, to optimize IR for checked operators and the like. With this patch, we still do so when the pair is an immediate value, but we use the `i8` memory type when the value is loaded or stored as an LLVM aggregate. So `(bool, bool)` looks like an `{ i1, i1 }` immediate, but `{ i8, i8 }` in memory. When a pair is a direct function argument, `PassMode::Pair`, it is still passed using the immediate `i1` type, but as a return value it will use the `i8` memory type. Also, `bool`-like` enum tags will now use scalar pairs when possible, where they were previously excluded due to optimization issues.
2018-06-28Merge `ConstVal` and `ConstValue`Oliver Schneider-6/+6
2018-06-28Move everything over from `middle::const_val` to `mir::interpret`Oliver Schneider-1/+1
2018-06-28Move the Lrc outside the error type and name the fieldsOliver Schneider-1/+2
2018-06-05Refactor the const eval diagnostic APIOliver Schneider-1/+4
2018-05-24primval -> scalar renameOliver Schneider-4/+4
2018-05-24Rename ByVal(Pair) to Scalar(Pair)Oliver Schneider-3/+3
2018-05-20Auto merge of #50841 - oli-obk:promote_errors_to_panics, r=eddybbors-2/+2
Don't lint numeric overflows in promoteds in release mode r? @eddyb mitigates #50814
2018-05-19Use `Size` instead of `u64` in mir interpretationOliver Schneider-1/+1
2018-05-19Go through an allocation when accessing fields of constantsOliver Schneider-3/+9
2018-05-19Add a test showing the erroneous promoted bugOliver Schneider-2/+2
2018-05-17Rename trans to codegen everywhere.Irina Popa-0/+427