CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
150 lines
4.1 KiB
Plaintext
150 lines
4.1 KiB
Plaintext
# REQUIRES: lldb-formatters-compatibility
|
|
#
|
|
# RUN: split-file %s %t
|
|
# RUN: lldb -x \
|
|
# RUN: -o 'command script import %llvm_src_root/utils/lldbDataFormatters.py' \
|
|
# RUN: -s %t/commands.input %llvm_tools_dir/check-lldb-llvm-support-pointer-union \
|
|
# RUN: -o quit \
|
|
# RUN: | FileCheck %t/checks
|
|
|
|
#--- commands.input
|
|
break set -p "Break here"
|
|
run
|
|
|
|
p &f
|
|
p &a
|
|
p &z
|
|
p &derived
|
|
p &dv
|
|
v -T z_float
|
|
v -T raw_z_float
|
|
v -T null_float
|
|
v -T long_int_float
|
|
v -T z_only
|
|
v -T union_int_pair
|
|
p z_float.Pointer
|
|
p union_int_pair.Pointer
|
|
p union_int_pair.Pointer.Pointer
|
|
|
|
continue
|
|
|
|
v -T z_float
|
|
|
|
continue
|
|
|
|
v -T virtual_float
|
|
p virtual_float.Pointer
|
|
|
|
continue
|
|
|
|
p &local
|
|
v -T local_float
|
|
|
|
continue
|
|
|
|
p &a4_0
|
|
p &a8_0
|
|
v -T varwidth
|
|
v -T varwidth_tier1
|
|
|
|
#--- checks
|
|
# CHECK: (lldb) p &f
|
|
# CHECK-NEXT: (float *) [[PTR_F:0x[0-9a-zA-Z]+]]
|
|
|
|
# CHECK: (lldb) p &a
|
|
# CHECK-NEXT: (int *) [[PTR_A:0x[0-9a-zA-Z]+]]
|
|
|
|
# CHECK: (lldb) p &z
|
|
# CHECK-NEXT: (Z *) [[PTR_Z:0x[0-9a-zA-Z]+]]
|
|
|
|
# CHECK: (lldb) p &derived
|
|
# CHECK-NEXT: (Derived *) [[PTR_DERIVED:0x[0-9a-zA-Z]+]]
|
|
|
|
# CHECK: (lldb) p &dv
|
|
# CHECK-NEXT: (DerivedWithVirtual *) [[PTR_DV:0x[0-9a-zA-Z]+]]
|
|
|
|
# CHECK: (lldb) v -T z_float
|
|
# CHECK-NEXT: (llvm::PointerUnion<Z *, float *>) z_float = {
|
|
# CHECK-NEXT: (float *) Pointer = [[PTR_F]]
|
|
# CHECK-NEXT: }
|
|
|
|
# CHECK: (lldb) v -T raw_z_float
|
|
# CHECK-NEXT: (llvm::PointerUnion<Z *, float *>) raw_z_float = {
|
|
# CHECK-NEXT: (Z *) Pointer = nullptr
|
|
# CHECK-NEXT: }
|
|
|
|
# null float* has non-zero raw_value (tag=1), pointer component=0.
|
|
# LLDB renders this as an address literal rather than nullptr.
|
|
# CHECK: (lldb) v -T null_float
|
|
# CHECK-NEXT: (llvm::PointerUnion<Z *, float *>) null_float = {
|
|
# CHECK-NEXT: (float *) Pointer = 0x{{0+}}
|
|
# CHECK-NEXT: }
|
|
|
|
# CHECK: (lldb) v -T long_int_float
|
|
# CHECK-NEXT: (llvm::PointerUnion<long long *, int *, float *>) long_int_float = {
|
|
# CHECK-NEXT: (int *) Pointer = [[PTR_A]]
|
|
# CHECK-NEXT: }
|
|
|
|
# CHECK: (lldb) v -T z_only
|
|
# CHECK-NEXT: (llvm::PointerUnion<Z *>) z_only = {
|
|
# CHECK-NEXT: (Z *) Pointer = [[PTR_Z]]
|
|
# CHECK-NEXT: }
|
|
|
|
# CHECK: (lldb) v -T union_int_pair
|
|
# CHECK-NEXT: (llvm::PointerIntPair<llvm::PointerUnion<Z *, float *>, 1>) union_int_pair = {
|
|
# CHECK-NEXT: (llvm::PointerUnion<Z *, float *>) Pointer = {
|
|
# CHECK-NEXT: (float *) Pointer = [[PTR_F]]
|
|
# CHECK-NEXT: }
|
|
# CHECK-NEXT: (unsigned int) Int = 1
|
|
# CHECK-NEXT: }
|
|
|
|
# CHECK: (lldb) p z_float.Pointer
|
|
# CHECK-NEXT: (float *) [[PTR_F]]
|
|
|
|
# CHECK: (lldb) p union_int_pair.Pointer
|
|
# CHECK-NEXT: (llvm::PointerUnion<Z *, float *>) {
|
|
# CHECK-NEXT: Pointer = [[PTR_F]]
|
|
# CHECK-NEXT: }
|
|
|
|
# CHECK: (lldb) p union_int_pair.Pointer.Pointer
|
|
# CHECK-NEXT: (float *) [[PTR_F]]
|
|
|
|
# CHECK: (lldb) v -T z_float
|
|
# CHECK-NEXT: (llvm::PointerUnion<Z *, float *>) z_float = {
|
|
# CHECK-NEXT: (Z *) Pointer = [[PTR_DERIVED]]
|
|
# CHECK-NEXT: }
|
|
|
|
# CHECK: (lldb) v -T virtual_float
|
|
# CHECK-NEXT: (llvm::PointerUnion<HasVirtual *, float *>) virtual_float = {
|
|
# CHECK-NEXT: (DerivedWithVirtual *) Pointer = [[PTR_DV]]
|
|
# CHECK-NEXT: }
|
|
|
|
# CHECK: (lldb) p virtual_float.Pointer
|
|
# CHECK-NEXT: (DerivedWithVirtual *) [[PTR_DV]]
|
|
|
|
# CHECK: (lldb) p &local
|
|
# CHECK-NEXT: (Local *) [[PTR_LOCAL:0x[0-9a-zA-Z]+]]
|
|
|
|
# CHECK: (lldb) v -T local_float
|
|
# CHECK-NEXT: (llvm::PointerUnion<Local *, float *>) local_float = {
|
|
# CHECK-NEXT: (Local *) Pointer = [[PTR_LOCAL]]
|
|
# CHECK-NEXT: }
|
|
|
|
# CHECK: (lldb) p &a4_0
|
|
# CHECK-NEXT: (Align4<0> *) [[PTR_A4:0x[0-9a-zA-Z]+]]
|
|
|
|
# CHECK: (lldb) p &a8_0
|
|
# CHECK-NEXT: (Align8<0> *) [[PTR_A8:0x[0-9a-zA-Z]+]]
|
|
|
|
# Variable-width tag encoding: formatter falls back to void* with
|
|
# tag bits stripped, since fixed-width decoding doesn't apply.
|
|
# CHECK: (lldb) v -T varwidth
|
|
# CHECK-NEXT: (llvm::PointerUnion<Align4<0> *, Align4<1> *, Align4<2> *, Align8<0> *, Align8<1> *>) varwidth = {
|
|
# CHECK-NEXT: (void *) Pointer = [[PTR_A4]]
|
|
# CHECK-NEXT: }
|
|
|
|
# CHECK: (lldb) v -T varwidth_tier1
|
|
# CHECK-NEXT: (llvm::PointerUnion<Align4<0> *, Align4<1> *, Align4<2> *, Align8<0> *, Align8<1> *>) varwidth_tier1 = {
|
|
# CHECK-NEXT: (void *) Pointer = [[PTR_A8]]
|
|
# CHECK-NEXT: }
|