[PATCH] D41291: [ThinLTO] Disallow multiple prevailing defs

Eugene Leviant via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Dec 15 07:40:21 PST 2017


evgeny777 created this revision.
evgeny777 added a reviewer: tejohnson.
Herald added subscribers: eraman, inglorion, mehdi_amini.

https://reviews.llvm.org/D41291

Files:
  lib/LTO/LTO.cpp
  test/LTO/Resolution/X86/common2.ll
  test/LTO/Resolution/X86/dead-strip-fulllto.ll
  test/ThinLTO/X86/deadstrip.ll


Index: test/ThinLTO/X86/deadstrip.ll
===================================================================
--- test/ThinLTO/X86/deadstrip.ll
+++ test/ThinLTO/X86/deadstrip.ll
@@ -16,7 +16,7 @@
 ; RUN:   -r %t1.bc,_boo,l \
 ; RUN:   -r %t2.bc,_baz,pl \
 ; RUN:   -r %t2.bc,_boo,pl \
-; RUN:   -r %t2.bc,_dead_func,pl \
+; RUN:   -r %t2.bc,_dead_func,l \
 ; RUN:   -r %t2.bc,_another_dead_func,pl
 ; RUN: llvm-dis < %t.out.0.3.import.bc | FileCheck %s --check-prefix=LTO2
 ; RUN: llvm-dis < %t.out.1.3.import.bc | FileCheck %s --check-prefix=LTO2-CHECK2
@@ -81,7 +81,7 @@
 ; RUN:   -r %t1.bc,_boo,l \
 ; RUN:   -r %t3.bc,_baz,pl \
 ; RUN:   -r %t3.bc,_boo,pl \
-; RUN:   -r %t3.bc,_dead_func,pl \
+; RUN:   -r %t3.bc,_dead_func,l \
 ; RUN:   -r %t3.bc,_another_dead_func,pl
 ; RUN: llvm-dis < %t4.out.1.3.import.bc | FileCheck %s --check-prefix=CHECK-NOTDEAD
 ; RUN: llvm-nm %t4.out.0 | FileCheck %s --check-prefix=CHECK-NM-NOTDEAD
Index: test/LTO/Resolution/X86/dead-strip-fulllto.ll
===================================================================
--- test/LTO/Resolution/X86/dead-strip-fulllto.ll
+++ test/LTO/Resolution/X86/dead-strip-fulllto.ll
@@ -2,13 +2,13 @@
 ; RUN: opt -module-summary -o %t2 %S/Inputs/dead-strip-fulllto.ll
 
 ; RUN: llvm-lto2 run %t -r %t,main,px -r %t,live1,p -r %t,live2,p -r %t,dead2,p \
-; RUN:               %t2 -r %t2,live1,p -r %t2,live2, -r %t2,dead1,p -r %t2,dead2, -r %t2,odr, \
+; RUN:               %t2 -r %t2,live1, -r %t2,live2, -r %t2,dead1,p -r %t2,dead2, -r %t2,odr, \
 ; RUN: -save-temps -o %t3
 ; RUN: llvm-nm %t3.0 | FileCheck --check-prefix=FULL %s
 ; RUN: llvm-nm %t3.1 | FileCheck --check-prefix=THIN %s
 
 ; RUN: llvm-lto2 run %t -r %t,main,px -r %t,live1,p -r %t,live2,p -r %t,dead2,p \
-; RUN:               %t2 -r %t2,live1,p -r %t2,live2, -r %t2,dead1,p -r %t2,dead2, -r %t2,odr, \
+; RUN:               %t2 -r %t2,live1, -r %t2,live2, -r %t2,dead1,p -r %t2,dead2, -r %t2,odr, \
 ; RUN: -save-temps -o %t3 -O0
 ; RUN: llvm-nm %t3.0 | FileCheck --check-prefix=FULL %s
 ; RUN: llvm-nm %t3.1 | FileCheck --check-prefix=THIN %s
Index: test/LTO/Resolution/X86/common2.ll
===================================================================
--- test/LTO/Resolution/X86/common2.ll
+++ test/LTO/Resolution/X86/common2.ll
@@ -52,24 +52,6 @@
 ; RUN:  -r %t2.bc,bar,px
 ; RUN: llvm-dis < %t.o.0.0.preopt.bc | FileCheck  %s --check-prefix=NONE-PREVAILED2
 
-
-
-; Client marked both as prevailing
-; RUN: llvm-lto2 run %t1.bc %t2.bc -o %t.o -save-temps \
-; RUN:  -r %t1.bc,v,px \
-; RUN:  -r %t2.bc,v,px \
-; RUN:  -r %t1.bc,foo,px \
-; RUN:  -r %t2.bc,bar,px
-; RUN: llvm-dis < %t.o.0.0.preopt.bc | FileCheck %s --check-prefix=BOTH-PREVAILED1
-
-; Same as before, but reversing the order of the inputs
-; RUN: llvm-lto2 run %t2.bc %t1.bc -o %t.o -save-temps \
-; RUN:  -r %t1.bc,v,px \
-; RUN:  -r %t2.bc,v,px \
-; RUN:  -r %t1.bc,foo,px \
-; RUN:  -r %t2.bc,bar,px
-; RUN: llvm-dis < %t.o.0.0.preopt.bc | FileCheck %s --check-prefix=BOTH-PREVAILED2
-
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
Index: lib/LTO/LTO.cpp
===================================================================
--- lib/LTO/LTO.cpp
+++ lib/LTO/LTO.cpp
@@ -417,8 +417,8 @@
     auto &GlobalRes = GlobalResolutions[Sym.getName()];
     GlobalRes.UnnamedAddr &= Sym.isUnnamedAddr();
     if (Res.Prevailing) {
-      assert((GlobalRes.IRName.empty() || !Sym.getIRName().empty()) &&
-             "Overriding existing resolution with undefined asm symbol");
+      assert(GlobalRes.IRName.empty() &&
+             "Multiple prevailing defs are not allowed");
       GlobalRes.IRName = Sym.getIRName();
     }
 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D41291.127133.patch
Type: text/x-patch
Size: 3690 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20171215/ef91d5b9/attachment.bin>


More information about the llvm-commits mailing list