mirror of
https://github.com/rust-lang/rust.git
synced 2026-04-30 23:03:06 +03:00
a24ee0329e
Generate debuginfo for scalable vectors, following the structure that Clang generates for scalable vectors.
125 lines
6.1 KiB
Rust
125 lines
6.1 KiB
Rust
// ignore-tidy-linelength
|
|
//@ only-aarch64
|
|
//@ only-linux
|
|
//@ compile-flags: -Cdebuginfo=2 -Copt-level=0
|
|
//@ revisions: POST-LLVM-22 PRE-LLVM-22
|
|
//@ [PRE-LLVM-22] max-llvm-major-version: 21
|
|
//@ [POST-LLVM-22] min-llvm-version: 22
|
|
|
|
#![crate_type = "lib"]
|
|
#![allow(incomplete_features, internal_features)]
|
|
#![feature(rustc_attrs)]
|
|
|
|
// Test that we generate the correct debuginfo for scalable vector types.
|
|
|
|
#[rustc_scalable_vector(16)]
|
|
#[allow(non_camel_case_types)]
|
|
struct svbool_t(bool);
|
|
|
|
#[rustc_scalable_vector(16)]
|
|
#[allow(non_camel_case_types)]
|
|
struct svint8_t(i8);
|
|
|
|
#[rustc_scalable_vector(16)]
|
|
#[allow(non_camel_case_types)]
|
|
struct svuint8_t(u8);
|
|
|
|
#[rustc_scalable_vector(8)]
|
|
#[allow(non_camel_case_types)]
|
|
struct svint16_t(i16);
|
|
|
|
#[rustc_scalable_vector(8)]
|
|
#[allow(non_camel_case_types)]
|
|
struct svuint16_t(u16);
|
|
|
|
#[rustc_scalable_vector(4)]
|
|
#[allow(non_camel_case_types)]
|
|
struct svint32_t(i32);
|
|
|
|
#[rustc_scalable_vector(4)]
|
|
#[allow(non_camel_case_types)]
|
|
struct svuint32_t(u32);
|
|
|
|
#[rustc_scalable_vector(2)]
|
|
#[allow(non_camel_case_types)]
|
|
struct svint64_t(i64);
|
|
|
|
#[rustc_scalable_vector(2)]
|
|
#[allow(non_camel_case_types)]
|
|
struct svuint64_t(u64);
|
|
|
|
#[rustc_scalable_vector(4)]
|
|
#[allow(non_camel_case_types)]
|
|
struct svfloat32_t(f32);
|
|
|
|
#[rustc_scalable_vector(2)]
|
|
#[allow(non_camel_case_types)]
|
|
struct svfloat64_t(f64);
|
|
|
|
#[target_feature(enable = "sve")]
|
|
pub fn locals() {
|
|
// CHECK-DAG: name: "svbool_t",{{.*}}, baseType: ![[CT1:[0-9]+]]
|
|
// PRE-LLVM-22-DAG: ![[CT1]] = !DICompositeType(tag: DW_TAG_array_type, baseType: ![[ELTTYU8:[0-9]+]],{{.*}}, flags: DIFlagVector, elements: ![[ELTS8:[0-9]+]])
|
|
// POST-LLVM-22-DAG: ![[CT1]] = !DICompositeType(tag: DW_TAG_array_type, baseType: ![[ELTTYU8:[0-9]+]],{{.*}}, flags: DIFlagVector, elements: ![[ELTS8:[0-9]+]], bitStride: i64 1)
|
|
// CHECK-DAG: ![[ELTTYU8]] = !DIBasicType(name: "u8", size: 8, encoding: DW_ATE_unsigned)
|
|
// CHECK-DAG: ![[ELTS8]] = !{![[REALELTS8:[0-9]+]]}
|
|
// CHECK-DAG: ![[REALELTS8]] = !DISubrange(lowerBound: 0, upperBound: !DIExpression(DW_OP_constu, 8, DW_OP_bregx, 46, 0, DW_OP_mul, DW_OP_constu, 1, DW_OP_minus))
|
|
let b8: svbool_t;
|
|
|
|
// CHECK-DAG: name: "svint8_t",{{.*}}, baseType: ![[CT8:[0-9]+]]
|
|
// CHECK-DAG: ![[CT8]] = !DICompositeType(tag: DW_TAG_array_type, baseType: ![[ELTTYS8:[0-9]+]],{{.*}}, flags: DIFlagVector, elements: ![[ELTS8:[0-9]+]])
|
|
// CHECK-DAG: ![[ELTTYS8]] = !DIBasicType(name: "i8", size: 8, encoding: DW_ATE_signed)
|
|
let s8: svint8_t;
|
|
|
|
// PRE-LLVM-22-DAG: name: "svuint8_t",{{.*}}, baseType: ![[CT1:[0-9]+]]
|
|
// POST-LLVM-22-DAG: name: "svuint8_t",{{.*}}, baseType: ![[CT8:[0-9]+]]
|
|
// POST-LLVM-22-DAG: ![[CT8]] = !DICompositeType(tag: DW_TAG_array_type, baseType: ![[ELTTYU8]],{{.*}}, flags: DIFlagVector, elements: ![[ELTS8]])
|
|
let u8: svuint8_t;
|
|
|
|
// CHECK-DAG: name: "svint16_t",{{.*}}, baseType: ![[CT16:[0-9]+]]
|
|
// CHECK-DAG: ![[CT16]] = !DICompositeType(tag: DW_TAG_array_type, baseType: ![[ELTTY16:[0-9]+]],{{.*}}, flags: DIFlagVector, elements: ![[ELTS16:[0-9]+]])
|
|
// CHECK-DAG: ![[ELTTY16]] = !DIBasicType(name: "i16", size: 16, encoding: DW_ATE_signed)
|
|
// CHECK-DAG: ![[ELTS16]] = !{![[REALELTS16:[0-9]+]]}
|
|
// CHECK-DAG: ![[REALELTS16]] = !DISubrange(lowerBound: 0, upperBound: !DIExpression(DW_OP_constu, 4, DW_OP_bregx, 46, 0, DW_OP_mul, DW_OP_constu, 1, DW_OP_minus))
|
|
let s16: svint16_t;
|
|
|
|
// CHECK-DAG: name: "svuint16_t",{{.*}}, baseType: ![[CT16:[0-9]+]]
|
|
// CHECK-DAG: ![[CT16]] = !DICompositeType(tag: DW_TAG_array_type, baseType: ![[ELTTY16:[0-9]+]],{{.*}}, flags: DIFlagVector, elements: ![[ELTS16]])
|
|
// CHECK-DAG: ![[ELTTY16]] = !DIBasicType(name: "u16", size: 16, encoding: DW_ATE_unsigned)
|
|
let u16: svuint16_t;
|
|
|
|
// CHECK-DAG: name: "svint32_t",{{.*}}, baseType: ![[CT32:[0-9]+]]
|
|
// CHECK-DAG: ![[CT32]] = !DICompositeType(tag: DW_TAG_array_type, baseType: ![[ELTTY32:[0-9]+]],{{.*}}, flags: DIFlagVector, elements: ![[ELTS32:[0-9]+]])
|
|
// CHECK-DAG: ![[ELTTY32]] = !DIBasicType(name: "i32", size: 32, encoding: DW_ATE_signed)
|
|
// CHECK-DAG: ![[ELTS32]] = !{![[REALELTS32:[0-9]+]]}
|
|
// CHECK-DAG: ![[REALELTS32]] = !DISubrange(lowerBound: 0, upperBound: !DIExpression(DW_OP_constu, 2, DW_OP_bregx, 46, 0, DW_OP_mul, DW_OP_constu, 1, DW_OP_minus))
|
|
let s32: svint32_t;
|
|
|
|
// CHECK-DAG: name: "svuint32_t",{{.*}}, baseType: ![[CT32:[0-9]+]]
|
|
// CHECK-DAG: ![[CT32]] = !DICompositeType(tag: DW_TAG_array_type, baseType: ![[ELTTY32:[0-9]+]],{{.*}}, flags: DIFlagVector, elements: ![[ELTS32]])
|
|
// CHECK-DAG: ![[ELTTY32]] = !DIBasicType(name: "u32", size: 32, encoding: DW_ATE_unsigned)
|
|
let u32: svuint32_t;
|
|
|
|
// CHECK-DAG: name: "svint64_t",{{.*}}, baseType: ![[CT64:[0-9]+]]
|
|
// CHECK-DAG: ![[CT64]] = !DICompositeType(tag: DW_TAG_array_type, baseType: ![[ELTTY64:[0-9]+]],{{.*}}, flags: DIFlagVector, elements: ![[ELTS64:[0-9]+]])
|
|
// CHECK-DAG: ![[ELTTY64]] = !DIBasicType(name: "i64", size: 64, encoding: DW_ATE_signed)
|
|
// CHECK-DAG: ![[ELTS64]] = !{![[REALELTS64:[0-9]+]]}
|
|
// CHECK-DAG: ![[REALELTS64]] = !DISubrange(lowerBound: 0, upperBound: !DIExpression(DW_OP_constu, 1, DW_OP_bregx, 46, 0, DW_OP_mul, DW_OP_constu, 1, DW_OP_minus))
|
|
let s64: svint64_t;
|
|
|
|
// CHECK-DAG: name: "svuint64_t",{{.*}}, baseType: ![[CT64:[0-9]+]]
|
|
// CHECK-DAG: ![[CT64]] = !DICompositeType(tag: DW_TAG_array_type, baseType: ![[ELTTY64:[0-9]+]],{{.*}}, flags: DIFlagVector, elements: ![[ELTS64]])
|
|
// CHECK-DAG: ![[ELTTY64]] = !DIBasicType(name: "u64", size: 64, encoding: DW_ATE_unsigned)
|
|
let u64: svuint64_t;
|
|
|
|
// CHECK: name: "svfloat32_t",{{.*}}, baseType: ![[CT32:[0-9]+]]
|
|
// CHECK-DAG: ![[CT32]] = !DICompositeType(tag: DW_TAG_array_type, baseType: ![[ELTTY32:[0-9]+]],{{.*}}, flags: DIFlagVector, elements: ![[ELTS32]])
|
|
// CHECK-DAG: ![[ELTTY32]] = !DIBasicType(name: "f32", size: 32, encoding: DW_ATE_float)
|
|
let f32: svfloat32_t;
|
|
|
|
// CHECK: name: "svfloat64_t",{{.*}}, baseType: ![[CT64:[0-9]+]]
|
|
// CHECK-DAG: ![[CT64]] = !DICompositeType(tag: DW_TAG_array_type, baseType: ![[ELTTY64:[0-9]+]],{{.*}}, flags: DIFlagVector, elements: ![[ELTS64]])
|
|
// CHECK-DAG: ![[ELTTY64]] = !DIBasicType(name: "f64", size: 64, encoding: DW_ATE_float)
|
|
let f64: svfloat64_t;
|
|
}
|