[PATCH] D43251: Use toString to stringize sections and files.
Rafael Avila de Espindola via llvm-commits
llvm-commits at lists.llvm.org
Tue Feb 13 14:53:47 PST 2018
LGTM
Rui Ueyama via Phabricator <reviews at reviews.llvm.org> writes:
> ruiu updated this revision to Diff 134105.
> ruiu added a comment.
>
> - restore print function
>
>
> https://reviews.llvm.org/D43251
>
> Files:
> lld/ELF/ICF.cpp
> lld/test/ELF/icf-absolute.s
> lld/test/ELF/icf-comdat.s
> lld/test/ELF/icf-i386.s
> lld/test/ELF/icf-merge-sec.s
> lld/test/ELF/icf-merge.s
> lld/test/ELF/icf1.s
> lld/test/ELF/icf2.s
> lld/test/ELF/icf7.s
> lld/test/ELF/icf9.s
> lld/test/ELF/print-icf.s
>
> Index: lld/test/ELF/print-icf.s
> ===================================================================
> --- lld/test/ELF/print-icf.s
> +++ lld/test/ELF/print-icf.s
> @@ -6,13 +6,13 @@
> # RUN: ld.lld %t %t1 -o %t2 --icf=all --no-print-icf-sections --print-icf-sections | FileCheck %s
> # RUN: ld.lld %t %t1 -o %t2 --icf=all --print-icf-sections --no-print-icf-sections | FileCheck -allow-empty -check-prefix=PRINT %s
>
> -# CHECK: selected section '.text.f2' from file [[T:'.*']]
> -# CHECK: removing identical section '.text.f4' from file [[T]]
> -# CHECK: removing identical section '.text.f7' from file [[T1:'.*']]
> -# CHECK: selected section '.text.f1' from file [[T]]
> -# CHECK: removing identical section '.text.f3' from file [[T]]
> -# CHECK: removing identical section '.text.f5' from file [[T]]
> -# CHECK: removing identical section '.text.f6' from file [[T1]]
> +# CHECK: selected section {{.*}}:(.text.f2)
> +# CHECK: removing identical section {{.*}}:(.text.f4)
> +# CHECK: removing identical section {{.*}}:(.text.f7)
> +# CHECK: selected section {{.*}}:(.text.f1)
> +# CHECK: removing identical section {{.*}}:(.text.f3)
> +# CHECK: removing identical section {{.*}}:(.text.f5)
> +# CHECK: removing identical section {{.*}}:(.text.f6)
>
> # PRINT-NOT: selected
> # PRINT-NOT: removing
> Index: lld/test/ELF/icf9.s
> ===================================================================
> --- lld/test/ELF/icf9.s
> +++ lld/test/ELF/icf9.s
> @@ -7,16 +7,16 @@
>
> # SEC: .rodata PROGBITS 0000000000200120 000120 000002 00 A 0 0 1
>
> -# CHECK-NOT: selected section '.rodata.d1'
> -# CHECK-NOT: selected section '.rodata.d2'
> +# CHECK-NOT: selected section {{.*}}:(.rodata.d1)
> +# CHECK-NOT: selected section {{.*}}:(.rodata.d2)
>
> # We do merge rodata if passed --icf-data
> # RUN: ld.lld %t -o %t2 --icf=all --print-icf-sections --ignore-data-address-equality | \
> # RUN: FileCheck --check-prefix=DATA %s
> # RUN: llvm-readelf -S -W %t2 | FileCheck --check-prefix=DATA-SEC %s
>
> -# DATA: selected section '.rodata.d1' from file [[T:'.*']]
> -# DATA: removing identical section '.rodata.d2' from file [[T]]
> +# DATA: selected section {{.*}}:(.rodata.d1)
> +# DATA: removing identical section {{.*}}:(.rodata.d2)
>
> # DATA-SEC: .rodata PROGBITS 0000000000200120 000120 000001 00 A 0 0 1
>
> Index: lld/test/ELF/icf7.s
> ===================================================================
> --- lld/test/ELF/icf7.s
> +++ lld/test/ELF/icf7.s
> @@ -4,8 +4,8 @@
> # RUN: ld.lld %t -o %t2 --icf=all --print-icf-sections | FileCheck %s
> # RUN: llvm-objdump -t %t2 | FileCheck -check-prefix=ALIGN %s
>
> -# CHECK: selected section '.text.f1' from file [[T:'.*']]
> -# CHECK: removing identical section '.text.f2' from file [[T]]
> +# CHECK: selected section {{.*}}:(.text.f1)
> +# CHECK: removing identical section {{.*}}:(.text.f2)
>
> # ALIGN: 0000000000201000 .text 00000000 _start
> # ALIGN: 0000000000201100 .text 00000000 f1
> Index: lld/test/ELF/icf2.s
> ===================================================================
> --- lld/test/ELF/icf2.s
> +++ lld/test/ELF/icf2.s
> @@ -4,8 +4,8 @@
> # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %p/Inputs/icf2.s -o %t2
> # RUN: ld.lld %t1 %t2 -o %t --icf=all --print-icf-sections 2>&1 | FileCheck %s
>
> -# CHECK: selected section '.text.f1' from file
> -# CHECK: removing identical section '.text.f2' from file
> +# CHECK: selected section {{.*}}:(.text.f1)
> +# CHECK: removing identical section {{.*}}:(.text.f2)
>
> .globl _start, f1, f2
> _start:
> Index: lld/test/ELF/icf1.s
> ===================================================================
> --- lld/test/ELF/icf1.s
> +++ lld/test/ELF/icf1.s
> @@ -3,8 +3,8 @@
> # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t
> # RUN: ld.lld %t -o %t2 --icf=all --print-icf-sections | FileCheck %s
>
> -# CHECK: selected section '.text.f1' from file [[T:'.*']]
> -# CHECK: removing identical section '.text.f2' from file [[T]]
> +# CHECK: selected section {{.*}}:(.text.f1)
> +# CHECK: removing identical section {{.*}}:(.text.f2)
>
> .globl _start, f1, f2
> _start:
> Index: lld/test/ELF/icf-merge.s
> ===================================================================
> --- lld/test/ELF/icf-merge.s
> +++ lld/test/ELF/icf-merge.s
> @@ -10,10 +10,10 @@
> # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %S/Inputs/icf-merge3.s -o %t3
> # RUN: ld.lld %t %t3 -o %t3.out --icf=all --print-icf-sections | FileCheck --check-prefix=NOMERGE %s
>
> -# CHECK: selected section '.text.f1' from file
> -# CHECK: removing identical section '.text.f2' from file
> +# CHECK: selected section {{.*}}:(.text.f1)
> +# CHECK: removing identical section {{.*}}:(.text.f2)
>
> -# NOMERGE-NOT: selected section '.text.f
> +# NOMERGE-NOT: selected section {{.*}}:(.text.f)
>
> .section .rodata.str,"aMS", at progbits,1
> foo:
> Index: lld/test/ELF/icf-merge-sec.s
> ===================================================================
> --- lld/test/ELF/icf-merge-sec.s
> +++ lld/test/ELF/icf-merge-sec.s
> @@ -4,8 +4,8 @@
> # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %S/Inputs/icf-merge-sec.s -o %t2
> # RUN: ld.lld %t %t2 -o %t3 --icf=all --print-icf-sections | FileCheck %s
>
> -# CHECK: selected section '.text.f1' from file
> -# CHECK: removing identical section '.text.f2' from file
> +# CHECK: selected section {{.*}}:(.text.f1)
> +# CHECK: removing identical section {{.*}}:(.text.f2)
>
> .section .rodata.str,"aMS", at progbits,1
> .asciz "foo"
> Index: lld/test/ELF/icf-i386.s
> ===================================================================
> --- lld/test/ELF/icf-i386.s
> +++ lld/test/ELF/icf-i386.s
> @@ -4,9 +4,9 @@
> # RUN: llvm-mc -filetype=obj -triple=i386-unknown-linux %s -o %t
> # RUN: ld.lld %t -o %t2 --icf=all --print-icf-sections 2>&1 | FileCheck %s
>
> -# CHECK: selected section '.text.f1' from file [[T:'.*']]
> -# CHECK: removing identical section '.text.f2' from file [[T]]
> -# CHECK-NOT: removing identical section '.text.f3' from file [[T]]
> +# CHECK: selected section {{.*}}:(.text.f1)
> +# CHECK: removing identical section {{.*}}:(.text.f2)
> +# CHECK-NOT: removing identical section {{.*}}:(.text.f3)
>
> .globl _start, f1, f2, f3
> _start:
> Index: lld/test/ELF/icf-comdat.s
> ===================================================================
> --- lld/test/ELF/icf-comdat.s
> +++ lld/test/ELF/icf-comdat.s
> @@ -3,8 +3,8 @@
> # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t
> # RUN: ld.lld %t -o %t2 --icf=all --print-icf-sections | FileCheck %s
>
> -# CHECK: selected section '.text.f1' from file [[T:'.*']]
> -# CHECK: removing identical section '.text.f2' from file [[T]]
> +# CHECK: selected section {{.*}}:(.text.f1)
> +# CHECK: removing identical section {{.*}}:(.text.f2)
>
> .globl _start, f1, f2
> _start:
> Index: lld/test/ELF/icf-absolute.s
> ===================================================================
> --- lld/test/ELF/icf-absolute.s
> +++ lld/test/ELF/icf-absolute.s
> @@ -4,8 +4,8 @@
> # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %S/Inputs/icf-absolute.s -o %t2
> # RUN: ld.lld %t %t2 -o %t3 --icf=all --print-icf-sections | FileCheck %s
>
> -# CHECK: selected section '.text.f1' from file
> -# CHECK: removing identical section '.text.f2' from file
> +# CHECK: selected section {{.*}}:(.text.f1)
> +# CHECK: removing identical section {{.*}}:(.text.f2)
>
> .globl _start, f1, f2
> _start:
> Index: lld/ELF/ICF.cpp
> ===================================================================
> --- lld/ELF/ICF.cpp
> +++ lld/ELF/ICF.cpp
> @@ -391,11 +391,9 @@
> ++Cnt;
> }
>
> -static void print(const Twine &Prefix, InputSection *S) {
> - if (!Config->PrintIcfSections)
> - return;
> - std::string File = S->File ? S->File->getName() : "<internal>";
> - message(Prefix + " section '" + S->Name + "' from file '" + File + "'");
> +static void print(const Twine &S) {
> + if (Config->PrintIcfSections)
> + message(S);
> }
>
> // The main function of ICF.
> @@ -435,9 +433,9 @@
> forEachClassRange(0, Sections.size(), [&](size_t Begin, size_t End) {
> if (End - Begin == 1)
> return;
> - print("selected", Sections[Begin]);
> + print("selected section " + toString(Sections[Begin]));
> for (size_t I = Begin + 1; I < End; ++I) {
> - print(" removing identical", Sections[I]);
> + print(" removing identical section " + toString(Sections[I]));
> Sections[Begin]->replace(Sections[I]);
> }
> });
More information about the llvm-commits
mailing list