Fix overly aggressive type merging.

If we find out that two types are *not* isomorphic, we learn nothing about
opaque sub types in both the source and destination.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@222727 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola
2014-11-25 05:59:24 +00:00
parent c5e9bf54c7
commit 842d2b62ed
3 changed files with 41 additions and 8 deletions

View File

@@ -0,0 +1,16 @@
; RUN: llvm-link -S %s %p/Inputs/type-unique-opaque.ll | FileCheck %s
; Test that a failed attempt at merging %u2 and %t2 (for the other file) will
; not cause %u and %t to get merged.
; CHECK: %u = type opaque
; CHECK: define %u* @g() {
%u = type opaque
%u2 = type { %u*, i8 }
declare %u2* @f()
define %u* @g() {
ret %u* null
}