mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-12 22:53:08 +00:00
make GVN try to rename inputs to the resultant replaced values, which
cleans up the generated code a bit. This should have the added benefit of not randomly renaming functions/globals like my previous patch did. :) llvm-svn: 61023
This commit is contained in:
parent
c92b131639
commit
22cfa14eed
@ -1040,6 +1040,9 @@ bool GVN::processNonLocalLoad(LoadInst *LI,
|
|||||||
// Perform PHI construction.
|
// Perform PHI construction.
|
||||||
Value* v = GetValueForBlock(LI->getParent(), LI, BlockReplValues, true);
|
Value* v = GetValueForBlock(LI->getParent(), LI, BlockReplValues, true);
|
||||||
LI->replaceAllUsesWith(v);
|
LI->replaceAllUsesWith(v);
|
||||||
|
|
||||||
|
if (!isa<GlobalValue>(v))
|
||||||
|
v->takeName(LI);
|
||||||
if (isa<PointerType>(v->getType()))
|
if (isa<PointerType>(v->getType()))
|
||||||
MD->invalidateCachedPointerInfo(v);
|
MD->invalidateCachedPointerInfo(v);
|
||||||
toErase.push_back(LI);
|
toErase.push_back(LI);
|
||||||
@ -1135,6 +1138,7 @@ bool GVN::processNonLocalLoad(LoadInst *LI,
|
|||||||
// Perform PHI construction.
|
// Perform PHI construction.
|
||||||
Value* v = GetValueForBlock(LI->getParent(), LI, BlockReplValues, true);
|
Value* v = GetValueForBlock(LI->getParent(), LI, BlockReplValues, true);
|
||||||
LI->replaceAllUsesWith(v);
|
LI->replaceAllUsesWith(v);
|
||||||
|
if (!isa<GlobalValue>(v))
|
||||||
v->takeName(LI);
|
v->takeName(LI);
|
||||||
if (isa<PointerType>(v->getType()))
|
if (isa<PointerType>(v->getType()))
|
||||||
MD->invalidateCachedPointerInfo(v);
|
MD->invalidateCachedPointerInfo(v);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
; RUN: llvm-as < %s | opt -gvn | llvm-dis | not grep {tmp17625 =}
|
; RUN: llvm-as < %s | opt -gvn | llvm-dis | grep {tmp17625 = phi i32. }
|
||||||
; RUN: llvm-as < %s | opt -gvn | llvm-dis | not grep {tmp17631 =}
|
; RUN: llvm-as < %s | opt -gvn | llvm-dis | grep {tmp17631.* = phi i32. }
|
||||||
|
|
||||||
@last = external global [65 x i32*] ; <[65 x i32*]*> [#uses=1]
|
@last = external global [65 x i32*] ; <[65 x i32*]*> [#uses=1]
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
; RUN: llvm-as < %s | opt -gvn | llvm-dis | not grep {tmp298316 =}
|
; RUN: llvm-as < %s | opt -gvn | llvm-dis | grep {tmp298316 = phi i32 }
|
||||||
|
|
||||||
%struct..0anon = type { i32 }
|
%struct..0anon = type { i32 }
|
||||||
%struct.FILE = type { i8*, i32, i32, i16, i16, %struct.__sbuf, i32, i8*, i32 (i8*)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i32 (i8*, i8*, i32)*, %struct.__sbuf, %struct.__sFILEX*, i32, [3 x i8], [1 x i8], %struct.__sbuf, i32, i64 }
|
%struct.FILE = type { i8*, i32, i32, i16, i16, %struct.__sbuf, i32, i8*, i32 (i8*)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i32 (i8*, i8*, i32)*, %struct.__sbuf, %struct.__sFILEX*, i32, [3 x i8], [1 x i8], %struct.__sbuf, i32, i64 }
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
; RUN: llvm-as < %s | opt -gvn | llvm-dis | grep tmp51.rle
|
; RUN: llvm-as < %s | opt -gvn | llvm-dis | grep {tmp47 = phi i32 }
|
||||||
|
|
||||||
%struct.anon = type { i32 (i32, i32, i32)*, i32, i32, [3 x i32], i8*, i8*, i8* }
|
%struct.anon = type { i32 (i32, i32, i32)*, i32, i32, [3 x i32], i8*, i8*, i8* }
|
||||||
@debug = external constant i32 ; <i32*> [#uses=0]
|
@debug = external constant i32 ; <i32*> [#uses=0]
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
; RUN: llvm-as < %s | opt -gvn | llvm-dis | not grep DEAD
|
; RUN: llvm-as < %s | opt -gvn | llvm-dis | grep load | count 2
|
||||||
|
|
||||||
define i32 @main(i32** %p) {
|
define i32 @main(i32** %p) {
|
||||||
block1:
|
block1:
|
||||||
@ -14,7 +14,7 @@ block3:
|
|||||||
br label %block4
|
br label %block4
|
||||||
|
|
||||||
block4:
|
block4:
|
||||||
%DEAD = load i32** %p
|
%c = load i32** %p
|
||||||
%c = load i32* %DEAD
|
%d = load i32* %c
|
||||||
ret i32 %c
|
ret i32 %d
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
; RUN: llvm-as < %s | opt -gvn | llvm-dis | grep {DEAD.rle = phi i32}
|
; RUN: llvm-as < %s | opt -gvn | llvm-dis | grep {DEAD = phi i32 }
|
||||||
; XFAIL: *
|
; XFAIL: *
|
||||||
|
|
||||||
; FIXME: GVN should eliminate the fully redundant %9 GEP which
|
; FIXME: GVN should eliminate the fully redundant %9 GEP which
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
; RUN: llvm-as < %s | opt -gvn | llvm-dis | not grep {DEAD =}
|
; RUN: llvm-as < %s | opt -gvn | llvm-dis | grep {%DEAD = phi i32. }
|
||||||
|
|
||||||
define i32 @main(i32** %p) {
|
define i32 @main(i32** %p) {
|
||||||
block1:
|
block1:
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
; RUN: llvm-as < %s | opt -gvn | llvm-dis | grep {%cv.rle = phi i32}
|
; RUN: llvm-as < %s | opt -gvn | llvm-dis | grep {%cv = phi i32}
|
||||||
; RUN: llvm-as < %s | opt -gvn | llvm-dis | grep {%bv.rle = phi i32}
|
; RUN: llvm-as < %s | opt -gvn | llvm-dis | grep {%bv = phi i32}
|
||||||
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
|
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
|
||||||
target triple = "i386-apple-darwin7"
|
target triple = "i386-apple-darwin7"
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
; RUN: llvm-as < %s | opt -gvn | llvm-dis | not grep {DEAD =}
|
; RUN: llvm-as < %s | opt -gvn | llvm-dis | grep {DEAD = phi i32 }
|
||||||
|
|
||||||
define i32 @main(i32* %p) {
|
define i32 @main(i32* %p) {
|
||||||
block1:
|
block1:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user