Skip to content

Rollup of 7 pull requests #73547

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 24 commits into from
Closed
Changes from 1 commit
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
ebe5a91
Properly encode AnonConst into crate metadata
Aaron1011 May 26, 2020
a008a55
Add a disabled builder for riscv64 emulated tests
tblah May 18, 2020
253112d
Mark tests whcih don't work under riscv emulation
tblah Jun 9, 2020
086eaf8
tools: remote-test-client: fix typo
tblah Jun 10, 2020
83e6c0e
Update CFGuard syntax
ajpaverd Jun 16, 2020
afde860
ci: disable alt build during try builds
pietroalbini Jun 17, 2020
daedb79
Prevent attacker from manipulating FPU tag word used in SGX enclave
raoulstrackx Jun 17, 2020
1c34357
Emit line info for generator variants
tmandry Jun 17, 2020
f44731a
Add Artificial flag to generator variants
tmandry Jun 18, 2020
dd883ed
Add test for generator debuginfo
tmandry Jun 18, 2020
33b304c
Using xsave restore to restore complete FPU state
raoulstrackx Jun 19, 2020
6c45801
Allow calling GeneratorSubsts::variant_name() without substs
tmandry Jun 20, 2020
5fbb6ae
Improve GeneratorLayout debug output
tmandry Jun 20, 2020
2851c9f
Support sanitizers on aarch64-unknown-linux-gnu
tmiasko Jun 4, 2020
a3e88be
bootstrap: Build sanitizer runtimes for aarch64-unknown-linux-gnu
tmiasko Jun 6, 2020
d2e6e93
ci: Enable sanitizers on dist-aarch64-linux
tmiasko Jun 4, 2020
66e7a14
bootstrap: Factor out common code in supported_sanitizers
tmiasko Jun 8, 2020
c7fb172
Rollup merge of #72600 - Aaron1011:fix/anon-const-encoding, r=varkor
RalfJung Jun 20, 2020
522f1a6
Rollup merge of #73058 - tmiasko:aarch64-san, r=nagisa
RalfJung Jun 20, 2020
7951305
Rollup merge of #73171 - tblah:riscv-qemu-test, r=pietroalbini
RalfJung Jun 20, 2020
763f969
Rollup merge of #73404 - ajpaverd:cfguard_syntax, r=Mark-Simulacrum
RalfJung Jun 20, 2020
f4be902
Rollup merge of #73444 - pietroalbini:ci-remove-try-alt, r=Mark-Simul…
RalfJung Jun 20, 2020
50cbc1a
Rollup merge of #73460 - tmandry:variant-lineinfo, r=oli-obk
RalfJung Jun 20, 2020
1b2f52c
Rollup merge of #73471 - raoulstrackx:raoul/fpu_tag_word, r=jethrogb
RalfJung Jun 20, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add test for generator debuginfo
  • Loading branch information
tmandry committed Jun 18, 2020
commit dd883ed2f49bdfcd3479cdaec62902cbe53330db
94 changes: 94 additions & 0 deletions src/test/codegen/generator-debug.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
// Verify debuginfo for generators:
// - Each variant points to the file and line of its yield point
// - The generator types and variants are marked artificial
// - Captured vars from the source are not marked artificial
//
// ignore-tidy-linelength
// compile-flags: -C debuginfo=2 --edition=2018

#![feature(generators, generator_trait)]
use std::ops::Generator;

fn generator_test() -> impl Generator<Yield = i32, Return = ()> {
|| {
yield 0;
let s = String::from("foo");
yield 1;
}
}

async fn foo() {}
async fn async_fn_test() {
foo().await;
let s = String::from("foo");
foo().await;
}

// FIXME: We need "checksum" to prevent matching with the wrong (duplicate) file
// metadata, even when -C codegen-units=1.
// CHECK: [[FILE:!.*]] = !DIFile(filename: "{{.*}}/generator-debug.rs", {{.*}}, checksum:

// CHECK: [[GEN:!.*]] = !DICompositeType(tag: DW_TAG_structure_type, name: "generator-0", scope: [[FN:![0-9]*]],
// CHECK-SAME: flags: DIFlagArtificial
// CHECK: [[FN]] = !DINamespace(name: "generator_test"
// CHECK: [[VARIANT:!.*]] = !DICompositeType(tag: DW_TAG_variant_part, scope: [[FN]],
// CHECK-SAME: flags: DIFlagArtificial
// CHECK-SAME: discriminator: [[DISC:![0-9]*]]
// CHECK: {{!.*}} = !DIDerivedType(tag: DW_TAG_member, name: "0", scope: [[VARIANT]],
// CHECK-SAME: file: [[FILE]], line: 13,
// CHECK-SAME: flags: DIFlagArtificial
// CHECK: {{!.*}} = !DICompositeType(tag: DW_TAG_structure_type, name: "Unresumed", scope: [[GEN]],
// CHECK-SAME: flags: DIFlagArtificial
// CHECK: {{!.*}} = !DIDerivedType(tag: DW_TAG_member, name: "1", scope: [[VARIANT]],
// CHECK-SAME: file: [[FILE]], line: 17,
// CHECK-SAME: flags: DIFlagArtificial
// CHECK: {{!.*}} = !DIDerivedType(tag: DW_TAG_member, name: "2", scope: [[VARIANT]],
// CHECK-SAME: file: [[FILE]], line: 17,
// CHECK-SAME: flags: DIFlagArtificial
// CHECK: {{!.*}} = !DIDerivedType(tag: DW_TAG_member, name: "3", scope: [[VARIANT]],
// CHECK-SAME: file: [[FILE]], line: 14,
// CHECK-SAME: flags: DIFlagArtificial
// CHECK: {{!.*}} = !DIDerivedType(tag: DW_TAG_member, name: "4", scope: [[VARIANT]],
// CHECK-SAME: file: [[FILE]], line: 16,
// CHECK-SAME: flags: DIFlagArtificial
// CHECK: [[S1:!.*]] = !DICompositeType(tag: DW_TAG_structure_type, name: "Suspend1", scope: [[GEN]],
// CHECK-SAME: flags: DIFlagArtificial
// CHECK: {{!.*}} = !DIDerivedType(tag: DW_TAG_member, name: "s", scope: [[S1]]
// CHECK-NOT: flags: DIFlagArtificial
// CHECK-SAME: )
// CHECK: [[DISC]] = !DIDerivedType(tag: DW_TAG_member, name: "__state", scope: [[FN]],
// CHECK-SAME: flags: DIFlagArtificial

// CHECK: [[GEN:!.*]] = !DICompositeType(tag: DW_TAG_structure_type, name: "generator-0", scope: [[FN:![0-9]*]],
// CHECK-SAME: flags: DIFlagArtificial
// CHECK: [[FN]] = !DINamespace(name: "async_fn_test"
// CHECK: [[VARIANT:!.*]] = !DICompositeType(tag: DW_TAG_variant_part, scope: [[FN]],
// CHECK-SAME: flags: DIFlagArtificial
// CHECK-SAME: discriminator: [[DISC:![0-9]*]]
// CHECK: {{!.*}} = !DIDerivedType(tag: DW_TAG_member, name: "0", scope: [[VARIANT]],
// CHECK-SAME: file: [[FILE]], line: 21,
// CHECK-SAME: flags: DIFlagArtificial
// CHECK: {{!.*}} = !DIDerivedType(tag: DW_TAG_member, name: "1", scope: [[VARIANT]],
// CHECK-SAME: file: [[FILE]], line: 25,
// CHECK-SAME: flags: DIFlagArtificial
// CHECK: {{!.*}} = !DIDerivedType(tag: DW_TAG_member, name: "2", scope: [[VARIANT]],
// CHECK-SAME: file: [[FILE]], line: 25,
// CHECK-SAME: flags: DIFlagArtificial
// CHECK: {{!.*}} = !DIDerivedType(tag: DW_TAG_member, name: "3", scope: [[VARIANT]],
// CHECK-SAME: file: [[FILE]], line: 22,
// CHECK-SAME: flags: DIFlagArtificial
// CHECK: {{!.*}} = !DIDerivedType(tag: DW_TAG_member, name: "4", scope: [[VARIANT]],
// CHECK-SAME: file: [[FILE]], line: 24,
// CHECK-SAME: flags: DIFlagArtificial
// CHECK: [[S1:!.*]] = !DICompositeType(tag: DW_TAG_structure_type, name: "Suspend1", scope: [[GEN]],
// CHECK-SAME: flags: DIFlagArtificial
// CHECK: {{!.*}} = !DIDerivedType(tag: DW_TAG_member, name: "s", scope: [[S1]]
// CHECK-NOT: flags: DIFlagArtificial
// CHECK-SAME: )
// CHECK: [[DISC]] = !DIDerivedType(tag: DW_TAG_member, name: "__state", scope: [[FN]],
// CHECK-SAME: flags: DIFlagArtificial

fn main() {
let _dummy = generator_test();
let _dummy = async_fn_test();
}