- Mar 01, 2014
-
-
Manman Ren authored
Inside iterate, we scan backwards then scan forwards in a loop. When iteration is not zero, the last node was just updated so we can skip it. But when iteration is zero, we can't skip the last node. For the testing case, fixing this will save a spill and move register copies from hot path to cold path. llvm-svn: 202557
-
- Feb 28, 2014
-
-
Reid Kleckner authored
Patch by Jevin Sweval! llvm-svn: 202556
-
Reid Kleckner authored
llvm-svn: 202555
-
Lang Hames authored
Reverting until the C++11 switch is complete. llvm-svn: 202554
-
Anton Yartsev authored
Additional conditions that prevent useful nodes before call from being reclaimed. llvm-svn: 202553
-
Sean Callanan authored
read during materialization. First of all, report if we can't read the data for some reason. Second, consult the ValueObject's error and report that if there's some problem. <rdar://problem/16074201> llvm-svn: 202552
-
Lang Hames authored
The previous PBQP solver was very robust but consumed a lot of memory, performed a lot of redundant computation, and contained some unnecessarily tight coupling that prevented experimentation with novel solution techniques. This new solver is an attempt to address these shortcomings. Important/interesting changes: 1) The domain-independent PBQP solver class, HeuristicSolverImpl, is gone. It is replaced by a register allocation specific solver, PBQP::RegAlloc::Solver (see RegAllocSolver.h). The optimal reduction rules and the backpropagation algorithm have been extracted into stand-alone functions (see ReductionRules.h), which can be used to build domain specific PBQP solvers. This provides many more opportunities for domain-specific knowledge to inform the PBQP solvers' decisions. In theory this should allow us to generate better solutions. In practice, we can at least test out ideas now. As a side benefit, I believe the new solver is more readable than the old one. 2) The solver type is now a template parameter of the PBQP graph. This allows the graph to notify the solver of any modifications made (e.g. by domain independent rules) without the overhead of a virtual call. It also allows the solver to supply policy information to the graph (see below). 3) Significantly reduced memory overhead. Memory management policy is now an explicit property of the PBQP graph (via the CostAllocator typedef on the graph's solver template argument). Because PBQP graphs for register allocation tend to contain many redundant instances of single values (E.g. the value representing an interference constraint between GPRs), the new RASolver class uses a uniquing scheme. This massively reduces memory consumption for large register allocation problems. For example, looking at the largest interference graph in each of the SPEC2006 benchmarks (the largest graph will always set the memory consumption high-water mark for PBQP), the average memory reduction for the PBQP costs was 400x. That's times, not percent. The highest was 1400x. Yikes. So - this is fixed. "PBQP: No longer feasting upon every last byte of your RAM". Minor details: - Fully C++11'd. Never copy-construct another vector/matrix! - Cute tricks with cost metadata: Metadata that is derived solely from cost matrices/vectors is attached directly to the cost instances themselves. That way if you unique the costs you never have to recompute the metadata. 400x less memory means 400x less cost metadata (re)computation. Special thanks to Arnaud de Grandmaison, who has been the source of much encouragement, and of many very useful test cases. This new solver forms the basis for future work, of which there's plenty to do. I will be adding TODO notes shortly. - Lang. llvm-svn: 202551
-
Rui Ueyama authored
It looks like the contents of the table need to be sorted according to its value, so that the runtime can find the entry by binary search. I'm not 100% sure if we really have to do that, but at least I can say it's safe to do because the contents of .sxdata is just a list of exception handlers' RVAs. llvm-svn: 202550
-
Ed Maste authored
This seems a little more straightforward and is equivalent to r201457 for ELF core files. A case for FreeBSD i386 is also added (it was incorrectly using the 64-bit register context and corrupting mememory). Better (user-facing) error handling is still needed. Review: http://llvm-reviews.chandlerc.com/D2765 llvm-svn: 202549
-
Chandler Carruth authored
bots when using the standard library facilities. The missing pieces here aren't always in useful discreet chunks. Fortunately, the missing pieces are few and far between, and we can emulate most of them in our headers as needed. Based on feedback from Lang and Dave. llvm-svn: 202548
-
Todd Fiala authored
This change adds a missing include path to the ObjC LanguageRuntime path to the MacOSX SystemRuntime plugin's Makefile. It also adds the panel and curses library to the liblldb shared library linkage step. Changes by Jevin Sweval with a minor tweak. llvm-svn: 202547
-
Chandler Carruth authored
systems have the default as C++11, but retain the ability to build with C++98. Again, please restrain your enthusiasm a bit in case this needs to be reverted. =] llvm-svn: 202546
-
Eric Christopher authored
llvm-svn: 202545
-
Tom Stellard authored
Make a call to R600's implementation of verifyInstruction() to check that instructions are only using legal operands. llvm-svn: 202544
-
Tom Stellard authored
llvm-svn: 202543
-
Chandler Carruth authored
Now, please don't get too excited. I've just toggled the default to suss out the last remaining bot problems. This does *not* mean we can all go write lots of C++11 code yet. I at least want to let the dust settle from the bots first. llvm-svn: 202542
-
Eric Christopher authored
llvm-svn: 202541
-
Eric Christopher authored
during the finalization for CGDebugInfo in clang we would RAUW a type and it would result in a corrupted MDNode for an imported declaration. Testcase pending as reducing has been difficult. llvm-svn: 202540
-
Ben Langmuir authored
Was r202442 There were two issues with the original patch that have now been fixed. 1. We were memset'ing over a FileEntry in a test case. After adding a std::string to FileEntry, this still happened to not break for me. 2. I didn't pass the FileManager into the new compiler instance in compileModule. This was hidden in some cases by the fact I didn't clear the module cache in the test. Also, I changed the copy constructor for FileEntry, which was memcpy'ing in a (now) unsafe way. llvm-svn: 202539
-
Richard Smith authored
llvm-svn: 202538
-
Richard Smith authored
llvm-svn: 202537
-
Greg Clayton authored
Be sure to propagate the error back out SBTarget::Attach() when we fail to launch debugserver as root. <rdar://problem/15669788> llvm-svn: 202536
-
Greg Clayton authored
llvm-svn: 202535
-
Richard Smith authored
llvm-svn: 202534
-
Richard Smith authored
Fix a minor bug in lexing pp-numbers with digit separators: if a pp-number contains "'e+", the pp-number ends between the 'e' and the '+'. llvm-svn: 202533
-
Ben Langmuir authored
llvm-svn: 202532
-
Gabor Greif authored
llvm-svn: 202531
-
Justin Bogner authored
Tools that use the CommandLine library currently exit with an error when invoked with -version or -help. This is unusual and non-standard, so we'll fix them to exit successfully instead. I don't expect that anyone relies on the current behaviour, so this should be a fairly safe change. llvm-svn: 202530
-
Anders Carlsson authored
When completing Objective-C instance method invocations, perform a contextual conversion to an Objective-C pointer type of the target expression if needed. This fixes code completion of method invocations where the target is a smart pointer that has an explicit conversion operator to an Objective-C type. llvm-svn: 202529
-
Adam Nemet authored
llvm-svn: 202528
-
Rui Ueyama authored
llvm-svn: 202527
-
Zoran Jovanovic authored
llvm-svn: 202526
-
Greg Clayton authored
I carefully reviewed exactly how the IOHandlers interact and found places where we weren't properly controlling things. There should be no overlapping prompts and all output should now come out in a controlled fashion. <rdar://problem/16111293> llvm-svn: 202525
-
Rafael Espindola authored
We were only using it so find the shared library extension and nm. There are simpler ways to do those things :-) llvm-svn: 202524
-
Zoran Jovanovic authored
llvm-svn: 202523
-
Todd Fiala authored
llvm-svn: 202522
-
Zoran Jovanovic authored
llvm-svn: 202521
-
Kaelyn Uhrain authored
won't work (i.e. when not doing a member lookup and not in a method from the same class or a descendant class). llvm-svn: 202520
-
Aaron Ballman authored
llvm-svn: 202519
-
Zoran Jovanovic authored
llvm-svn: 202518
-