
When set, the compiler will use separate unique sections for global symbols in named special sections (e.g. symbols that are annotated with __attribute__((section(...)))). Doing so enables linker GC to collect unused symbols without having to use a different section per-symbol.
29 lines
918 B
C
29 lines
918 B
C
// REQUIRES: x86-registered-target
|
|
|
|
// RUN: %clang_cc1 -triple x86_64-pc-linux -S -o - < %s | FileCheck %s
|
|
// RUN: %clang_cc1 -triple x86_64-pc-linux -S -fseparate-named-sections -o - < %s | FileCheck %s --check-prefix=SEPARATE
|
|
|
|
__attribute__((section("custom_text"))) void f(void) {}
|
|
__attribute__((section("custom_text"))) void g(void) {}
|
|
|
|
// CHECK: .section custom_text,"ax",@progbits{{$}}
|
|
// CHECK: f:
|
|
// CHECK: g:
|
|
|
|
// SEPARATE: .section custom_text,"ax",@progbits,unique,1{{$}}
|
|
// SEPARATE: f:
|
|
// SEPARATE: .section custom_text,"ax",@progbits,unique,2{{$}}
|
|
// SEPARATE: g:
|
|
|
|
__attribute__((section("custom_data"))) int i = 0;
|
|
__attribute__((section("custom_data"))) int j = 0;
|
|
|
|
// CHECK: .section custom_data,"aw",@progbits{{$}}
|
|
// CHECK: i:
|
|
// CHECK: j:
|
|
|
|
// SEPARATE: .section custom_data,"aw",@progbits,unique,3{{$}}
|
|
// SEPARATE: i:
|
|
// SEPARATE: .section custom_data,"aw",@progbits,unique,4{{$}}
|
|
// SEPARATE: j:
|