about summary refs log tree commit diff
path: root/src/librustc_target/abi/call
AgeCommit message (Collapse)AuthorLines
2020-08-30mv compiler to compiler/mark-2526/+0
2020-06-09[AVR] Update ABI type classification logic to match the the AVR-Clang ABIDylan McKay-5/+31
This patch brings the AVR calling convention argument classification logic in line with AVR Clang's behaviour. AVR-Clang currently uses the `clang::DefaultABIInfo` ABI implementation. This calling convention promotes all aggregates to indirect, no matter their size. It is also unnecessary to perform any integer width extension for AVR as the minimum argument size matches the minimum describable size of abi::Primitive::Int - 8 bits. At some point in the future, an AVR-GCC compatible argument classification implementation should be adopted in both Clang and Rust.
2020-06-09[AVR] Add AVR platform supportJake Goulding-0/+37
2020-04-16rustc_target::abi: add Primitive variant to FieldsShape.Ana-Maria Mihalache-1/+8
2020-04-01Rollup merge of #70616 - anyska:fieldplacement-rename, r=oli-obkDylan DPC-12/+12
rustc_target::abi: rename FieldPlacement to FieldsShape. Originally suggested by @eddyb.
2020-03-31rustc_target::abi: rename FieldPlacement to FieldsShape.Ana-Maria Mihalache-12/+12
2020-03-30Add `can_unwind` field to `FnAbi`Wesley Wiser-0/+2
This is a pure refactoring with no behavior changes.
2020-03-30Use if let instead of match when only matching a single variant ↵Matthias Krüger-13/+8
(clippy::single_match) Makes code more compact and reduces nestig.
2020-03-27Rename TyLayout to TyAndLayout.Ana-Maria Mihalache-113/+113
2020-03-06fix various typosMatthias Krüger-3/+3
2020-02-08Auto merge of #68452 - msizanoen1:riscv-abi, r=nagisa,eddybbors-15/+330
Implement proper C ABI lowering for RISC-V This is necessary for full RISC-V psABI compliance when passing argument across C FFI boundary. cc @lenary
2020-02-08rustc_target: treat enum variants like union members, in call ABIs.Eduard-Mihai Burtescu-9/+43
2020-02-08rustc_target: switch homogeneous_aggregate to returning Result.Eduard-Mihai Burtescu-67/+86
2020-02-04Implement proper C ABI lowering for RISC-Vmsizanoen1-15/+330
2019-12-25tidy: change msdn links to newer locationsLzu Tao-1/+1
see accouncement at https://docs.microsoft.com/welcome-to-docs
2019-12-22Format the worldMark Rousskov-342/+336
2019-12-06Rename to `then_some` and `then`varkor-5/+5
2019-12-06Use `to_option` in various placesvarkor-37/+5
2019-12-03rustc_target: add abi::call::Conv::Rust distinct from Conv::C.Eduard-Mihai Burtescu-0/+5
2019-11-25review feedback: comments and spacingRalf Jung-1/+2
2019-11-22remove the 'dereferenceable' attribute from BoxRalf Jung-0/+1
2019-11-09Rollup merge of #66050 - smaeul:patch/powerpc-abi-2, r=eddybMazdak Farrokhzad-32/+11
Fix C aggregate-passing ABI on powerpc The existing code (which looks like it was copied from MIPS) passes aggregates by value in registers. This is wrong. According to the SVR4 powerpc psABI, all aggregates are passed indirectly. See #64259 for more discussion, which addresses the ABI for the special case of ZSTs (empty structs).
2019-11-07rustc_target: inline abi::FloatTy into abi::Primitive.Eduard-Mihai Burtescu-5/+5
2019-11-05Fix C aggregate-passing ABI on powerpcSamuel Holland-32/+11
The existing code (which looks like it was copied from MIPS) passes aggregates by value in registers. This is wrong. According to the SVR4 powerpc psABI, all aggregates are passed indirectly. See #64259 for more discussion, which addresses the ABI for the special case of ZSTs (empty structs).
2019-11-03rustc_target: rename {Fn,Arg}Type to {Fn,Arg}Abi.Eduard-Mihai Burtescu-185/+185
2019-10-16Upgrade Emscripten targets to use upstream LLVM backendThomas Lively-62/+77
- Compatible with Emscripten 1.38.46-upstream or later upstream. - Refactors the Emscripten target spec to share code with other wasm targets. - Replaces the old incorrect wasm32 C call ABI with the correct one, preserving the old one as wasm32_bindgen_compat for wasm-bindgen compatibility. - Updates the varargs ABI used by Emscripten and deletes the old one. - Removes the obsolete wasm32-experimental-emscripten target. - Uses EMCC_CFLAGS on CI to avoid the timeout problems with #63649.
2019-10-05Revert "Auto merge of #63649 - tlively:emscripten-upstream-upgrade, ↵Tyler Mandry-77/+62
r=alexcrichton" This reverts commit 7870050796e5904a0fc85ecbe6fa6dde1cfe0c91, reversing changes made to 2e7244807a7878f6eca3eb7d97ae9b413aa49014.
2019-10-04Add C ABI for wasm-bindgen compatThomas Lively-0/+30
2019-10-04Fix ABI, run and fix more tests, re-enable CI for PRsThomas Lively-10/+28
2019-10-04Upgrade Emscripten targets to use upstream LLVM backendThomas Lively-62/+29
- Refactors the Emscripten target spec to share code with other wasm targets. - Replaces the incorrect wasm32 C call ABI with the old asmjs version, which is correct for both wasm32 and JS. - Updates the varargs ABI used by Emscripten and deletes the old one. - Removes the obsolete wasm32-experimental-emscripten target. - Temporarily makes Emscripten targets use panic=abort by default because supporting unwinding will require an LLVM patch.
2019-09-28rustc: rely on c_variadic == true instead of CVarArgs in HIR/Ty fn signatures.Eduard-Mihai Burtescu-12/+4
2019-07-28Remove lint annotations in specific crates that are already enforced by ↵Vadim Petrochenkov-2/+0
rustbuild Remove some random unnecessary lint `allow`s
2019-07-05rustc_target: avoid negative register counts in the SysV x86_64 ABI.Eduard-Mihai Burtescu-9/+24
2019-03-29rustc_target: factor out common fields of non-Single Variants.Eduard-Mihai Burtescu-2/+1
2019-02-27Rename variadic to c_variadicDan Robertson-2/+2
Function signatures with the `variadic` member set are actually C-variadic functions. Make this a little more explicit by renaming the `variadic` boolean value, `c_variadic`.
2019-02-27Support defining C compatible variadic functionsDan Robertson-4/+15
Add support for defining C compatible variadic functions in unsafe rust with extern "C".
2019-02-10rustc: doc commentsAlexander Regueiro-6/+6
2019-02-08librustc_target => 2018Taiki Endo-79/+79
2019-01-25distinguish "no data" from "heterogeneous" for ABI purposesNiko Matsakis-19/+72
Also, add a testing infrastructure and tests that lets us dump layout.
2018-12-25Remove licensesMark Rousskov-210/+0
2018-12-07Various minor/cosmetic improvements to codeAlexander Regueiro-4/+4
2018-11-22rustc_target: avoid using AbiAndPrefAlign where possible.Eduard-Mihai Burtescu-30/+30
2018-11-22rustc_target: separate out an individual Align from AbiAndPrefAlign.Eduard-Mihai Burtescu-4/+4
2018-11-22rustc_target: rename abi::Align to AbiAndPrefAlign.Eduard-Mihai Burtescu-7/+7
2018-11-15Use the ELFv2 ABI on powerpc64 muslSamuel Holland-5/+10
2018-11-15Fix powerpc64 ELFv2 big-endian struct-passing ABISamuel Holland-17/+12
The requirements here are not "ELFv1" requirements, but big-endian requirements, as the extension or non-extension of the argument is necessary to put the argument in the correct half of the register. Parameter passing in the ELFv2 ABI needs these same transformations. Since this code makes no difference on little-endian machines, simplify it to use the same code path everywhere.
2018-11-04rustc_target: pass contexts by reference, not value.Eduard-Mihai Burtescu-49/+49
2018-08-20AMDGPU call abi info.Richard Diamond-0/+44
2018-08-19Integrate PassMode::UnsizedIndirect into PassMode::Indirect.Masaki Hara-29/+23
2018-08-19Implement simple codegen for unsized rvalues.Masaki Hara-0/+29