about summary refs log tree commit diff
path: root/src/librustc_codegen_llvm/mir/mod.rs
AgeCommit message (Collapse)AuthorLines
2018-11-16Great separation of librustc_codegen_llvm: librustc_codegen_ssa compilesDenis Merigoux-682/+0
2018-11-16[eddyb/rebase cleanup] abstracted FuncletEduard-Mihai Burtescu-7/+6
2018-11-16Generalized mir::codegen_mir (and all subsequent functions)Denis Merigoux-79/+75
2018-11-16Generalized base::coerce_unsized_intoDenis Merigoux-1/+1
2018-11-16Generalized base::unsized_infoDenis 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-1/+1
2018-11-16Prefixed const methods with "const" instead of "c"Denis Merigoux-2/+2
2018-11-16Traitification of type_ methodsDenis Merigoux-2/+1
The methods are now attached to CodegenCx instead of Type
2018-11-16Use the method form for CodegenCx everywhereDenis Merigoux-1/+1
2018-11-16Added self argument for Codegen CommonMethod trait methodsDenis Merigoux-1/+1
2018-11-16Replaced Codegen field access by trait methodDenis Merigoux-9/+9
2018-11-16Traitification of common.rs methodsDenis Merigoux-4/+3
2018-11-16New files and folders for traitsDenis Merigoux-1/+1
Moved common enums to common
2018-11-16Removed genericity over Value in various functionsDenis Merigoux-1/+1
Prelude to using associated types in traits rather than type parameters
2018-11-16Generalized base.rs#call_memcpy and everything that it usesDenis Merigoux-1/+6
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-7/+8
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-9/+12
2018-11-03Implement rotate using funnel shift on LLVM >= 7Nikita Popov-1/+2
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.
2018-10-09codegen_llvm/misc: whitespace & formatting improvementsljedrz-4/+4
2018-09-18Merge indexed_set.rs into bitvec.rs, and rename it bit_set.rs.Nicholas Nethercote-3/+3
Currently we have two files implementing bitsets (and 2D bit matrices). This commit combines them into one, taking the best features from each. This involves renaming a lot of things. The high level changes are as follows. - bitvec.rs --> bit_set.rs - indexed_set.rs --> (removed) - BitArray + IdxSet --> BitSet (merged, see below) - BitVector --> GrowableBitSet - {,Sparse,Hybrid}IdxSet --> {,Sparse,Hybrid}BitSet - BitMatrix --> BitMatrix - SparseBitMatrix --> SparseBitMatrix The changes within the bitset types themselves are as follows. ``` OLD OLD NEW BitArray<C> IdxSet<T> BitSet<T> -------- ------ ------ grow - grow new - (remove) new_empty new_empty new_empty new_filled new_filled new_filled - to_hybrid to_hybrid clear clear clear set_up_to set_up_to set_up_to clear_above - clear_above count - count contains(T) contains(&T) contains(T) contains_all - superset is_empty - is_empty insert(T) add(&T) insert(T) insert_all - insert_all() remove(T) remove(&T) remove(T) words words words words_mut words_mut words_mut - overwrite overwrite merge union union - subtract subtract - intersect intersect iter iter iter ``` In general, when choosing names I went with: - names that are more obvious (e.g. `BitSet` over `IdxSet`). - names that are more like the Rust libraries (e.g. `T` over `C`, `insert` over `add`); - names that are more set-like (e.g. `union` over `merge`, `superset` over `contains_all`, `domain_size` over `num_bits`). Also, using `T` for index arguments seems more sensible than `&T` -- even though the latter is standard in Rust collection types -- because indices are always copyable. It also results in fewer `&` and `*` sigils in practice.
2018-09-07make field always private, add `From` implsNiko Matsakis-1/+1
2018-08-22Remove Ty prefix from ↵varkor-6/+6
Ty{Adt|Array|Slice|RawPtr|Ref|FnDef|FnPtr|Dynamic|Closure|Generator|GeneratorWitness|Never|Tuple|Projection|Anon|Infer|Error}
2018-08-19mv codemap() source_map()Donato Sciarra-1/+1
2018-08-19Integrate PassMode::UnsizedIndirect into PassMode::Indirect.Masaki Hara-1/+1
2018-08-19Implement simple codegen for unsized rvalues.Masaki Hara-12/+46
2018-08-09rustc_codegen_llvm: Restore the closure env alloca hack for LLVM 5.Josh Stone-2/+24
This hack was removed in #50949, but without it I found that building `std` with full debuginfo would print many LLVM `DW_OP_LLVM_fragment` errors, then die `LLVM ERROR: Failed to strip malformed debug info`. It doesn't seem to be a problem for LLVM 6, so we can re-enable the hack just for older LLVM. This reverts commit da579ef75e4a8ca11fb98b24a0a3ea0c7ccffeeb. Fixes #53204. r? @eddyb
2018-08-04Normalize DebugInfoLevel to standard styleMark Rousskov-3/+3
2018-08-01Split out growth functionality into BitVector typeMark Rousskov-3/+3
2018-07-30rustc_codegen_llvm: use safe references for BasicBlock.Irina Popa-7/+7
2018-07-30rustc_codegen_llvm: use safe references for Value.Irina Popa-14/+15
2018-07-30rustc_codegen_llvm: use safe references for Metadata and DI*.Irina Popa-14/+13
2018-07-30rustc_codegen_llvm: use safe references for Type.Irina Popa-12/+13
2018-07-30rustc_codegen_llvm: move from empty enums to extern types.Irina Popa-12/+13
2018-07-25parameterize `BitVector` and `BitMatrix` by their index typesNiko Matsakis-4/+4
2018-07-09bump minimum LLVM version to 5.0gnzlbg-18/+4
2018-05-30rustc: rename mir::LocalDecl's syntactic_source_info to source_info.Eduard-Mihai Burtescu-1/+1
2018-05-30rustc: turn mir::LocalDecl's visibility_source_info into a SourceScope.Eduard-Mihai Burtescu-2/+5
2018-05-30rustc: rename mir::LocalDecl's source_info to visibility_source_info.Eduard-Mihai Burtescu-2/+2
2018-05-30rustc: rename mir::VisibilityScope to mir::SourceScope.Eduard-Mihai Burtescu-5/+5
2018-05-21rustc_codegen_llvm: remove closure env alloca hack around upvar debuginfo.Eduard-Mihai Burtescu-22/+2
2018-05-21rustc_codegen_llvm: remove debuginfo::VariableKind::CapturedVariable.Eduard-Mihai Burtescu-1/+1
2018-05-17Rename trans to codegen everywhere.Irina Popa-0/+652