Victor Hernandez
628b65ea6e
Changes requested (avoid getFunction(), avoid Type creation via isVoidTy(), and avoid redundant isFreeCall cases) in feedback to r85176
...
llvm-svn: 85936
2009-11-03 20:39:35 +00:00
Victor Hernandez
046375ac3f
Changes (* location in pointer variables, avoiding include, and using APInt::getLimitedValue) based on feedback to r85814
...
llvm-svn: 85933
2009-11-03 20:02:35 +00:00
Chris Lattner
7585c1f162
remove unneeded checks of isFreeCall
...
llvm-svn: 85866
2009-11-03 05:35:19 +00:00
Chris Lattner
cbd903cd12
remove a check of isFreeCall: the argument to free is already nocapture so the generic call code works fine.
...
llvm-svn: 85865
2009-11-03 05:34:51 +00:00
Victor Hernandez
1d2fd19df6
Set bit instead of calling pow() to compute 2 << n
...
llvm-svn: 85814
2009-11-02 18:51:28 +00:00
Edward O'Callaghan
e91c6a1a44
Fix for warning seen on DF-BSD, Victor, please fix this to use a shift instead of pow()
...
llvm-svn: 85781
2009-11-02 03:14:31 +00:00
Edward O'Callaghan
64a2e8f6a5
Apply fix for PR5135, Credit to Andreas Neustifter.
...
llvm-svn: 85779
2009-11-02 02:55:39 +00:00
Duncan Sands
fd3669403c
Add a missing closing parenthesis, and tweak to fit in 80
...
columns.
llvm-svn: 85732
2009-11-01 19:12:43 +00:00
Chris Lattner
11944e39d4
add a comment about why we don't allow inlining indbr.
...
llvm-svn: 85724
2009-11-01 18:16:30 +00:00
Douglas Gregor
16c6819959
Reverting 85714, 85715, 85716, which are breaking the build
...
llvm-svn: 85717
2009-11-01 16:42:53 +00:00
Dan Gohman
58714b62b6
Add a function to Passes.h to allow clients to create instances
...
of the ScalarEvolution pass without needing to #include ScalarEvolution.h.
llvm-svn: 85716
2009-11-01 15:28:36 +00:00
Dan Gohman
9cdf5185a3
Don't #include Pass.h from CallGraph.h.
...
llvm-svn: 85715
2009-11-01 15:23:35 +00:00
Chris Lattner
7a60ef5e23
pull check for return inst out of loop, never inline a callee that contains
...
an indirectbr.
llvm-svn: 85702
2009-11-01 03:07:53 +00:00
Dan Gohman
0079f87732
Rename forgetLoopBackedgeTakenCount to forgetLoop, because it
...
clears out more information than just the stored backedge taken count.
llvm-svn: 85664
2009-10-31 15:04:55 +00:00
Dan Gohman
7d09ca3e5b
Make ScalarEvolutionAliasAnalysis slightly more aggressive, by making an
...
underlying alias call even for non-identified-object values.
llvm-svn: 85656
2009-10-31 14:32:25 +00:00
Devang Patel
b16ace1014
If string field is empty then return NULL.
...
llvm-svn: 85630
2009-10-30 22:52:47 +00:00
Devang Patel
2b9d1ade65
If a type is derived from a derived type then calculate size appropriately.
...
llvm-svn: 85619
2009-10-30 22:09:30 +00:00
Devang Patel
093d35bd8a
First bitcase use may not lead to a dbg.declare intrinsic. Iterate uses until one find's dbg.declare intrinsic.
...
Patch by Sunae Seo.
llvm-svn: 85518
2009-10-29 18:20:34 +00:00
Zhongxing Xu
93af2d027f
fix 80-col.
...
llvm-svn: 85480
2009-10-29 04:41:24 +00:00
Zhongxing Xu
45d8013f73
Explicitly convert to double to suppress Visual C++ 2008 build error C2668 pow is ambiguous call to overloaded function
...
llvm-svn: 85478
2009-10-29 03:43:06 +00:00
Victor Hernandez
917cf94b22
Extend getMallocArraySize() to determine the array size if the malloc argument is:
...
ArraySize * ElementSize
ElementSize * ArraySize
ArraySize << log2(ElementSize)
ElementSize << log2(ArraySize)
Refactor isArrayMallocHelper and delete isSafeToGetMallocArraySize, so that there is only 1 copy of the malloc array determining logic.
Update users of getMallocArraySize() to not bother calling isArrayMalloc() as well.
llvm-svn: 85421
2009-10-28 20:18:55 +00:00
Owen Anderson
cfb2c9edeb
Treat lifetime begin/end markers as allocations/frees respectively for the
...
purposes for GVN/DSE.
llvm-svn: 85383
2009-10-28 07:05:35 +00:00
Owen Anderson
a2584a4c64
Be more careful about invariance reasoning on "store" queries. Stores still need
...
to depend on Ref and ModRef calls within the invariant region.
llvm-svn: 85380
2009-10-28 06:30:52 +00:00
Owen Anderson
6cf32f04df
Add trivial support for the invariance intrinsics to memdep. This logic is
...
purely local for now.
llvm-svn: 85378
2009-10-28 06:18:42 +00:00
Chris Lattner
2bc8002f4c
rename indbr -> indirectbr to appease the residents of #llvm.
...
llvm-svn: 85351
2009-10-28 00:19:10 +00:00
Chris Lattner
5bd76ffebb
make the build build.
...
llvm-svn: 85319
2009-10-27 21:43:39 +00:00
Chris Lattner
665b9e2a3c
Random updates to passes for indbr, I need blockaddress before I can do much more.
...
llvm-svn: 85316
2009-10-27 21:27:42 +00:00
Victor Hernandez
0f662a7acf
Rename MallocFreeHelper as MemoryBuiltins
...
llvm-svn: 85286
2009-10-27 20:05:49 +00:00
Victor Hernandez
6c86b93663
Rename MallocHelper as MallocFreeHelper, since it now also identifies calls to free()
...
llvm-svn: 85181
2009-10-26 23:58:56 +00:00
Victor Hernandez
673c036bc7
Remove FreeInst.
...
Remove LowerAllocations pass.
Update some more passes to treate free calls just like they were treating FreeInst.
llvm-svn: 85176
2009-10-26 23:43:48 +00:00
Dan Gohman
c8468855a7
Teach BasicAA how to analyze Select instructions, and make it more
...
aggressive on PHI instructions.
llvm-svn: 85158
2009-10-26 21:55:43 +00:00
Devang Patel
9eb437047b
Add support to encode type info using llvm::Constant.
...
Patch by Talin!
llvm-svn: 85126
2009-10-26 16:54:35 +00:00
Nick Lewycky
2b8400628d
Remove includes of Support/Compiler.h that are no longer needed after the
...
VISIBILITY_HIDDEN removal.
llvm-svn: 85043
2009-10-25 06:57:41 +00:00
Nick Lewycky
711c726c97
Remove VISIBILITY_HIDDEN from class/struct found inside anonymous namespaces.
...
Chris claims we should never have visibility_hidden inside any .cpp file but
that's still not true even after this commit.
llvm-svn: 85042
2009-10-25 06:33:48 +00:00
Chris Lattner
d8db8b6952
Teach FoldBitCast to be able to handle bitcasts from (e.g.) i128 -> <4 x float>.
...
This allows us to simplify this:
union vec2d {
double e[2];
double v __attribute__((vector_size(16)));
};
typedef union vec2d vec2d;
static vec2d a={{1,2}}, b={{3,4}};
vec2d foo () {
return (vec2d){ .v = a.v + b.v * (vec2d){{5,5}}.v };
}
down to:
define %0 @foo() nounwind ssp {
entry:
%mrv5 = insertvalue %0 undef, double 1.600000e+01, 0 ; <%0> [#uses=1]
%mrv6 = insertvalue %0 %mrv5, double 2.200000e+01, 1 ; <%0> [#uses=1]
ret %0 %mrv6
}
instead of:
define %0 @foo() nounwind ssp {
entry:
%mrv5 = insertvalue %0 undef, double extractelement (<2 x double> fadd (<2 x double> fmul (<2 x double> bitcast (<1 x i128> <i128 85174437667405312423031577302488055808> to <2 x double>), <2 x double> <double 3.000000e+00, double 4.000000e+00>), <2 x double> <double 1.000000e+00, double 2.000000e+00>), i32 0), 0 ; <%0> [#uses=1]
%mrv6 = insertvalue %0 %mrv5, double extractelement (<2 x double> fadd (<2 x double> fmul (<2 x double> bitcast (<1 x i128> <i128 85174437667405312423031577302488055808> to <2 x double>), <2 x double> <double 3.000000e+00, double 4.000000e+00>), <2 x double> <double 1.000000e+00, double 2.000000e+00>), i32 1), 1 ; <%0> [#uses=1]
ret %0 %mrv6
}
llvm-svn: 85040
2009-10-25 06:15:37 +00:00
Chris Lattner
d80c1f61d2
move FoldBitCast earlier in the file, and use it instead of
...
ConstantExpr::getBitCast in various places.
llvm-svn: 85039
2009-10-25 06:08:26 +00:00
Chris Lattner
f6cb8d6b90
refactor FoldBitCast to reduce nesting and to always return a constantexpr
...
instead of returning null on failure. No functionality change.
llvm-svn: 85038
2009-10-25 06:02:57 +00:00
Chris Lattner
5f456758c6
various cleanups suggested by Duncan
...
llvm-svn: 84993
2009-10-24 05:27:19 +00:00
Chris Lattner
9a1f5c9f90
fix PR5287, a serious regression from my previous patches. Thanks to
...
Duncan for the nice tiny testcase.
llvm-svn: 84992
2009-10-24 05:22:15 +00:00
Victor Hernandez
e8998896f5
Auto-upgrade free instructions to calls to the builtin free function.
...
Update all analysis passes and transforms to treat free calls just like FreeInst.
Remove RaiseAllocations and all its tests since FreeInst no longer needs to be raised.
llvm-svn: 84987
2009-10-24 04:23:03 +00:00
Victor Hernandez
8428eb5720
Remove AllocationInst. Since MallocInst went away, AllocaInst is the only subclass of AllocationInst, so it no longer is necessary.
...
llvm-svn: 84969
2009-10-23 21:09:37 +00:00
Chris Lattner
4874f5bce5
teach libanalysis to simplify vector loads with bitcast sources. This
...
implements something out of Target/README.txt producing:
_foo: ## @foo
movl 4(%esp), %eax
movapd LCPI1_0, %xmm0
movapd %xmm0, (%eax)
ret $4
instead of:
_foo: ## @foo
movl 4(%esp), %eax
movapd _b, %xmm0
mulpd LCPI1_0, %xmm0
addpd _a, %xmm0
movapd %xmm0, (%eax)
ret $4
llvm-svn: 84942
2009-10-23 06:57:37 +00:00
Chris Lattner
2ee1f0f0b5
enhance FoldReinterpretLoadFromConstPtr to handle loads of up to 32
...
bytes (i256).
llvm-svn: 84941
2009-10-23 06:50:36 +00:00
Chris Lattner
b1d2706a4c
teach libanalysis to fold int and fp loads from almost arbitrary
...
non-type-safe constant initializers. This sort of thing happens
quite a bit for 4-byte loads out of string constants, unions,
bitfields, and an interesting endianness check from sqlite, which
is something like this:
const int sqlite3one = 1;
# define SQLITE_BIGENDIAN (*(char *)(&sqlite3one)==0)
# define SQLITE_LITTLEENDIAN (*(char *)(&sqlite3one)==1)
# define SQLITE_UTF16NATIVE (SQLITE_BIGENDIAN?SQLITE_UTF16BE:SQLITE_UTF16LE)
all of these macros now constant fold away.
This implements PR3152 and is based on a patch started by Eli, but heavily
modified and extended.
llvm-svn: 84936
2009-10-23 06:23:49 +00:00
Chris Lattner
cd80b1711b
move another load optimization from instcombine -> libanalysis.
...
llvm-svn: 84841
2009-10-22 06:44:07 +00:00
Chris Lattner
3fb4c19b7d
move 'loading i32 from string' optimization from instcombine
...
to libanalysis. Instcombine shrinking... does this even
make sense???
llvm-svn: 84840
2009-10-22 06:38:35 +00:00
Chris Lattner
2c8c8533b1
Move some constant folding logic for loads out of instcombine into
...
Analysis/ConstantFolding.cpp. This doesn't change the behavior of
instcombine but makes other clients of ConstantFoldInstruction
able to handle loads. This was partially extracted from Eli's patch
in PR3152.
llvm-svn: 84836
2009-10-22 06:25:11 +00:00
Dan Gohman
bc58eb97fe
Fix another place that calls Loop::contains a lot to construct a sorted
...
container of the blocks and do efficient lookups. This makes
isLoopSimplifyForm much faster on large loops, fixing a significant
compile-time issue in builds with assertions enabled.
llvm-svn: 84673
2009-10-20 20:41:13 +00:00
Chris Lattner
5b8e288c5f
fix the other issue with ID's, hopefully really fixing the linux build.
...
llvm-svn: 84403
2009-10-18 04:58:34 +00:00
Chris Lattner
a1aaf47423
fix some problems with ID definitions, which will hopefully fix the build bots.
...
llvm-svn: 84399
2009-10-18 04:27:14 +00:00