Summary: This allows counters associated with unused functions to be dead-stripped along with their functions. This approach is the same one we used for PC tables. Fixes an issue where LLD removes an unused PC table but leaves the 8-bit counter. Reviewers: eugenis Reviewed By: eugenis Subscribers: llvm-commits, hiraditya, kcc Differential Revision: https://reviews.llvm.org/D49264 llvm-svn: 336941
16 lines
751 B
Plaintext
16 lines
751 B
Plaintext
REQUIRES: linux, lld-available
|
|
|
|
No gc-sections:
|
|
RUN: %cpp_compiler %S/GcSectionsTest.cpp -o %t
|
|
RUN: nm %t | grep UnusedFunctionShouldBeRemovedByLinker | count 1
|
|
|
|
With gc-sections. Currently, we can't remove unused code except with LLD.
|
|
RUN: %cpp_compiler %S/GcSectionsTest.cpp -o %t -fuse-ld=lld -ffunction-sections -Wl,-gc-sections
|
|
RUN: nm %t | not grep UnusedFunctionShouldBeRemovedByLinker
|
|
RUN: %run %t -runs=0 2>&1 | FileCheck %s
|
|
CHECK-NOT: ERROR: The size of coverage PC tables does not match
|
|
|
|
With gc sections, with trace-pc. Unused code is removed.
|
|
RUN: %cpp_compiler %S/GcSectionsTest.cpp -o %t -fsanitize-coverage=0 -fsanitize-coverage=trace-pc -ffunction-sections -Wl,-gc-sections
|
|
RUN: nm %t | not grep UnusedFunctionShouldBeRemovedByLinker
|