diff options
author | Andrew Lenharth <andrewl@lenharth.org> | 2006-03-15 05:43:41 +0000 |
---|---|---|
committer | Andrew Lenharth <andrewl@lenharth.org> | 2006-03-15 05:43:41 +0000 |
commit | fb4df2055fbe81ffb8b9902c04070bc2f9640515 (patch) | |
tree | 2c2936a0dd0d607cb146f6c15c8d0a79e2bf9480 /llvm/lib/Analysis/DataStructure/DataStructure.cpp | |
parent | 2e1fde7c5cbd52e97c394a5099e43548a0d087e4 (diff) | |
download | bcm5719-llvm-fb4df2055fbe81ffb8b9902c04070bc2f9640515.tar.gz bcm5719-llvm-fb4df2055fbe81ffb8b9902c04070bc2f9640515.zip |
allow field sensitivity to be a tunable parameter
llvm-svn: 26777
Diffstat (limited to 'llvm/lib/Analysis/DataStructure/DataStructure.cpp')
-rw-r--r-- | llvm/lib/Analysis/DataStructure/DataStructure.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/llvm/lib/Analysis/DataStructure/DataStructure.cpp b/llvm/lib/Analysis/DataStructure/DataStructure.cpp index bd1757dcfd9..7fabdf21238 100644 --- a/llvm/lib/Analysis/DataStructure/DataStructure.cpp +++ b/llvm/lib/Analysis/DataStructure/DataStructure.cpp @@ -39,6 +39,10 @@ namespace { Statistic<> NumDNE ("dsa", "Number of nodes removed by reachability"); Statistic<> NumTrivialDNE ("dsa", "Number of nodes trivially removed"); Statistic<> NumTrivialGlobalDNE("dsa", "Number of globals trivially removed"); + static cl::opt<unsigned> + DSAFieldLimit("dsa-field-limit", cl::Hidden, + cl::desc("Number of fields to track before collapsing a node"), + cl::init(256)); }; #if 0 @@ -468,7 +472,7 @@ bool DSNode::mergeTypeInfo(const Type *NewTy, unsigned Offset, // collapse it. This can occur for fortran common blocks, which have stupid // things like { [100000000 x double], [1000000 x double] }. unsigned NumFields = (NewTySize+DS::PointerSize-1) >> DS::PointerShift; - if (NumFields > 256) { + if (NumFields > DSAFieldLimit) { foldNodeCompletely(); return true; } @@ -496,7 +500,7 @@ bool DSNode::mergeTypeInfo(const Type *NewTy, unsigned Offset, // collapse it. This can occur for fortran common blocks, which have stupid // things like { [100000000 x double], [1000000 x double] }. unsigned NumFields = (NewTySize+Offset+DS::PointerSize-1) >> DS::PointerShift; - if (NumFields > 256) { + if (NumFields > DSAFieldLimit) { foldNodeCompletely(); return true; } |