60 lines · plain
1; Test that interposable symbols do not get put in comdats.2; RUN: opt < %s -passes='module(sancov-module)' -sanitizer-coverage-level=3 -sanitizer-coverage-trace-pc-guard -mtriple x86_64-linux-gnu -S | FileCheck %s --check-prefixes=CHECK,ELF3; RUN: opt < %s -passes='module(sancov-module)' -sanitizer-coverage-level=3 -sanitizer-coverage-trace-pc-guard -mtriple x86_64-windows-msvc -S | FileCheck %s --check-prefixes=CHECK,COFF4 5$WeakComdat = comdat any6 7define void @Vanilla() {8entry:9 ret void10}11 12define linkonce void @LinkOnce() {13entry:14 ret void15}16 17define weak void @Weak() {18entry:19 ret void20}21 22declare extern_weak void @ExternWeak()23 24define linkonce_odr void @LinkOnceOdr() {25entry:26 ret void27}28 29define weak_odr void @WeakOdr() {30entry:31 ret void32}33 34define weak void @WeakComdat() comdat {35entry:36 ret void37}38 39 40; CHECK: $Vanilla = comdat nodeduplicate41; ELF: $LinkOnceOdr = comdat nodeduplicate42; COFF: $LinkOnceOdr = comdat any43; CHECK: $WeakComdat = comdat any44; CHECK: @__sancov_gen_ = private global [1 x i32] zeroinitializer, section {{.*}}, comdat($Vanilla), align 4{{$}}45; CHECK-NEXT: @__sancov_gen_.1 = private global [1 x i32] zeroinitializer, section {{.*}}, align 4{{$}}46; CHECK-NEXT: @__sancov_gen_.2 = private global [1 x i32] zeroinitializer, section {{.*}}, align 4{{$}}47; CHECK-NEXT: @__sancov_gen_.3 = private global [1 x i32] zeroinitializer, section {{.*}}, comdat($LinkOnceOdr), align 4{{$}}48; CHECK-NEXT: @__sancov_gen_.4 = private global [1 x i32] zeroinitializer, section {{.*}}, comdat($WeakOdr), align 4{{$}}49; CHECK-NEXT: @__sancov_gen_.5 = private global [1 x i32] zeroinitializer, section {{.*}}, comdat($WeakComdat), align 4{{$}}50 51; CHECK: define void @Vanilla() comdat {52; ELF: define linkonce void @LinkOnce() comdat {53; ELF: define weak void @Weak() comdat {54; COFF: define linkonce void @LinkOnce() {55; COFF: define weak void @Weak() {56; CHECK: declare extern_weak void @ExternWeak()57; CHECK: define linkonce_odr void @LinkOnceOdr() comdat {58; CHECK: define weak_odr void @WeakOdr() comdat {59; CHECK: define weak void @WeakComdat() comdat {60