about summary refs log tree commit diff
path: root/src/test/codegen
AgeCommit message (Collapse)AuthorLines
2019-11-29Auto merge of #66645 - RalfJung:dereferenceable, r=pnkfelixbors-1/+3
remove the 'dereferenceable' attribute from Box Fixes https://github.com/rust-lang/rust/issues/66600 r? @eddyb @rkruppe
2019-11-22remove the 'dereferenceable' attribute from BoxRalf Jung-1/+3
2019-11-22Add support for tracking origins of uninitialized memoryTomasz Miąsko-0/+28
2019-11-22Add support for sanitizer recoveryTomasz Miąsko-0/+34
2019-11-21Introduce MIR optimizations for simplifying `x?` on `Result`s.Mazdak Farrokhzad-3/+22
This optimization depends on inlining for the identity conversions introduced by the lowering of the `?`. To take advantage of `SimplifyArmIdentity`, `-Z mir-opt-level=2` is required because that triggers the inlining MIR optimization.
2019-11-21Remove `#![feature(never_type)]` from tests.Mazdak Farrokhzad-2/+0
Also remove `never_type` the feature-gate test.
2019-11-11[mir-opt] Turn on the `ConstProp` pass by defaultWesley Wiser-3/+3
perf.rlo shows that running the `ConstProp` pass results in across-the-board wins regardless of debug or opt complilation mode. As a result, we're turning it on to get the compile time benefits. `ConstProp` doesn't currently intern the memory used by its `Machine` so we can't yet propagate allocations which is why `ConstProp::should_const_prop()` checks if the value being propagated is a scalar or not.
2019-11-04Do not require extra LLVM backends for `x.py test` to passVadim Petrochenkov-5/+1
2019-10-31rustc_codegen_ssa: move all set_var_name calls to mir::debuginfo.Eduard-Mihai Burtescu-86/+99
2019-10-29Rollup merge of #65832 - tlively:emscripten-exception-handling, r=alexcrichtonTyler Mandry-5/+5
Re-enable Emscripten's exception handling support Passes LLVM codegen and Emscripten link-time flags for exception handling if and only if the panic strategy is `unwind`. Sets the default panic strategy for Emscripten targets to `unwind`. Re-enables tests that depend on unwinding support for Emscripten, including `should_panic` tests. r? @alexcrichton
2019-10-26Only run efiapi test on llvm 9.0+roblabla-0/+2
2019-10-25Re-enable Emscripten's exception handling supportThomas Lively-5/+5
Passes LLVM codegen and Emscripten link-time flags for exception handling if and only if the panic strategy is `unwind`. Sets the default panic strategy for Emscripten targets to `unwind`. Re-enables tests that depend on unwinding support for Emscripten, including `should_panic` tests.
2019-10-25Fix EFIABI testroblabla-12/+21
Use revisions to run the EFIABI in multiple configurations, compiling for each supported UEFI platform, and checking the ABI generated in the LLVM IR is correct. Use no_core to make it easier to test.
2019-10-25Add new EFIAPI ABIroblabla-0/+20
Adds a new ABI for the EFIAPI calls. This ABI should reflect the latest version of the UEFI specification at the time of commit (UEFI spec 2.8, URL below). The specification says that for x86_64, we should follow the win64 ABI, while on all other supported platforms (ia32, itanium, arm, arm64 and risc-v), we should follow the C ABI. To simplify the implementation, we will simply follow the C ABI on all platforms except x86_64, even those technically unsupported by the UEFI specification. https://uefi.org/sites/default/files/resources/UEFI_Spec_2_8_final.pdf
2019-10-16Upgrade Emscripten targets to use upstream LLVM backendThomas Lively-118/+92
- 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-12make tests more robustRalf Jung-2/+2
2019-10-12some typographyRalf Jung-2/+2
2019-10-12also (properly) test nounwind on function definitionsRalf Jung-6/+19
2019-10-12update test for nounwind on FFI importsRalf Jung-19/+41
2019-09-28Gate llvm.sideeffect under -Z insert-sideeffectXiang Fan-35/+19
2019-09-28Add llvm.sideeffect to potential infinite loops and recursionsXiang Fan-16/+82
LLVM assumes that a thread will eventually cause side effect. This is not true in Rust if a loop or recursion does nothing in its body, causing undefined behavior even in common cases like `loop {}`. Inserting llvm.sideeffect fixes the undefined behavior. As a micro-optimization, only insert llvm.sideeffect when jumping back in blocks or calling a function. A patch for LLVM is expected to allow empty non-terminate code by default and fix this issue from LLVM side. https://github.com/rust-lang/rust/issues/28728
2019-09-13codegen: use "_N" (like for other locals) instead of "argN", for argument names.Eduard-Mihai Burtescu-54/+54
2019-09-12codegen: be more explicit about setting giving names to allocas.Eduard-Mihai Burtescu-4/+5
2019-09-09test/c-variadic: Fix patterns on powerpc64Samuel Holland-11/+12
On architectures such as powerpc64 that use extend_integer_width_to in their C ABI processing, integer parameters shorter than the native register width will be annotated with the ArgAttribute::SExt or ArgAttribute::ZExt attribute, and that attribute will be included in the generated LLVM IR. In this test, all relevant parameters are `i32`, which will get the `signext` annotation on the relevant 64-bit architectures. Match both the annotated and non-annotated case, but enforce that the annotation is applied consistently.
2019-09-06rustc_codegen_llvm: give names to non-alloca variable values.Eduard-Mihai Burtescu-0/+15
2019-08-29Small improvement for Ord implementation of integersLzu Tao-2/+2
2019-08-26add link to FileCheck docsRalf Jung-0/+2
2019-08-25Force #[unwind(aborts)] in test/codegen/c-variadic.rsJosh Stone-0/+6
2019-08-21Add codegen test for integers compareLzu Tao-0/+28
2019-08-19Cherry-pick src/test changes with Centril's changessd234678-3/+0
2019-08-12Add codegen tests for the genericity of fold closuresJosh Stone-0/+24
2019-07-16Auto merge of #62592 - nikic:actually-update-llvm, r=alexcrichtonbors-12/+14
Update to LLVM 9 trunk Following the preparatory changes in #62474, this updates the LLVM submodule to https://github.com/rust-lang/llvm-project/tree/rustc/9.0-2019-07-12 and: * Changes the LLVM Rust bindings to account for the new SubtargetSubTypeKV. * Adjusts a codegen test for the new form of the byval attribute that takes a type. * Makes a PGO codegen test more liberal with regard to order and linkage. * Builds InstrProfilingPlatformWindows.c as part of libprofiler_builtins. * Moves registration of additional passes (in particular sanitizers) to the end of the module pass manager. * Disables LLDB on builders. r? @alexcrichton
2019-07-15ignore some codegen tests in debug modeRalf Jung-0/+3
2019-07-15Relax checks in pgo-instrumentation codegen testNikita Popov-4/+4
Don't require a specific order for the per-function globals, and don't require the locals to have private linkage (apparently internal linkage is also possible).
2019-07-15Update transparent aggregate codegen test for byval changesNikita Popov-8/+10
2019-07-09Adjust codegen tests for DISPFlagMainSubprogramNikita Popov-2/+2
2019-06-21Stabilize profile-guided optimization.Michael Woerister-2/+2
2019-06-18Auto merge of #59625 - immunant:copy_variadics_typealias, r=eddybbors-3/+30
Refactor C FFI variadics to more closely match their C counterparts, and add Clone implementation We had to make some changes to expose `va_copy` and `va_end` directly to users (mainly for C2Rust, but not exclusively): - redefine the Rust variadic structures to more closely correspond to C: `VaList` now matches `va_list`, and `VaListImpl` matches `__va_list_tag` - add `Clone` for `VaListImpl` - add explicit `as_va_list()` conversion function from `VaListImpl` to `VaList` - add deref coercion from `VaList` to `VaListImpl` - add support for the `asmjs` target All these changes were needed for use cases like: ```Rust let mut ap2 = va_copy(ap); vprintf(fmt, ap2); va_end(&mut ap2); ```
2019-06-17Expose `VaListImpl` as the Rust equivalent of `__va_list_tag` and implement ↵Andrei Homescu-3/+30
Clone for it.
2019-06-17Rollup merge of #61885 - scottmcm:slice-iter-len-opt, r=rkruppe,RalfJungMazdak Farrokhzad-0/+14
Help LLVM better optimize slice::Iter(Mut)::len r? @RalfJung I've included a codegen test that fails without this change as a demonstration of usefulness.
2019-06-15Help LLVM better optimize slice::Iter(Mut)::lenScott McMurray-0/+14
2019-06-13Create fewer basic blocks in match MIR loweringMatthew Jasper-2/+2
2019-06-11Rollup merge of #61526 - lcnr:test_reorder, r=nikomatsakisMazdak Farrokhzad-2/+2
move some tests into subfolders This reduces the size of the test folders without making the moved tests harder to find. Is this kind of change desired/worth the effort?
2019-06-10Implement RFC 2645 (transparent enums and unions)Michael Bradshaw-28/+190
Tracking issue: #60405
2019-06-09Auto merge of #61229 - Centril:stabilize-repr_align_enum, r=nagisabors-1/+0
Stabilize #![feature(repr_align_enum)] in Rust 1.37.0 On an `enum` item, you may now write: ```rust #[repr(align(X))] enum Foo { // ... } ``` This has equivalent effects to first defining: ```rust #[repr(align(X))] struct AlignX<T>(T); ``` and then using `AlignX<Foo>` in `Foo`'s stead. r? @nagisa
2019-06-08Turn `#[allocator]` into a built-in attribute and rename it to ↵Vadim Petrochenkov-2/+2
`#[rustc_allocator]`
2019-06-04improve test indentationlcnr/Bastian Kauschke-2/+2
2019-06-04move intrinsics codegen tests into a seperate folderlcnr/Bastian Kauschke-0/+0
2019-06-03add codegen test for unchecked mathlcnr/Bastian Kauschke-0/+46
2019-05-31test: support both (`legacy` and `v0`) choices of mangling.Eduard-Mihai Burtescu-17/+38