brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.8 KiB · 4fd4a51 Raw
114 lines · cpp
1// RUN: %clang_cc1 -std=c++20 -fclang-abi-compat=latest -emit-llvm %s -o - -triple=x86_64-linux-gnu | FileCheck %s2// RUN: %clang_cc1 -std=c++20 -fclang-abi-compat=latest -emit-llvm %s -o - -triple=x86_64-linux-gnu | llvm-cxxfilt -n | FileCheck %s --check-prefix DEMANGLED3 4template<typename T>5struct wrapper1 {6  union {7    struct {8      T RightName;9    };10  };11};12 13template<typename T>14struct wrapper2 {15  union {16    struct {17      T RightName;18    };19    T WrongName;20  };21};22 23struct Base {24  int WrongName;25};26 27template <typename T>28struct wrapper3 {29  union {30    struct : Base {31      T RightName; };32    T WrongName;33  };34};35 36template <typename T>37struct wrapper4 {38  union {39    int RightName;40    struct {41      T WrongName;42    };43    T AlsoWrongName;44  };45};46 47template <typename T>48struct wrapper5 {49  union {50    struct {51      struct {52        T RightName;53      };54      T WrongName;55    };56  };57};58 59template<typename T>60struct wrapper6 {61  union {62    union{63    int : 5;64    T RightName;65    };66  };67};68 69 70 71template<auto tparam> void dummy(){}72 73 74void uses() {75  // Zero init'ed cases.76  dummy<wrapper1<int>{}>();77  // CHECK: call void @_Z5dummyITnDaXtl8wrapper1IiEEEEvv78  // DEMANGLED: call void @void dummy<wrapper1<int>{}>()()79  dummy<wrapper2<float>{}>();80  // CHECK: call void @_Z5dummyITnDaXtl8wrapper2IfEEEEvv81  // DEMANGLED: call void @void dummy<wrapper2<float>{}>()()82  dummy<wrapper3<short>{}>();83  // CHECK: call void @_Z5dummyITnDaXtl8wrapper3IsEEEEvv84  // DEMANGLED: call void @void dummy<wrapper3<short>{}>()()85  dummy<wrapper4<double>{}>();86  // CHECK: call void @_Z5dummyITnDaXtl8wrapper4IdEEEEvv87  // DEMANGLED: call void @void dummy<wrapper4<double>{}>()()88  dummy<wrapper5<long long>{}>();89  // CHECK: call void @_Z5dummyITnDaXtl8wrapper5IxEEEEvv90  // DEMANGLED: call void @void dummy<wrapper5<long long>{}>()()91  dummy<wrapper6<int>{}>();92  // CHECK: call void @_Z5dummyITnDaXtl8wrapper6IiEEEEvv93  // DEMANGLED: call void @void dummy<wrapper6<int>{}>()()94 95  dummy<wrapper1<double>{123.0}>();96  // CHECK: call void @_Z5dummyITnDaXtl8wrapper1IdEtlNS1_Ut_Edi9RightNametlNS2_Ut_ELd405ec00000000000EEEEEEvv97  // DEMANGLED: call void @void dummy<wrapper1<double>{wrapper1<double>::'unnamed'{.RightName = wrapper1<double>::'unnamed'::'unnamed'{0x1.ec{{.*}}p+6}}}>()()98  dummy<wrapper2<double>{123.0}>();99  // CHECK: call void @_Z5dummyITnDaXtl8wrapper2IdEtlNS1_Ut_Edi9RightNametlNS2_Ut_ELd405ec00000000000EEEEEEvv100  // DEMANGLED: call void @void dummy<wrapper2<double>{wrapper2<double>::'unnamed'{.RightName = wrapper2<double>::'unnamed'::'unnamed'{0x1.ec{{.*}}p+6}}}>()()101  dummy<wrapper3<double>{123, 456}>();102  // CHECK: call void @_Z5dummyITnDaXtl8wrapper3IdEtlNS1_Ut_Edi9RightNametlNS2_Ut_Etl4BaseLi123EELd407c800000000000EEEEEEvv103  // DEMANGLED: call void @void dummy<wrapper3<double>{wrapper3<double>::'unnamed'{.RightName = wrapper3<double>::'unnamed'::'unnamed'{Base{123}, 0x1.c8{{.*}}p+8}}}>()()104  dummy<wrapper4<double>{123}>();105  // CHECK: call void @_Z5dummyITnDaXtl8wrapper4IdEtlNS1_Ut_Edi9RightNameLi123EEEEEvv106  // DEMANGLED: call void @void dummy<wrapper4<double>{wrapper4<double>::'unnamed'{.RightName = 123}}>()()107  dummy<wrapper5<double>{123.0, 456.0}>();108  // CHECK: call void @_Z5dummyITnDaXtl8wrapper5IdEtlNS1_Ut_Edi9RightNametlNS2_Ut_EtlNS3_Ut_ELd405ec00000000000EELd407c800000000000EEEEEEvv109  // DEMANGLED: call void @void dummy<wrapper5<double>{wrapper5<double>::'unnamed'{.RightName = wrapper5<double>::'unnamed'::'unnamed'{wrapper5<double>::'unnamed'::'unnamed'::'unnamed'{0x1.ec{{.*}}p+6}, 0x1.c8{{.*}}p+8}}}>()()110  dummy<wrapper6<double>{1}>();111  // CHECK: call void @_Z5dummyITnDaXtl8wrapper6IdEtlNS1_Ut_Edi9RightNametlNS2_Ut_Edi9RightNameLd3ff0000000000000EEEEEEvv112  // DEMANGELD: call void @void dummy<wrapper6<double>{wrapper6<double>::'unnamed'{.RightName = wrapper6<double>::'unnamed'::'unnamed'{.RightName = 0x1{{.*}}p+0}}}>()()   113}114