summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* To avoid symbol clash, undefine PPC here. PPC may be predefined on some hosts.Sylvestre Ledru2013-03-173-0/+10
| | | | llvm-svn: 177234
* Build LLVMgold.so on FreeBSD using cmake.Rafael Espindola2013-03-171-1/+2
| | | | | | Patch by Stephen Checkoway. llvm-svn: 177233
* The promised test case for r175939.Michael Gottesman2013-03-171-0/+100
| | | | | | | | This test makes sure that the ObjCARC escape analysis looks at the uses of instructions which copy the block pointer value by checking all four cases where that can occur. llvm-svn: 177232
* Improve PPC VR (Altivec) register spillingHal Finkel2013-03-176-42/+73
| | | | | | | | | | | | | | | | This change cleans up two issues with Altivec register spilling: 1. The spilling code was inefficient (using two instructions, and add and a load, when just one would do) 2. The code assumed that r0 would always be available (true for now, but this will change) The new code handles VR spilling just like GPR spills but forced into r+r mode. As a result, when any VR spills are present, we must now always allocate the register-scavenger spill slot. llvm-svn: 177231
* Remove FIXMEs in PPC test cases related to unaligned loads/storesHal Finkel2013-03-162-8/+0
| | | | | | | As pointed out by Bill in response to r177160, these two FIXMEs can also be removed. llvm-svn: 177229
* Remove PPC avoidWriteAfterWrite callbackHal Finkel2013-03-162-16/+0
| | | | | | | | | As a follow-up to r158719, remove PPCRegisterInfo::avoidWriteAfterWrite. Jakob pointed out in response to r158719 that this callback is currently unused and so this has no effect (and the speedups that I thought that I had observed as a result of implementing this function must have been noise). llvm-svn: 177228
* Change the default latency for implicit defs.Andrew Trick2013-03-161-1/+4
| | | | | | | | | | | | | | | | Implicit defs are not currently positional and not modeled by the per-operand machine model. Unfortunately, we treat defs that are part of the architectural instruction description, like flags, the same as other implicit defs. Really, they should have a fixed MachineInstr layout and probably shouldn't be "implicit" at all. For now, we'll change the default latency to be the max operand latency. That will give flag setting operands full latency for x86 folded loads. Other kinds of "fake" implicit defs don't occur prior to regalloc anyway, and we would like them to go away postRegAlloc as well. llvm-svn: 177227
* Machine model. Allow mixed itinerary classes and SchedRW lists.Andrew Trick2013-03-163-205/+174
| | | | | | | | | | | | | We always supported a mixture of the old itinerary model and new per-operand model, but it required a level of indirection to map itinerary classes to SchedRW lists. This was done for ARM A9. Now we want to define x86 SchedRW lists, with the goal of removing its itinerary classes, but still support the itineraries in the mean time. When I original developed the model, Atom did not have itineraries, so there was no reason to expect this requirement. llvm-svn: 177226
* When built with cmake, only call the string functions when the previous ↵Sylvestre Ledru2013-03-161-3/+7
| | | | | | commands (utils/GetSourceVersion & utils/GetRepositoryPath successed). Otherwise, they fail when not launched from a repository llvm-svn: 177225
* [docs] Discuss a potential bug to be aware of.Sean Silva2013-03-161-0/+72
| | | | llvm-svn: 177224
* Test case for graceful handling of long file names on Windows. Patch thanks ↵Aaron Ballman2013-03-161-0/+12
| | | | | | to Paul Robinson! llvm-svn: 177223
* revert r177211 due to its potential issuesManman Ren2013-03-168-53/+16
| | | | llvm-svn: 177222
* Add X86 code emitter support AVX encoded MRMDestReg instructions.Craig Topper2013-03-164-32/+94
| | | | | | Previously we weren't skipping the VVVV encoded register. Based on patch by Michael Liao. llvm-svn: 177221
* [analyzer] Model trivial copy/move assignment operators with a bind as well.Jordan Rose2013-03-164-11/+141
| | | | | | | | | | | | r175234 allowed the analyzer to model trivial copy/move constructors as an aggregate bind. This commit extends that to trivial assignment operators as well. Like the last commit, one of the motivating factors here is not warning when the right-hand object is partially-initialized, which can have legitimate uses. <rdar://problem/13405162> llvm-svn: 177220
* C++ formatters for NSTimeZone and for CFBitVectorEnrico Granata2013-03-163-7/+190
| | | | llvm-svn: 177219
* Remove -Wspellcheck and replace it with a diagnostic option.Argyrios Kyrtzidis2013-03-168-8/+18
| | | | | | | Thanks to Richard S. for pointing out that the warning would show up with -Weverything. llvm-svn: 177218
* NS(Mutable)IndexSet formatter moves from Python to C++Enrico Granata2013-03-164-3/+85
| | | | llvm-svn: 177217
* [analyzer] Separate graph trimming from creating the single-path graph.Jordan Rose2013-03-161-58/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | | When we generate a path diagnostic for a bug report, we have to take the full ExplodedGraph and limit it down to a single path. We do this in two steps: "trimming", which limits the graph to all the paths that lead to this particular bug, and "creating the report graph", which finds the shortest path in the trimmed path to any error node. With BugReporterVisitor false positive suppression, this becomes more expensive: it's possible for some paths through the trimmed graph to be invalid (i.e. likely false positives) but others to be valid. Therefore we have to run the visitors over each path in the graph until we find one that is valid, or until we've ruled them all out. This can become quite expensive. This commit separates out graph trimming from creating the report graph, performing the first only once per bug equivalence class and the second once per bug report. It also cleans up that portion of the code by introducing some wrapper classes. This seems to recover most of the performance regression described in my last commit. <rdar://problem/13433687> llvm-svn: 177216
* [analyzer] Eliminate InterExplodedGraphMap class and NodeBackMap typedef.Jordan Rose2013-03-165-92/+50
| | | | | | | | | | | | | | | ...in favor of this typedef: typedef llvm::DenseMap<const ExplodedNode *, const ExplodedNode *> InterExplodedGraphMap; Use this everywhere the previous class and typedef were used. Took the opportunity to ArrayRef-ize ExplodedGraph::trim while I'm at it. No functionality change. llvm-svn: 177215
* [analyzer] Don't repeat a bug equivalence class if every report is invalid.Jordan Rose2013-03-161-3/+13
| | | | | | | | I removed this check in the recursion->iteration commit, but forgot that generatePathDiagnostic may be called multiple times if there are multiple PathDiagnosticConsumers. llvm-svn: 177214
* Converting more data formatters to C++ - NSBundle, CFBinaryHeap, NSMachPort ↵Enrico Granata2013-03-168-12/+185
| | | | | | and NSNotification llvm-svn: 177213
* This should be nothing but a load-time optimization. I'm trying to reduce ↵Howard Hinnant2013-03-161-1/+9
| | | | | | load time initializers and this is a big one. No visible functionality change intended. llvm-svn: 177212
* Exploit this-return of a callsite in a this-return function.Manman Ren2013-03-168-16/+53
| | | | | | | | | | | | | For constructors/desctructors that return 'this', if there exists a callsite that returns 'this' and is immediately before the return instruction, make sure we are using the return value from the callsite. We don't need to keep 'this' alive through the callsite. It also enables optimizations in the backend, such as tail call optimization. rdar://12818789 llvm-svn: 177211
* Define more SchedWrites for annotating X86 instructions.Jakob Stoklund Olesen2013-03-161-11/+57
| | | | | | | | | | | | | | Since almost all X86 instructions can fold loads, use a multiclass to define register/memory pairs of SchedWrites. An X86FoldableSchedWrite represents the register version of an instruction. It holds a reference to the SchedWrite to use when the instruction folds a load. This will be used inside multiclasses that define rr and rm instruction versions together. llvm-svn: 177210
* Improve template diffing handling of default integer values.Richard Trieu2013-03-154-24/+145
| | | | | | | | | | When the template argument is both default and value dependent, the expression retrieved for the default argument cannot be evaluated, thus never matching any argument value. To get the proper value, get the template argument from the desugared template specialization. Also, output the original expression to provide more information about the argument mismatch. llvm-svn: 177209
* <rdar://problem/13194155>Greg Clayton2013-03-152-27/+6
| | | | | | | | Variables view out of sync with lldb in Xcode is now fixed. Depending on what happened stack frames could get out of date and a stale shared pointer (one that is no longer a current frame in a thread) could end up being used. Now we don't store a weak_ptr to a frame in the ExecutionContextRef class, we just store its stack ID and we always regrab the frame from the thread by stack ID. llvm-svn: 177208
* [analyzer] Address a TODO in the StreamChecker; otherwise the output is ↵Anna Zaks2013-03-151-2/+1
| | | | | | non-deterministic. llvm-svn: 177207
* [analyzer] Use isLiveRegion to determine when SymbolRegionValue is dead.Anna Zaks2013-03-153-20/+39
| | | | | | | | | | Fixes a FIXME, improves dead symbol collection, suppresses a false positive, which resulted from reusing the same symbol twice for simulation of 2 calls to the same function. Fixing this lead to 2 possible false negatives in CString checker. Since the checker is still alpha and the solution will not require revert of this commit, move the tests to a FIXME section. llvm-svn: 177206
* [analyzer] BugReporterVisitors: handle the case where a ternary operator is ↵Anna Zaks2013-03-152-8/+22
| | | | | | wrapped in a cast. llvm-svn: 177205
* [analyzer] Address Jordan’s review of r177138 (a micro optimization)Anna Zaks2013-03-151-5/+8
| | | | llvm-svn: 177204
* Performance improvements to the IsObjCNil () - we only try to resolve the ↵Enrico Granata2013-03-152-3/+6
| | | | | | | | value if the variable under consideration truly is an “Objective-C thing” This also changes the ClangASTContext to make sure that id is correctly marked as being such an ObjC thing llvm-svn: 177203
* <rdar://problem/13100435>Han Ming Ong2013-03-151-4/+1
| | | | | | Don't discount regions that vmmap is not discounting. llvm-svn: 177202
* Fix buffer underrun (invalid read) triggered during diagnostic rendering. ↵Ted Kremenek2013-03-151-1/+1
| | | | | | | | | | | | | The test would overflow when computing '0 - 1'. I don't have a good testcase for this that does not depend on system headers. It did not trigger with preprocessed output, and I had trouble reducing the example. Fixes <rdar://problem/13324594>. Thanks to Michael Greiner for reporting this issue. llvm-svn: 177201
* Convert the -a option in "image lookup" to a address-expression, and pass ↵Jim Ingham2013-03-151-6/+8
| | | | | | | | the context in the -a address expression lookup in "image list" so that it actually works. llvm-svn: 177200
* Add SchedRW as an Instruction field.Jakob Stoklund Olesen2013-03-153-6/+14
| | | | | | | | | | | | | Don't require instructions to inherit Sched<...>. Sometimes it is more convenient to say: let SchedRW = ... in { ... } Which is now possible. llvm-svn: 177199
* Rework TestChangedValueAPI.py to account for gcc setting multiple breakpoints.Matt Kopec2013-03-152-3/+16
| | | | llvm-svn: 177198
* [modules] Don't record the macros from the predefines buffer.Argyrios Kyrtzidis2013-03-151-1/+24
| | | | | | | These will be available in the current translation unit anyway, for modules they only waste space and deserialization time. llvm-svn: 177197
* Make the conditional break test case a little more robust.Jim Ingham2013-03-153-19/+17
| | | | llvm-svn: 177196
* The regular expression command object was resetting the execution context of theJim Ingham2013-03-151-1/+3
| | | | | | | | | | | resolved command, which it should not do. It should adopt whatever context the regular expression command was called with. This was causing regular expression commands run inside breakpoint commands to adopt the currently selected context, not the one coming from the breakpoint that we hit. <rdar://problem/13411771> llvm-svn: 177195
* <rdar://problem/13426257> Introduce SDKSettings.plist as an input file ↵Douglas Gregor2013-03-152-16/+50
| | | | | | | | | | | | | | | dependency for PCH/modules. When we're building a precompiled header or module against an SDK on Darwin, there will be a file SDKSettings.plist in the sysroot. Since stat()'ing every system header on which a module or PCH file depends is performance suicide, we instead stat() just SDKSettings.plist. This hack works well on Darwin; it's unclear how we want to handle this on other platforms. If there is a canonical file, we should use it; if not, we either have to take the performance hit of stat()'ing system headers repeatedly or roll the dice by not checking anything. llvm-svn: 177194
* Simplify print logic, per feedback from Jordan Rose.Ted Kremenek2013-03-151-1/+1
| | | | llvm-svn: 177193
* Fix Makefile.rules where no icc is installed and -C gcc is used.Matt Kopec2013-03-151-2/+2
| | | | | | Patch by Ashok Thirumurthi. llvm-svn: 177192
* Enhance -Wtautological-constant-out-of-range-compare to include the name of ↵Ted Kremenek2013-03-154-20/+33
| | | | | | | | the enum constant. This is QoI. Fixes <rdar://problem/13076064>. llvm-svn: 177190
* [analyzer] Make GRBugReporter::generatePathDiagnostic iterative, not recursive.Jordan Rose2013-03-151-112/+103
| | | | | | | | | | | | | | | | | | The previous generatePathDiagnostic() was intended to be tail-recursive, restarting and trying again if a report was marked invalid. However: (1) this leaked all the cloned visitors, which weren't being deleted, and (2) this wasn't actually tail-recursive because some local variables had non-trivial destructors. This was causing us to overflow the stack on inputs with large numbers of reports in the same equivalence class, such as sqlite3.c. Being iterative at least prevents us from blowing out the stack, but doesn't solve the performance issue: suppressing thousands (yes, thousands) of paths in the same equivalence class is expensive. I'm looking into that now. <rdar://problem/13423498> llvm-svn: 177189
* [analyzer] Collect stats on the max # of bug reports in an equivalence class.Jordan Rose2013-03-151-0/+15
| | | | | | | | | | | | | | We discovered that sqlite3.c currently has 2600 reports in a single equivalence class; it would be good to know if this is a recent development or what. (For the curious, the different reports in an equivalence class represent the same bug found along different paths. When we're suppressing false positives, we need to go through /every/ path to make sure there isn't a valid path to a bug. This is a flaw in our after-the-fact suppression, made worse by the fact that that function isn't particularly optimized.) llvm-svn: 177188
* [analyzer] Include opcode in dumping a SymSymExpr.Jordan Rose2013-03-151-34/+15
| | | | | | For debugging use only; no functionality change. llvm-svn: 177187
* [analyzer] Look through ExprWhenCleanups when trying to track a NULL.Jordan Rose2013-03-152-6/+43
| | | | | | Silences a few false positives in LLVM. llvm-svn: 177186
* Add some assertions to appease the static analyzer.Jordan Rose2013-03-152-2/+2
| | | | | | No functionality change. llvm-svn: 177185
* Remove unnecessary default in covered switch over enumDavid Blaikie2013-03-151-1/+0
| | | | | | This cleans up the Clang -Werror build that was broken by r177180. llvm-svn: 177184
* [AST] Add a fast path to ConstantArrayType::getNumAddressingBits().Daniel Dunbar2013-03-151-3/+22
| | | | | | | | | | - This fast path is almost 100% effective on real code, and lets us avoid multiple allocations of 128-bit APSInt objects in the common case. - As with any overflow-check-skipping-code, I'd appreciate someone double checking my logic. llvm-svn: 177183
OpenPOWER on IntegriCloud