- Feb 28, 2014
-
-
Tobias Grosser authored
A 'remark' is information that is not an error or a warning, but rather some additional information provided to the user. In contrast to a 'note' a 'remark' is an independent diagnostic, whereas a 'note' always depends on another diagnostic. A typical use case for remark nodes is information provided to the user, e.g. information provided by the vectorizer about loops that have been vectorized. llvm-svn: 202474
-
Alexey Samsonov authored
llvm-svn: 202473
-
Alexey Samsonov authored
llvm-svn: 202472
-
Argyrios Kyrtzidis authored
this is inherently unsafe. Instead get the diagnostic info into a SourceManager-independent form. llvm-svn: 202471
-
Dmitry Vyukov authored
llvm-svn: 202470
-
Hal Finkel authored
The PPC isel instruction can fold 0 into the first operand (thus eliminating the need to materialize a zero-containing register when the 'true' result of the isel is 0). When the isel is fed by a bit register operation that we can invert, do so as part of the bit-register-operation peephole routine. llvm-svn: 202469
-
Bob Wilson authored
llvm-svn: 202468
-
Nick Lewycky authored
llvm-svn: 202467
-
Rui Ueyama authored
The current COFF unwind printer tries to print SEH handler function names, assuming that it can always find function names in string table. It crashes if file being read has no symbol table (i.e. executable). With this patch, llvm-objdump prints SEH handler's RVA if there's no symbol table entry for that RVA. llvm-svn: 202466
-
Rui Ueyama authored
llvm-svn: 202465
-
Jim Ingham authored
Plumb the EvaluateExpressionOptions::{Set,Get}StopOthers through the SB API, and make it work in RunThreadPlan. Also remove SetStopOthers from the ThreadPlanCallFunction, because if the value you have doesn't match what is in the EvaluateExpressionOptions the plan was passed when created it won't work correctly. llvm-svn: 202464
-
Rafael Espindola authored
A really simple patch marks the end of a lot of yak shaving :-) llvm-svn: 202463
-
Rafael Espindola authored
Patch by Brad Smith. llvm-svn: 202462
-
Richard Smith authored
Add a -Wclass-varargs to warn on objects of any class type being passed through an ellipsis. Since C++11 relaxed the rules on this, we allow a lot more bad code through silently, such as: const char *format = "%s"; std::experimental::string_view view = "foo"; printf(format, view); In this case, not only warn about a class type being used here, but also suggest that calling c_str() might be a good idea. llvm-svn: 202461
-
Rui Ueyama authored
llvm-svn: 202460
-
Hal Finkel authored
The CR bit tracking code broke PPC/Darwin; trying to get it working again... (the darwin11 builder, which defaults to the darwin ABI when running PPC tests, asserted when running test/CodeGen/PowerPC/inverted-bool-compares.ll) llvm-svn: 202459
-
Reid Kleckner authored
llvm-svn: 202458
-
Reid Kleckner authored
It makes our -fdump-record-layouts a little more sane. llvm-svn: 202457
-
Todd Fiala authored
This is related to: http://llvm.org/bugs/show_bug.cgi?id=15258 I ran this test 10 times successfully against Ubuntu 12.04 LTS x86_64 with lldb built with gcc 4.8.2 and July 2013 libedit. llvm-svn: 202456
-
Hal Finkel authored
Cannot use negative numbers in case statements without running afoul of -Wc++11-narrowing. llvm-svn: 202455
-
NAKAMURA Takumi authored
llvm-svn: 202454
-
Hal Finkel authored
The backend currently enables CR-bit tracking by default at -O2 and higher. These flags allow the user to override that default. llvm-svn: 202453
-
Alexander Kornienko authored
Summary: Added a naive NOLINT implementation. It doesn't care about specific linter categories, just the "// NOLINT" on the same line as a diagnostic. Reviewers: klimek Reviewed By: klimek CC: cfe-commits Differential Revision: http://llvm-reviews.chandlerc.com/D2896 llvm-svn: 202452
-
Hal Finkel authored
This change enables tracking i1 values in the PowerPC backend using the condition register bits. These bits can be treated on PowerPC as separate registers; individual bit operations (and, or, xor, etc.) are supported. Tracking booleans in CR bits has several advantages: - Reduction in register pressure (because we no longer need GPRs to store boolean values). - Logical operations on booleans can be handled more efficiently; we used to have to move all results from comparisons into GPRs, perform promoted logical operations in GPRs, and then move the result back into condition register bits to be used by conditional branches. This can be very inefficient, because the throughput of these CR <-> GPR moves have high latency and low throughput (especially when other associated instructions are accounted for). - On the POWER7 and similar cores, we can increase total throughput by using the CR bits. CR bit operations have a dedicated functional unit. Most of this is more-or-less mechanical: Adjustments were needed in the calling-convention code, support was added for spilling/restoring individual condition-register bits, and conditional branch instruction definitions taking specific CR bits were added (plus patterns and code for generating bit-level operations). This is enabled by default when running at -O2 and higher. For -O0 and -O1, where the ability to debug is more important, this feature is disabled by default. Individual CR bits do not have assigned DWARF register numbers, and storing values in CR bits makes them invisible to the debugger. It is critical, however, that we don't move i1 values that have been promoted to larger values (such as those passed as function arguments) into bit registers only to quickly turn around and move the values back into GPRs (such as happens when values are returned by functions). A pair of target-specific DAG combines are added to remove the trunc/extends in: trunc(binary-ops(binary-ops(zext(x), zext(y)), ...) and: zext(binary-ops(binary-ops(trunc(x), trunc(y)), ...) In short, we only want to use CR bits where some of the i1 values come from comparisons or are used by conditional branches or selects. To put it another way, if we can do the entire i1 computation in GPRs, then we probably should (on the POWER7, the GPR-operation throughput is higher, and for all cores, the CR <-> GPR moves are expensive). POWER7 test-suite performance results (from 10 runs in each configuration): SingleSource/Benchmarks/Misc/mandel-2: 35% speedup MultiSource/Benchmarks/Prolangs-C++/city/city: 21% speedup MultiSource/Benchmarks/MiBench/automotive-susan: 23% speedup SingleSource/Benchmarks/CoyoteBench/huffbench: 13% speedup SingleSource/Benchmarks/Misc-C++/Large/sphereflake: 13% speedup SingleSource/Benchmarks/Misc-C++/mandel-text: 10% speedup SingleSource/Benchmarks/Misc-C++-EH/spirit: 10% slowdown MultiSource/Applications/lemon/lemon: 8% slowdown llvm-svn: 202451
-
Hal Finkel authored
Unfortunately, it is currently impossible to use a PatFrag as part of an output pattern (the part of the pattern that has instructions in it) in TableGen. Looking at the current implementation, this was clearly intended to work (there is already code in place to expand patterns in the output DAG), but is currently broken by the baked-in type-checking assumption and the order in which the pattern fragments are processed (output pattern fragments need to be processed after the instruction definitions are processed). Fixing this is fairly simple, but requires some way of differentiating output patterns from the existing input patterns. The simplest way to handle this seems to be to create a subclass of PatFrag, and so that's what I've done here. As a simple example, this allows us to write: def crnot : OutPatFrag<(ops node:$in), (CRNOR $in, $in)>; def : Pat<(not i1:$in), (crnot $in)>; which captures the core use case: handling of repeated subexpressions inside of complicated output patterns. This will be used by an upcoming commit to the PowerPC backend. llvm-svn: 202450
-
Hal Finkel authored
This extract-and-trunc vector optimization cannot work for i1 values as currently implemented, and so I'm disabling this for now for i1 values. In the future, this can be fixed properly. Soon I'll commit support for i1 CR bit tracking in the PowerPC backend, and this will be covered by one of the existing regression tests. llvm-svn: 202449
-
Todd Fiala authored
This is related to: http://llvm.org/bugs/show_bug.cgi?id=15278 I ran this 20 times in a row without failure at svn r202440 on Ubuntu 12.04 LTS x86_64 using July 2013 libedit and gcc 4.8.2. llvm-svn: 202448
-
Greg Clayton authored
llvm-svn: 202447
-
Todd Fiala authored
I could not get http://llvm.org/bugs/show_bug.cgi?id=16016) to fail on my end running 10 times in a row. Re-enabling the test. llvm-svn: 202446
-
Rui Ueyama authored
llvm-svn: 202445
-
Richard Trieu authored
llvm-svn: 202444
-
Ben Langmuir authored
Revert r202442, which broke the buildbots. llvm-svn: 202443
-
Ben Langmuir authored
Pass through the externally-visible names that we got from the VFS down to FileManager, and test that this is the name showing up in __FILE__, diagnostics, and debug information. llvm-svn: 202442
-
- Feb 27, 2014
-
-
Reid Kleckner authored
llvm-svn: 202441
-
Sylvestre Ledru authored
llvm-svn: 202440
-
Ben Langmuir authored
Keep the copy constructor around, and add a FIXME that we should really remove it as soon as we have C++11 std::map's emplace function. llvm-svn: 202439
-
Rui Ueyama authored
This is the data structure listed on Microsoft PE/COFF Spec Revision 8.3, p. 80. The name of the struct is not mentioned in the Microsoft PE/COFF spec, so I made it up. llvm-svn: 202438
-
rdar://problem/16135814Bob Wilson authored
In r201528, I changed the PGO instrumentation counter for a "do" loop to not include the fall-through count. That fall-through count is included later, b it means that this assertion may fail for "do" loops. llvm-svn: 202437
-
Ted Kremenek authored
This is a heuristic. Many switch statements, although they look covered over an enum, may actually handle at runtime more values than in the enum. This is overly conservative, as there are some cases that clearly can be ruled as being clearly unreachable, e.g. 'switch (42) { case 1: ... }'. We can refine this later. llvm-svn: 202436
-
Ted Kremenek authored
llvm-svn: 202435
-