mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 19:23:23 +01:00
Fix getCommonType in a different way from the way I fixed it when
working on FCA splitting. Instead of refusing to form a common type when there are uses of a subsection of the alloca as well as a use of the entire alloca, just skip the subsection uses and continue looking for a whole-alloca use with a type that we can use. This produces slightly prettier IR I think, and also fixes the other failure in the test. llvm-svn: 164146
This commit is contained in:
parent
8e14d6349e
commit
213f16cbf4
@ -1059,7 +1059,7 @@ Type *AllocaPartitioning::getCommonType(iterator I) const {
|
||||
if (isa<IntrinsicInst>(*UI->User))
|
||||
continue;
|
||||
if (UI->BeginOffset != I->BeginOffset || UI->EndOffset != I->EndOffset)
|
||||
return 0;
|
||||
continue;
|
||||
|
||||
Type *UserTy = 0;
|
||||
if (LoadInst *LI = dyn_cast<LoadInst>(&*UI->User)) {
|
||||
|
@ -1,6 +1,6 @@
|
||||
; RUN: opt < %s -sroa -S | FileCheck %s
|
||||
; RUN: opt < %s -sroa -force-ssa-updater -S | FileCheck %s
|
||||
; XFAIL: *
|
||||
|
||||
target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-n8:16:32:64"
|
||||
|
||||
declare void @llvm.lifetime.start(i64, i8* nocapture)
|
||||
@ -409,7 +409,7 @@ declare void @llvm.memset.p0i8.i32(i8* nocapture, i8, i32, i32, i1) nounwind
|
||||
|
||||
define i16 @test5() {
|
||||
; CHECK: @test5
|
||||
; CHECK: alloca i32
|
||||
; CHECK: alloca float
|
||||
; CHECK: ret i16 %
|
||||
|
||||
entry:
|
||||
|
Loading…
Reference in New Issue
Block a user