mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-14 16:33:28 +00:00
Make BasicAliasAnalysis a normal AliasAnalysis implementation which
does normal initialization and normal chaining. Change the default AliasAnalysis implementation to NoAlias. Update StandardCompileOpts.h and friends to explicitly request BasicAliasAnalysis. Update tests to explicitly request -basicaa. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116720 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
9baee3b3a3
commit
c1be92f3bb
@ -72,6 +72,7 @@ namespace llvm {
|
||||
static inline void createStandardFunctionPasses(PassManagerBase *PM,
|
||||
unsigned OptimizationLevel) {
|
||||
if (OptimizationLevel > 0) {
|
||||
PM->add(createBasicAliasAnalysisPass());
|
||||
PM->add(createCFGSimplificationPass());
|
||||
if (OptimizationLevel == 1)
|
||||
PM->add(createPromoteMemoryToRegisterPass());
|
||||
@ -91,6 +92,8 @@ namespace llvm {
|
||||
bool SimplifyLibCalls,
|
||||
bool HaveExceptions,
|
||||
Pass *InliningPass) {
|
||||
PM->add(createBasicAliasAnalysisPass());
|
||||
|
||||
if (OptimizationLevel == 0) {
|
||||
if (InliningPass)
|
||||
PM->add(InliningPass);
|
||||
@ -177,6 +180,9 @@ namespace llvm {
|
||||
bool Internalize,
|
||||
bool RunInliner,
|
||||
bool VerifyEach) {
|
||||
// Provide AliasAnalysis services for optimizations.
|
||||
PM->add(createBasicAliasAnalysisPass());
|
||||
|
||||
// Now that composite has been compiled, scan through the module, looking
|
||||
// for a main function. If main is defined, mark all other functions
|
||||
// internal.
|
||||
|
@ -190,7 +190,7 @@ namespace {
|
||||
char NoAA::ID = 0;
|
||||
INITIALIZE_AG_PASS(NoAA, AliasAnalysis, "no-aa",
|
||||
"No Alias Analysis (always returns 'may' alias)",
|
||||
true, true, false)
|
||||
true, true, true)
|
||||
|
||||
ImmutablePass *llvm::createNoAAPass() { return new NoAA(); }
|
||||
|
||||
@ -492,6 +492,14 @@ namespace {
|
||||
static char ID; // Class identification, replacement for typeinfo
|
||||
BasicAliasAnalysis() : NoAA(ID) {}
|
||||
|
||||
virtual void initializePass() {
|
||||
InitializeAliasAnalysis(this);
|
||||
}
|
||||
|
||||
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
|
||||
AU.addRequired<AliasAnalysis>();
|
||||
}
|
||||
|
||||
virtual AliasResult alias(const Location &LocA,
|
||||
const Location &LocB) {
|
||||
assert(Visited.empty() && "Visited must be cleared after use!");
|
||||
@ -561,7 +569,7 @@ namespace {
|
||||
char BasicAliasAnalysis::ID = 0;
|
||||
INITIALIZE_AG_PASS(BasicAliasAnalysis, AliasAnalysis, "basicaa",
|
||||
"Basic Alias Analysis (default AA impl)",
|
||||
false, true, true)
|
||||
false, true, false)
|
||||
|
||||
ImmutablePass *llvm::createBasicAliasAnalysisPass() {
|
||||
return new BasicAliasAnalysis();
|
||||
@ -578,7 +586,7 @@ bool BasicAliasAnalysis::pointsToConstantMemory(const Location &Loc) {
|
||||
// GV may even be a declaration, not a definition.
|
||||
return GV->isConstant();
|
||||
|
||||
return NoAA::pointsToConstantMemory(Loc);
|
||||
return AliasAnalysis::pointsToConstantMemory(Loc);
|
||||
}
|
||||
|
||||
/// getModRefBehavior - Return the behavior when calling the given call site.
|
||||
@ -611,7 +619,7 @@ BasicAliasAnalysis::getModRefBehavior(const Function *F) {
|
||||
if (unsigned id = F->getIntrinsicID())
|
||||
return getIntrinsicModRefBehavior(id);
|
||||
|
||||
return NoAA::getModRefBehavior(F);
|
||||
return AliasAnalysis::getModRefBehavior(F);
|
||||
}
|
||||
|
||||
/// getModRefInfo - Check to see if the specified callsite can clobber the
|
||||
@ -1065,24 +1073,30 @@ BasicAliasAnalysis::aliasCheck(const Value *V1, unsigned V1Size,
|
||||
std::swap(V1Size, V2Size);
|
||||
std::swap(O1, O2);
|
||||
}
|
||||
if (const GEPOperator *GV1 = dyn_cast<GEPOperator>(V1))
|
||||
return aliasGEP(GV1, V1Size, V2, V2Size, O1, O2);
|
||||
if (const GEPOperator *GV1 = dyn_cast<GEPOperator>(V1)) {
|
||||
AliasResult Result = aliasGEP(GV1, V1Size, V2, V2Size, O1, O2);
|
||||
if (Result != MayAlias) return Result;
|
||||
}
|
||||
|
||||
if (isa<PHINode>(V2) && !isa<PHINode>(V1)) {
|
||||
std::swap(V1, V2);
|
||||
std::swap(V1Size, V2Size);
|
||||
}
|
||||
if (const PHINode *PN = dyn_cast<PHINode>(V1))
|
||||
return aliasPHI(PN, V1Size, V2, V2Size);
|
||||
if (const PHINode *PN = dyn_cast<PHINode>(V1)) {
|
||||
AliasResult Result = aliasPHI(PN, V1Size, V2, V2Size);
|
||||
if (Result != MayAlias) return Result;
|
||||
}
|
||||
|
||||
if (isa<SelectInst>(V2) && !isa<SelectInst>(V1)) {
|
||||
std::swap(V1, V2);
|
||||
std::swap(V1Size, V2Size);
|
||||
}
|
||||
if (const SelectInst *S1 = dyn_cast<SelectInst>(V1))
|
||||
return aliasSelect(S1, V1Size, V2, V2Size);
|
||||
if (const SelectInst *S1 = dyn_cast<SelectInst>(V1)) {
|
||||
AliasResult Result = aliasSelect(S1, V1Size, V2, V2Size);
|
||||
if (Result != MayAlias) return Result;
|
||||
}
|
||||
|
||||
return NoAA::alias(Location(V1, V1Size), Location(V2, V2Size));
|
||||
return AliasAnalysis::alias(Location(V1, V1Size), Location(V2, V2Size));
|
||||
}
|
||||
|
||||
// Make sure that anything that uses AliasAnalysis pulls in this file.
|
||||
|
@ -14,6 +14,7 @@
|
||||
#include "llvm/Target/TargetMachine.h"
|
||||
#include "llvm/PassManager.h"
|
||||
#include "llvm/Analysis/Verifier.h"
|
||||
#include "llvm/Analysis/Passes.h"
|
||||
#include "llvm/Assembly/PrintModulePass.h"
|
||||
#include "llvm/CodeGen/AsmPrinter.h"
|
||||
#include "llvm/CodeGen/MachineFunctionAnalysis.h"
|
||||
@ -254,6 +255,9 @@ bool LLVMTargetMachine::addCommonCodeGenPasses(PassManagerBase &PM,
|
||||
MCContext *&OutContext) {
|
||||
// Standard LLVM-Level Passes.
|
||||
|
||||
// Basic AliasAnalysis support.
|
||||
PM.add(createBasicAliasAnalysisPass());
|
||||
|
||||
// Before running any passes, run the verifier to determine if the input
|
||||
// coming from the front-end and/or optimizer is valid.
|
||||
if (!DisableVerify)
|
||||
|
@ -2,7 +2,7 @@
|
||||
; is performed. It is not legal to delete the second load instruction because
|
||||
; the value computed by the first load instruction is changed by the store.
|
||||
|
||||
; RUN: opt < %s -gvn -instcombine -S | grep DONOTREMOVE
|
||||
; RUN: opt < %s -basicaa -gvn -instcombine -S | grep DONOTREMOVE
|
||||
|
||||
define i32 @test() {
|
||||
%A = alloca i32
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -gvn -instcombine -S | grep sub
|
||||
; RUN: opt < %s -basicaa -gvn -instcombine -S | grep sub
|
||||
|
||||
; BasicAA was incorrectly concluding that P1 and P2 didn't conflict!
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -licm -disable-output
|
||||
; RUN: opt < %s -basicaa -licm -disable-output
|
||||
%struct..apr_array_header_t = type { i32*, i32, i32, i32, i8* }
|
||||
%struct..apr_table_t = type { %struct..apr_array_header_t, i32, [32 x i32], [32 x i32] }
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
; In this test, a local alloca cannot alias an incoming argument.
|
||||
|
||||
; RUN: opt < %s -gvn -instcombine -S | not grep sub
|
||||
; RUN: opt < %s -basicaa -gvn -instcombine -S | not grep sub
|
||||
|
||||
define i32 @test(i32* %P) {
|
||||
%X = alloca i32
|
||||
|
@ -1,7 +1,7 @@
|
||||
; This testcase consists of alias relations which should be completely
|
||||
; resolvable by basicaa.
|
||||
|
||||
; RUN: opt < %s -aa-eval -print-may-aliases -disable-output \
|
||||
; RUN: opt < %s -basicaa -aa-eval -print-may-aliases -disable-output \
|
||||
; RUN: |& not grep May:
|
||||
|
||||
%T = type { i32, [10 x i8] }
|
||||
|
@ -1,7 +1,7 @@
|
||||
; This testcase consists of alias relations which should be completely
|
||||
; resolvable by basicaa, but require analysis of getelementptr constant exprs.
|
||||
|
||||
; RUN: opt < %s -aa-eval -print-may-aliases -disable-output \
|
||||
; RUN: opt < %s -basicaa -aa-eval -print-may-aliases -disable-output \
|
||||
; RUN: |& not grep May:
|
||||
|
||||
%T = type { i32, [10 x i8] }
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -dse -S | grep {store i32 0}
|
||||
; RUN: opt < %s -basicaa -dse -S | grep {store i32 0}
|
||||
|
||||
define void @test({i32,i32 }* %P) {
|
||||
%Q = getelementptr {i32,i32}* %P, i32 1
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -licm
|
||||
; RUN: opt < %s -basicaa -licm
|
||||
|
||||
%"java/lang/Object" = type { %struct.llvm_java_object_base }
|
||||
%"java/lang/StringBuffer" = type { "java/lang/Object", i32, { "java/lang/Object", i32, [0 x i8] }*, i1 }
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -dse
|
||||
; RUN: opt < %s -basicaa -dse
|
||||
|
||||
%"java/lang/Object" = type { %struct.llvm_java_object_base }
|
||||
%"java/lang/StringBuffer" = type { "java/lang/Object", i32, { "java/lang/Object", i32, [0 x i8] }*, i1 }
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -aa-eval -disable-output |& grep {2 no alias respon}
|
||||
; RUN: opt < %s -basicaa -aa-eval -disable-output |& grep {2 no alias respon}
|
||||
; TEST that A[1][0] may alias A[0][i].
|
||||
target datalayout = "E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128"
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -licm -disable-output
|
||||
; RUN: opt < %s -basicaa -licm -disable-output
|
||||
target datalayout = "E-p:32:32"
|
||||
target triple = "powerpc-apple-darwin8.7.0"
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -gvn -disable-output
|
||||
; RUN: opt < %s -basicaa -gvn -disable-output
|
||||
; PR1774
|
||||
|
||||
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -gvn -disable-output
|
||||
; RUN: opt < %s -basicaa -gvn -disable-output
|
||||
; PR1782
|
||||
|
||||
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -gvn -disable-output
|
||||
; RUN: opt < %s -basicaa -gvn -disable-output
|
||||
; PR2395
|
||||
|
||||
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:32:32"
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -aa-eval |& grep {1 no alias response}
|
||||
; RUN: opt < %s -basicaa -aa-eval |& grep {1 no alias response}
|
||||
|
||||
declare noalias i32* @_Znwj(i32 %x) nounwind
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt -gvn -instcombine -S < %s | FileCheck %s
|
||||
; RUN: opt -basicaa -gvn -instcombine -S < %s | FileCheck %s
|
||||
target datalayout = "E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128"
|
||||
|
||||
declare i8 @llvm.atomic.load.add.i8.p0i8(i8*, i8)
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -aa-eval -print-all-alias-modref-info -disable-output |& grep {NoAlias:.*%P,.*@Z}
|
||||
; RUN: opt < %s -basicaa -aa-eval -print-all-alias-modref-info -disable-output |& grep {NoAlias:.*%P,.*@Z}
|
||||
; If GEP base doesn't alias Z, then GEP doesn't alias Z.
|
||||
; rdar://7282591
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt -aa-eval -print-all-alias-modref-info -disable-output < %s |& FileCheck %s
|
||||
; RUN: opt -basicaa -aa-eval -print-all-alias-modref-info -disable-output < %s |& FileCheck %s
|
||||
|
||||
declare void @callee(double* %callee_arg)
|
||||
declare void @nocap_callee(double* nocapture %nocap_callee_arg)
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -gvn -S | grep {ret i32 1}
|
||||
; RUN: opt < %s -basicaa -gvn -S | grep {ret i32 1}
|
||||
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 = "i686-apple-darwin8"
|
||||
%struct.x = type { i32, i32, i32, i32 }
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -aa-eval -print-all-alias-modref-info |& FileCheck %s
|
||||
; RUN: opt < %s -basicaa -aa-eval -print-all-alias-modref-info |& FileCheck %s
|
||||
; PR4267
|
||||
|
||||
; CHECK: MayAlias: double* %p.0.i.0, double* %p3
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -aa-eval -print-all-alias-modref-info -disable-output \
|
||||
; RUN: opt < %s -basicaa -aa-eval -print-all-alias-modref-info -disable-output \
|
||||
; RUN: |& grep {NoAlias: \{\}\\* \[%\]p, \{\}\\* \[%\]q}
|
||||
|
||||
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -gvn -instcombine -S |& FileCheck %s
|
||||
; RUN: opt < %s -basicaa -gvn -instcombine -S |& FileCheck %s
|
||||
|
||||
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"
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -aa-eval -print-all-alias-modref-info -disable-output |& FileCheck %s
|
||||
; RUN: opt < %s -basicaa -aa-eval -print-all-alias-modref-info -disable-output |& FileCheck %s
|
||||
|
||||
|
||||
; CHECK: Just Ref: call void @ro() <-> call void @f0()
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -aa-eval -print-all-alias-modref-info -disable-output \
|
||||
; RUN: opt < %s -basicaa -aa-eval -print-all-alias-modref-info -disable-output \
|
||||
; RUN: |& grep {NoAlias: double\\* \[%\]a, double\\* \[%\]b\$} | count 4
|
||||
|
||||
; BasicAA should detect NoAliases in PHIs and Selects.
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt -aa-eval -disable-output < %s >& /dev/null
|
||||
; RUN: opt -basicaa -aa-eval -disable-output < %s >& /dev/null
|
||||
|
||||
; BasicAA shouldn't infinitely recurse on the use-def cycles in
|
||||
; unreachable code.
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -globalsmodref-aa -gvn -S | not grep load
|
||||
; RUN: opt < %s -basicaa -globalsmodref-aa -gvn -S | not grep load
|
||||
@X = internal global i32 4 ; <i32*> [#uses=1]
|
||||
|
||||
define i32 @test(i32* %P) {
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -globalsmodref-aa -gvn -S | not grep load
|
||||
; RUN: opt < %s -basicaa -globalsmodref-aa -gvn -S | not grep load
|
||||
|
||||
; This test requires the use of previous analyses to determine that
|
||||
; doesnotmodX does not modify X (because 'sin' doesn't).
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -globalsmodref-aa -gvn -instcombine -S | \
|
||||
; RUN: opt < %s -basicaa -globalsmodref-aa -gvn -instcombine -S | \
|
||||
; RUN: grep {ret i32 0}
|
||||
|
||||
@G = internal global i32* null ; <i32**> [#uses=3]
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -globalsmodref-aa -gvn -S | not grep load
|
||||
; RUN: opt < %s -basicaa -globalsmodref-aa -gvn -S | not grep load
|
||||
@X = internal global i32 4 ; <i32*> [#uses=2]
|
||||
|
||||
define i32 @test(i32* %P) {
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -analyze -lda | FileCheck %s
|
||||
; RUN: opt < %s -analyze -basicaa -lda | FileCheck %s
|
||||
|
||||
;; x[5] = x[6] // with x being a pointer passed as argument
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -analyze -lda | FileCheck %s
|
||||
; RUN: opt < %s -analyze -basicaa -lda | FileCheck %s
|
||||
|
||||
@x = common global [256 x i32] zeroinitializer, align 4
|
||||
@y = common global [256 x i32] zeroinitializer, align 4
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -analyze -lda | FileCheck %s
|
||||
; RUN: opt < %s -analyze -basicaa -lda | FileCheck %s
|
||||
|
||||
@x = common global [256 x i32] zeroinitializer, align 4
|
||||
@y = common global [256 x i32] zeroinitializer, align 4
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -analyze -lda | FileCheck %s
|
||||
; RUN: opt < %s -analyze -basicaa -lda | FileCheck %s
|
||||
|
||||
@x = common global [256 x i32] zeroinitializer, align 4
|
||||
@y = common global [256 x i32] zeroinitializer, align 4
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -analyze -lda | FileCheck %s
|
||||
; RUN: opt < %s -analyze -basicaa -lda | FileCheck %s
|
||||
|
||||
@x = common global [256 x i32] zeroinitializer, align 4
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -tbaa -gvn -S | FileCheck %s
|
||||
; RUN: opt < %s -basicaa -tbaa -gvn -S | FileCheck %s
|
||||
|
||||
; CHECK: @test0_yes
|
||||
; CHECK: add i8 %x, %x
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt -lint -disable-output < %s |& FileCheck %s
|
||||
; RUN: opt -basicaa -lint -disable-output < %s |& FileCheck %s
|
||||
target datalayout = "e-p:64:64:64"
|
||||
|
||||
declare fastcc void @bar()
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -argpromotion -mem2reg -S | not grep alloca
|
||||
; RUN: opt < %s -basicaa -argpromotion -mem2reg -S | not grep alloca
|
||||
target datalayout = "E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128"
|
||||
define internal i32 @test(i32* %X, i32* %Y) {
|
||||
%A = load i32* %X ; <i32> [#uses=1]
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -dse -S | not grep tmp5
|
||||
; RUN: opt < %s -basicaa -dse -S | not grep tmp5
|
||||
; PR2599
|
||||
target datalayout = "E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128"
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -dse -S | \
|
||||
; RUN: opt < %s -basicaa -dse -S | \
|
||||
; RUN: not grep {store i8}
|
||||
; Ensure that the dead store is deleted in this case. It is wholely
|
||||
; overwritten by the second store.
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %s -dse -S | FileCheck %s
|
||||
; RUN: opt %s -basicaa -dse -S | FileCheck %s
|
||||
|
||||
%t = type { i32 }
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -dse -S | not grep DEAD
|
||||
; RUN: opt < %s -basicaa -dse -S | not grep DEAD
|
||||
target datalayout = "E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128"
|
||||
|
||||
declare void @ext()
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -dse -S | not grep DEAD
|
||||
; RUN: opt < %s -basicaa -dse -S | not grep DEAD
|
||||
|
||||
define void @test(i32* %Q, i32* %P) {
|
||||
%DEAD = load i32* %Q ; <i32> [#uses=1]
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt -S -dse < %s | FileCheck %s
|
||||
; RUN: opt -S -basicaa -dse < %s | FileCheck %s
|
||||
|
||||
target datalayout = "E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128"
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %s -dse -S | FileCheck %s
|
||||
; RUN: opt %s -basicaa -dse -S | FileCheck %s
|
||||
|
||||
declare void @test1f()
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -dse -S | not grep DEAD
|
||||
; RUN: opt < %s -basicaa -dse -S | not grep DEAD
|
||||
target datalayout = "E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128"
|
||||
|
||||
define void @test(i32* %Q, i32* %P) {
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -gvn -S | not grep {tmp10 =}
|
||||
; RUN: opt < %s -basicaa -gvn -S | not grep {tmp10 =}
|
||||
|
||||
%struct.INT2 = type { i32, i32 }
|
||||
@blkshifts = external global %struct.INT2* ; <%struct.INT2**> [#uses=2]
|
||||
|
@ -1,5 +1,5 @@
|
||||
; RUN: opt < %s -gvn -S | grep {tmp17625.* = phi i32. }
|
||||
; RUN: opt < %s -gvn -S | grep {tmp17631.* = phi i32. }
|
||||
; RUN: opt < %s -basicaa -gvn -S | grep {tmp17625.* = phi i32. }
|
||||
; RUN: opt < %s -basicaa -gvn -S | grep {tmp17631.* = phi i32. }
|
||||
|
||||
@last = external global [65 x i32*] ; <[65 x i32*]*> [#uses=1]
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -gvn -S | grep {tmp47 = phi i32 }
|
||||
; RUN: opt < %s -basicaa -gvn -S | grep {tmp47 = phi i32 }
|
||||
|
||||
%struct.anon = type { i32 (i32, i32, i32)*, i32, i32, [3 x i32], i8*, i8*, i8* }
|
||||
@debug = external constant i32 ; <i32*> [#uses=0]
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -gvn -S | not grep {tmp701 =}
|
||||
; RUN: opt < %s -basicaa -gvn -S | not grep {tmp701 =}
|
||||
|
||||
@img_width = external global i16 ; <i16*> [#uses=2]
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -gvn -S | grep {ret i8 \[%\]tmp3}
|
||||
; RUN: opt < %s -basicaa -gvn -S | grep {ret i8 \[%\]tmp3}
|
||||
; PR2503
|
||||
|
||||
@g_3 = external global i8 ; <i8*> [#uses=2]
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -gvn -S | FileCheck %s
|
||||
; RUN: opt < %s -basicaa -gvn -S | FileCheck %s
|
||||
|
||||
define i8* @cat(i8* %s1, ...) nounwind {
|
||||
entry:
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -gvn -S | grep strlen | count 2
|
||||
; RUN: opt < %s -basicaa -gvn -S | grep strlen | count 2
|
||||
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-darwin9"
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -gvn -S | grep {br i1 false}
|
||||
; RUN: opt < %s -basicaa -gvn -S | grep {br i1 false}
|
||||
|
||||
@a = external global i32 ; <i32*> [#uses=7]
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -gvn -S | FileCheck %s
|
||||
; RUN: opt < %s -basicaa -gvn -S | FileCheck %s
|
||||
|
||||
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"
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -gvn -S | FileCheck %s
|
||||
; RUN: opt < %s -basicaa -gvn -S | FileCheck %s
|
||||
|
||||
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"
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -gvn -instcombine -S | grep {ret i32 0}
|
||||
; RUN: opt < %s -basicaa -gvn -instcombine -S | grep {ret i32 0}
|
||||
; PR4189
|
||||
@G = external constant [4 x i32]
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt -S -gvn < %s | FileCheck %s
|
||||
; RUN: opt -S -basicaa -gvn < %s | FileCheck %s
|
||||
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-n8:16:32"
|
||||
target triple = "i386-apple-darwin11.0.0"
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt -S -gvn -enable-load-pre %s | FileCheck %s
|
||||
; RUN: opt -S -basicaa -gvn -enable-load-pre %s | FileCheck %s
|
||||
;
|
||||
; The partially redundant load in bb1 should be hoisted to "bb". This comes
|
||||
; from this C code (GCC PR 23455):
|
||||
|
@ -1,5 +1,5 @@
|
||||
; RUN: opt < %s -gvn -S | not grep DEADLOAD
|
||||
; RUN: opt < %s -gvn -S | not grep DEADGEP
|
||||
; RUN: opt < %s -basicaa -gvn -S | not grep DEADLOAD
|
||||
; RUN: opt < %s -basicaa -gvn -S | not grep DEADGEP
|
||||
|
||||
define i32 @main(i32** %p) {
|
||||
block1:
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -gvn -stats -disable-output |& grep {Number of loads deleted}
|
||||
; RUN: opt < %s -basicaa -gvn -stats -disable-output |& grep {Number of loads deleted}
|
||||
; rdar://7363102
|
||||
|
||||
; GVN should be able to eliminate load %tmp22.i, because it is redundant with
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt %s -gvn -S | FileCheck %s
|
||||
; RUN: opt %s -basicaa -gvn -S | FileCheck %s
|
||||
|
||||
%t = type { i32 }
|
||||
declare void @test1f(i8*)
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -gvn -enable-load-pre -S | FileCheck %s
|
||||
; RUN: opt < %s -basicaa -gvn -enable-load-pre -S | FileCheck %s
|
||||
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
|
||||
|
||||
define i32 @test1(i32* %p, i1 %C) {
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -gvn -S | grep {DEAD = phi i32 }
|
||||
; RUN: opt < %s -basicaa -gvn -S | grep {DEAD = phi i32 }
|
||||
|
||||
; GVN should eliminate the fully redundant %9 GEP which
|
||||
; allows DEAD to be removed. This is PR3198.
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -gvn -S | FileCheck %s
|
||||
; RUN: opt < %s -basicaa -gvn -S | FileCheck %s
|
||||
|
||||
define i32 @main(i32** %p) {
|
||||
block1:
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -gvn -S | grep {DEAD = phi i32 }
|
||||
; RUN: opt < %s -basicaa -gvn -S | grep {DEAD = phi i32 }
|
||||
|
||||
define i32 @main(i32* %p) {
|
||||
block1:
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -gvn -S | FileCheck %s
|
||||
; RUN: opt < %s -basicaa -gvn -S | FileCheck %s
|
||||
|
||||
; 32-bit little endian target.
|
||||
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"
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt -inline -S -scalarrepl -gvn -instcombine %s | FileCheck %s
|
||||
; RUN: opt -basicaa -inline -S -scalarrepl -gvn -instcombine %s | FileCheck %s
|
||||
; PR5009
|
||||
|
||||
; CHECK: define i32 @main()
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt -S -inline -scalarrepl -instcombine -simplifycfg -instcombine -gvn -globaldce %s | FileCheck %s
|
||||
; RUN: opt -S -basicaa -inline -scalarrepl -instcombine -simplifycfg -instcombine -gvn -globaldce %s | FileCheck %s
|
||||
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
|
||||
target triple = "x86_64-apple-darwin10.0.0"
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt -inline -gvn %s -S -max-cg-scc-iterations=1 | FileCheck %s
|
||||
; RUN: opt -basicaa -inline -gvn %s -S -max-cg-scc-iterations=1 | FileCheck %s
|
||||
; rdar://6295824 and PR6724
|
||||
|
||||
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -licm -S | FileCheck %s
|
||||
; RUN: opt < %s -basicaa -licm -S | FileCheck %s
|
||||
|
||||
@a = external constant float*
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -licm -S | FileCheck %s
|
||||
; RUN: opt < %s -basicaa -licm -S | FileCheck %s
|
||||
target datalayout = "E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128"
|
||||
|
||||
@X = global i32 7 ; <i32*> [#uses=4]
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -memcpyopt -dse -S | grep {call.*initialize} | not grep memtmp
|
||||
; RUN: opt < %s -basicaa -memcpyopt -dse -S | grep {call.*initialize} | not grep memtmp
|
||||
; PR2077
|
||||
|
||||
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:32:32"
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -memcpyopt -S | not grep {call.*memcpy.}
|
||||
; RUN: opt < %s -basicaa -memcpyopt -S | not grep {call.*memcpy.}
|
||||
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"
|
||||
%a = type { i32 }
|
||||
%b = type { float }
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt -S < %s -memcpyopt | FileCheck %s
|
||||
; RUN: opt -S < %s -basicaa -memcpyopt | FileCheck %s
|
||||
; <rdar://problem/8536696>
|
||||
|
||||
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -memcpyopt -dse -S | grep {call.*memcpy} | count 1
|
||||
; RUN: opt < %s -basicaa -memcpyopt -dse -S | grep {call.*memcpy} | count 1
|
||||
|
||||
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 = "i686-apple-darwin9"
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -memcpyopt -S | FileCheck %s
|
||||
; RUN: opt < %s -basicaa -memcpyopt -S | FileCheck %s
|
||||
; These memmoves should get optimized to memcpys.
|
||||
|
||||
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -memcpyopt -S | not grep {call.*memcpy}
|
||||
; RUN: opt < %s -basicaa -memcpyopt -S | not grep {call.*memcpy}
|
||||
|
||||
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 = "i686-apple-darwin9"
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -sink -S | FileCheck %s
|
||||
; RUN: opt < %s -basicaa -sink -S | FileCheck %s
|
||||
|
||||
@A = external global i32
|
||||
@B = external global i32
|
||||
|
Loading…
x
Reference in New Issue
Block a user