forked from OSchip/llvm-project
				
			[ELF] Don't check if symbols in .llvm.call-graph-profile are unorderable
Summary: There are too many reasonable cases that would be considered unorderable. Reviewers: ruiu, espindola, Bigcheese Reviewed By: ruiu Subscribers: grimar, emaste, arichardson, llvm-commits Differential Revision: https://reviews.llvm.org/D53669 llvm-svn: 345322
This commit is contained in:
		
							parent
							
								
									4645711a8d
								
							
						
					
					
						commit
						018b0634b4
					
				| 
						 | 
					@ -690,22 +690,6 @@ template <class ELFT> static void readCallGraphsFromObjectFiles() {
 | 
				
			||||||
        continue;
 | 
					        continue;
 | 
				
			||||||
      auto *FromSec = dyn_cast_or_null<InputSectionBase>(FromSym->Section);
 | 
					      auto *FromSec = dyn_cast_or_null<InputSectionBase>(FromSym->Section);
 | 
				
			||||||
      auto *ToSec = dyn_cast_or_null<InputSectionBase>(ToSym->Section);
 | 
					      auto *ToSec = dyn_cast_or_null<InputSectionBase>(ToSym->Section);
 | 
				
			||||||
 | 
					 | 
				
			||||||
      // The profile from .llvm.call-graph-profile is conceptually affiliated to
 | 
					 | 
				
			||||||
      // FromSec. Don't warn unorderable symbol if FromSym is not absolute
 | 
					 | 
				
			||||||
      // (FromSec isn't null) and the section is discarded
 | 
					 | 
				
			||||||
      // (!FromSec->Repl->Live).
 | 
					 | 
				
			||||||
      //
 | 
					 | 
				
			||||||
      // We also don't want to warn when ToSym is undefined or is in a shared
 | 
					 | 
				
			||||||
      // object (as symbols in shared objects are fixed and unorderable).
 | 
					 | 
				
			||||||
      //
 | 
					 | 
				
			||||||
      // The check used here is more relaxed (no warning if either FromSym or
 | 
					 | 
				
			||||||
      // ToSym is not Defined) for simplicity and there is no compelling reason
 | 
					 | 
				
			||||||
      // to warn on more cases.
 | 
					 | 
				
			||||||
      if (!FromSec || FromSec->Repl->Live) {
 | 
					 | 
				
			||||||
        warnUnorderableSymbol(FromSym);
 | 
					 | 
				
			||||||
        warnUnorderableSymbol(ToSym);
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      if (FromSec && ToSec)
 | 
					      if (FromSec && ToSec)
 | 
				
			||||||
        Config->CallGraphProfile[{FromSec, ToSec}] += CGPE.cgp_weight;
 | 
					        Config->CallGraphProfile[{FromSec, ToSec}] += CGPE.cgp_weight;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,34 +0,0 @@
 | 
				
			||||||
# REQUIRES: x86
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# RUN: ld.lld -e A %t -o /dev/null \
 | 
					 | 
				
			||||||
# RUN:   -noinhibit-exec -icf=all 2>&1 | FileCheck %s
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    .section    .text.C,"ax",@progbits
 | 
					 | 
				
			||||||
    .globl  C
 | 
					 | 
				
			||||||
C:
 | 
					 | 
				
			||||||
    mov poppy, %rax
 | 
					 | 
				
			||||||
    retq
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
B = 0x1234
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    .section    .text.A,"ax",@progbits
 | 
					 | 
				
			||||||
    .globl  A
 | 
					 | 
				
			||||||
A:
 | 
					 | 
				
			||||||
    mov poppy, %rax
 | 
					 | 
				
			||||||
    retq
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    .cg_profile A, B, 100
 | 
					 | 
				
			||||||
    .cg_profile A, C, 40
 | 
					 | 
				
			||||||
    .cg_profile B, C, 30
 | 
					 | 
				
			||||||
    .cg_profile adena1, A, 30
 | 
					 | 
				
			||||||
    .cg_profile A, adena2, 30
 | 
					 | 
				
			||||||
    .cg_profile poppy, A, 30
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# CHECK: unable to order absolute symbol: B
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# RUN: ld.lld %t -o /dev/null \
 | 
					 | 
				
			||||||
# RUN:   -noinhibit-exec -icf=all --no-warn-symbol-ordering 2>&1 \
 | 
					 | 
				
			||||||
# RUN:   | FileCheck %s --check-prefix=NOWARN
 | 
					 | 
				
			||||||
# NOWARN-NOT: unable to order
 | 
					 | 
				
			||||||
		Loading…
	
		Reference in New Issue