44 lines · cpp
1// RUN: %clang_cc1 -triple x86_64-linux-gnu -emit-llvm -o - -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb %s | FileCheck %s --check-prefixes=CHECK,LIN2// RUN: %clang_cc1 -triple x86_64-windows-pc -emit-llvm -o - -debug-info-kind=constructor -dwarf-version=4 -debugger-tuning=gdb %s | FileCheck %s --check-prefixes=CHECK,WIN3 4// LIN: @[[S1_NAME:.+]].ifunc = weak_odr ifunc void (ptr), ptr @[[S1_NAME]].resolver5// LIN: @[[S2_NAME:.+]].ifunc = weak_odr ifunc void (ptr), ptr @[[S2_NAME]].resolver6// WIN: $"[[S1_NAME:.+]]" = comdat any7// WIN: $"[[S2_NAME:.+]]" = comdat any8 9struct S1 {10 void foo();11 void mv();12};13 14void S1::foo(){}15 16__attribute__((cpu_dispatch(ivybridge, generic)))17void S1::mv() {}18// LIN: define weak_odr ptr @[[S1_NAME]].resolver19// WIN: define weak_odr dso_local void @"[[S1_NAME]]"(ptr20__attribute__((cpu_specific(generic)))21void S1::mv() {}22// CHECK: define dso_local {{.*}}void @{{\"?}}[[S1_NAME]].S{{\"?}}23// CHECK: define dso_local {{.*}}void @{{\"?}}[[S1_NAME]].A{{\"?}}24__attribute__((cpu_specific(ivybridge)))25void S1::mv() {}26 27struct S2 {28 void foo();29 void mv();30};31 32void S2::foo(){}33 34__attribute__((cpu_specific(generic)))35void S2::mv() {}36// CHECK: define dso_local {{.*}}void @{{\"?}}[[S2_NAME]].A{{\"?}}37__attribute__((cpu_dispatch(ivybridge, generic)))38void S2::mv() {}39// LIN: define weak_odr ptr @[[S2_NAME]].resolver40// WIN: define weak_odr dso_local void @"[[S2_NAME]]"(ptr41__attribute__((cpu_specific(ivybridge)))42void S2::mv() {}43// CHECK: define dso_local {{.*}}void @{{\"?}}[[S2_NAME]].S{{\"?}}44