- Nov 18, 2010
-
-
Argyrios Kyrtzidis authored
-Move the stuff of Diagnostic related to creating/querying diagnostic IDs into a new DiagnosticIDs class. -DiagnosticIDs can be shared among multiple Diagnostics for multiple translation units. -The rest of the state in Diagnostic object is considered related and tied to one translation unit. -Have Diagnostic point to the SourceManager that is related with. Diagnostic can now accept just a SourceLocation instead of a FullSourceLoc. -Reflect the changes to various interfaces. llvm-svn: 119730
-
Argyrios Kyrtzidis authored
llvm-svn: 119729
-
Duncan Sands authored
if the extension types were not the same. The result was that if you fed a select with sext and zext loads, as in the testcase, then it would get turned into a zext (or sext) of the select, which is wrong in the cases when it should have been an sext (resp. zext). Reported and diagnosed by Sebastien Deldon. llvm-svn: 119728
-
Duncan Sands authored
preserves LCSSA form out of ScalarEvolution and into the LoopInfo class. Use it to check that SimplifyInstruction simplifications are not breaking LCSSA form. Fixes PR8622. llvm-svn: 119727
-
Bill Wendling authored
llvm-svn: 119726
-
Eric Christopher authored
Remove movePastCSLoadStoreOps and associated code for simple pointer increments. Update routines that depended upon other opcodes for save/restore. Adjust all testcases accordingly. llvm-svn: 119725
-
John McCall authored
out because there are still bugs left. llvm-svn: 119722
-
Owen Anderson authored
LLVMContext, causing memory errors. Patch by Peter Collingbourne. llvm-svn: 119721
-
Greg Clayton authored
by being able to get the data count and data. Each thread stop reason has one or more data words that can help describe the stop. To do this I added: size_t SBThread::GetStopReasonDataCount(); uint64_t SBThread::GetStopReasonDataAtIndex(uint32_t idx); llvm-svn: 119720
-
Argyrios Kyrtzidis authored
llvm-svn: 119719
-
Owen Anderson authored
Use thread-safe statics to avoid a static constructor here. This isn't thread-safe on MSVC, but we don't support threaded LLVM there anyways. llvm-svn: 119718
-
Dan Gohman authored
llvm-svn: 119717
-
Dan Gohman authored
llvm-svn: 119716
-
Owen Anderson authored
Completely rework the datastructure GVN uses to represent the value number to leader mapping. Previously, this was a tree of hashtables, and a query recursed into the table for the immediate dominator ad infinitum if the initial lookup failed. This led to really bad performance on tall, narrow CFGs. We can instead replace it with what is conceptually a multimap of value numbers to leaders (actually represented by a hashtable with a list of Value*'s as the value type), and then determine which leader from that set to use very cheaply thanks to the DFS numberings maintained by DominatorTree. Because there are typically few duplicates of a given value, this scan tends to be quite fast. Additionally, we use a custom linked list and BumpPtr allocation to avoid any unnecessary allocation in representing the value-side of the multimap. This change brings with it a 15% (!) improvement in the total running time of GVN on 403.gcc, which I think is pretty good considering that includes all the "real work" being done by MemDep as well. The one downside to this approach is that we can no longer use GVN to perform simple conditional progation, but that seems like an acceptable loss since we now have LVI and CorrelatedValuePropagation to pick up the slack. If you see conditional propagation that's not happening, please file bugs against LVI or CVP. llvm-svn: 119714
-
Jim Grosbach authored
instruction. Any that may be expanded otherwise by MC lowering should override this value. rdar://8683274 llvm-svn: 119713
-
Dan Gohman authored
llvm-svn: 119712
-
Dan Gohman authored
llvm-svn: 119711
-
Howard Hinnant authored
llvm-svn: 119710
-
Greg Clayton authored
llvm-svn: 119709
-
Dan Gohman authored
llvm-svn: 119708
-
Dan Gohman authored
simple form of INITIALIZE_PASS. llvm-svn: 119707
-
Dan Gohman authored
llvm-svn: 119706
-
Dan Gohman authored
llvm-svn: 119705
-
Dan Gohman authored
enabling more PRE. PR8586. llvm-svn: 119704
-
Howard Hinnant authored
llvm-svn: 119703
-
Howard Hinnant authored
llvm-svn: 119699
-
Benjamin Kramer authored
llvm-svn: 119698
-
Craig Silverstein authored
http://llvm.org/bugs/show_bug.cgi?id=8558). This patch fixes it. Thanks to rjmccall for all the coaching! Approved by rjmccall llvm-svn: 119697
-
Chris Lattner authored
saying "it would be bad", give an example of what is going on. llvm-svn: 119695
-
Chris Lattner authored
refusing to optimize two memcpy's like this: copy A <- B copy C <- A if it couldn't prove that noalias(B,C). We can eliminate the copy by producing a memmove instead of memcpy. llvm-svn: 119694
-
Chris Lattner authored
llvm-svn: 119693
-
Chris Lattner authored
source and dest are known to not overlap. llvm-svn: 119692
-
Chris Lattner authored
there is no need to check to see if the source and dest of a memcpy are noalias, behavior is undefined if not. llvm-svn: 119691
-
Chris Lattner authored
llvm-svn: 119690
-
Chris Lattner authored
out of processMemCpy into its own function. llvm-svn: 119687
-
Chris Lattner authored
if it is passed as a byval argument. The byval argument will just be a read, so it is safe to read from the original global instead. This allows us to promote away the %agg.tmp alloca in PR8582 llvm-svn: 119686
-
John McCall authored
store it on the expression node. Also store an "object kind", which distinguishes ordinary "addressed" l-values (like variable references and pointer dereferences) and bitfield, @property, and vector-component l-values. Currently we're not using these for much, but I aim to switch pretty much everything calculating l-valueness over to them. For now they shouldn't necessarily be trusted. llvm-svn: 119685
-
Marcin Swiderski authored
Added method for handling CXXOperatorCallExpr differently from CallExpr if CXXOperatorCallExpr represents method call. Also fixed returning ExpolodedNodeSet from VisitCXXMethodCallExpr. llvm-svn: 119684
-
Chris Lattner authored
to ignore calls that obviously can't modify the alloca because they are readonly/readnone. llvm-svn: 119683
-
Chris Lattner authored
optimization. If the alloca that is "memcpy'd from constant" also has a memcpy from *it*, ignore it: it is a load. We now optimize the testcase to: define void @test2() { %B = alloca %T %a = bitcast %T* @G to i8* %b = bitcast %T* %B to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %b, i8* %a, i64 124, i32 4, i1 false) call void @bar(i8* %b) ret void } previously we would generate: define void @test() { %B = alloca %T %b = bitcast %T* %B to i8* %G.0 = getelementptr inbounds %T* @G, i32 0, i32 0 %tmp3 = load i8* %G.0, align 4 %G.1 = getelementptr inbounds %T* @G, i32 0, i32 1 %G.15 = bitcast [123 x i8]* %G.1 to i8* %1 = bitcast [123 x i8]* %G.1 to i984* %srcval = load i984* %1, align 1 %B.0 = getelementptr inbounds %T* %B, i32 0, i32 0 store i8 %tmp3, i8* %B.0, align 4 %B.1 = getelementptr inbounds %T* %B, i32 0, i32 1 %B.12 = bitcast [123 x i8]* %B.1 to i8* %2 = bitcast [123 x i8]* %B.1 to i984* store i984 %srcval, i984* %2, align 1 call void @bar(i8* %b) ret void } llvm-svn: 119682
-