target triple = "x86_64-unknown-linux-gnu"
+@g7 = extern_weak global i32
+; CHECK-DAG: @g7 = extern_weak global i32
+
; CHECK: define internal void @f1()
; OPT-NOT: @f1
define hidden void @f1() {
}
@g6 = global void()* @f6
+define i32* @f7() {
+ ret i32* @g7
+}
; API: f1 PREVAILING_DEF_IRONLY
; API: f2 PREVAILING_DEF_IRONLY
; API: f4 PREVAILING_DEF_IRONLY_EXP
; API: f5 PREVAILING_DEF_IRONLY_EXP
; API: f6 PREVAILING_DEF_IRONLY_EXP
+; API: f7 PREVAILING_DEF_IRONLY_EXP
+; API: g7 UNDEF
; API: g5 PREVAILING_DEF_IRONLY_EXP
; API: g6 PREVAILING_DEF_IRONLY_EXP
break;
case LDPR_UNDEF:
- assert(GV->hasComdat());
- Drop.insert(GV);
+ if (!GV->hasExternalWeakLinkage()) {
+ assert(GV->hasComdat());
+ Drop.insert(GV);
+ }
break;
case LDPR_PREVAILING_DEF_IRONLY: {