- Apr 24, 2012
-
-
Lang Hames authored
<rdar://problem/11291436>. llvm-svn: 155468
-
Chandler Carruth authored
constants in C++11 mode. I have no idea why it required such particular circumstances to get here, the code seems clearly to rely upon unchecked assumptions. Specifically, when we decide to form an index into a struct type, we may have gone through (at least one) zero-length array indexing round, which would have left the offset un-adjusted, and thus not necessarily valid for use when indexing the struct type. This is just an canonicalization step, so the correct thing is to refuse to canonicalize nonsensical GEPs of this form. Implemented, and test case added. Fixes PR12642. Pair debugged and coded with Richard Smith. =] I credit him with most of the debugging, and preventing me from writing the wrong code. llvm-svn: 155466
-
Jim Grosbach authored
r154362 was supposed to delete this bit, but obviously didn't. rdar://11305594 llvm-svn: 155465
-
Stepan Dyatkovskiy authored
Related to PR1255. Let's begin. I'll commit classes that corresponds to our latest PR1255 discussion posts in llvm-commits. Strategy. 0. Implement new classes. Classes doesn't affect anything. They still work with ConstantInt base values at this stage. 1. Fictitious replacement of current ConstantInt case values with ConstantRangesSet. Case ranges set will still hold single value, and ConstantInt *getCaseValue() will return it. But additionally implement new method in SwitchInst that allows to work with case ranges. Currenly I think it should be some wrapper that returns either single value or ConstantRangesSet object. 2. Step-by-step replacement of old "ConstantInt* getCaseValue()" with new alternative. Modify algorithms for all passes that works with SwitchInst. But don't modify LLParser and BitcodeReader/Writer. Still hold single value in each ConstantRangesSet object. On this stage some parts of LLVM will use old-style methods, and some ones new-style. 3. After all getCaseValue() usages will removed and whole LLVM and its clients will work in new style - modify LLParser, Reader and Writer. Remove getCaseValue(). 4. Replace ConstantInt*-based case ranges set items with APInt ones. Currently we are on Zero Stage: New classes. ConstantRangesSet. I selected ConstantArrays as case ranges set "holder" object (it is a temporary decision, I'll explain why below). The array items are may be ConstantVectors with single item, and ConstantVectors with two items (that means single number and range respectively). The ConstantInt will used as basic value representation. It will replaced with APInt then. Of course ConstantArray and ConstantVector will go away after ConstantInt => APInt replacement. New class mandatory features: - bool isSatisfies(ConstantInt *V) method (need better name?). Returns true if the given value satisfies this case. - Case's ranges and values enumeration. In some passes we need to analize each case (SwitchLowering for example). Factory + unified clusterify. I also propose to implement the factory that allows to build case object with user friendly way. I called it CRSBuilder by now. Currenly I implemented the factory that allows add,remove pairs of range+successor. It also allows add existing ConstantRangesSet decompiling it to separated ranges. Factory can emit either clusters set (single case range + successor) or the set of "ConstantRangesSet + Successor" pairs. So you can use it either as builder for new cases set for SwitchInst, or for clusterification of existing cases set. Just call Factory.optimize() and it emits optimized and sorted clusters collection for you! I tested clusterification on SelectionDAGBuilder - it works fine. Don't worry it was not included in this patch. Just new classes. Factory is a template. There are two params: SuccessorClass and IsReadonly. So you can specify what successor you need (BB or MBB). And you can also restrict your factory to use values in read-only mode (SelectionDAGBuilder need IsReadonly=true). Read-only factory couldn't build the cases ranges. llvm-svn: 155464
-
Fariborz Jahanian authored
multiple declaration of block variables (with no initializer) on the same line. llvm-svn: 155462
-
Nadav Rotem authored
Remove the v2f64 patterns because it does not match any vbroadcast instruction. llvm-svn: 155461
-
Andrew Trick authored
llvm-svn: 155460
-
Andrew Trick authored
llvm-svn: 155459
-
Andrew Trick authored
llvm-svn: 155458
-
Andrew Trick authored
llvm-svn: 155457
-
Andrew Trick authored
The DAG builder is a convenient place to do it. Hopefully this is more efficient than a separate traversal over the same region. llvm-svn: 155456
-
Sean Callanan authored
doesn't return a result. If that expression can't be run in the current context (for example, if it uses a function and there is no running process) then we used to try to destroy the nonexistent result variable. We now only destroy the result variable if we actually made one. llvm-svn: 155455
-
Andrew Trick authored
MachineInstr sequence. This uses the new target interface for tracking register pressure using pressure sets to model overlapping register classes and subregisters. RegisterPressure results can be tracked incrementally or stored at region boundaries. Global register pressure can be deduced from local RegisterPressure results if desired. This is an early, somewhat untested implementation. I'm working on testing it within the context of a register pressure reducing MachineScheduler. llvm-svn: 155454
-
Kevin Enderby authored
instructions. llvm-svn: 155453
-
Howard Hinnant authored
llvm-svn: 155452
-
Fariborz Jahanian authored
llvm-svn: 155449
-
Tobias Grosser authored
Instead of -polly-run-import-jscop and -polly-run-export-jscop, we just use -polly-import and -polly-export. llvm-svn: 155446
-
Tobias Grosser authored
We now support -polly-optimizer=isl, -polly-optimizer=pocc and -polly-optimizer=none. The option -polly-no-optimizer is gone. llvm-svn: 155445
-
Kevin Enderby authored
instructions. llvm-svn: 155444
-
Gabor Greif authored
fix a typo add punctuation llvm-svn: 155443
-
Aaron Ballman authored
llvm-svn: 155441
-
Nadav Rotem authored
immediate. We can't use it here because the shuffle code does not check that the lower part of the word is identical to the upper part. llvm-svn: 155440
-
Richard Barton authored
llvm-svn: 155439
-
Tobias Grosser authored
llvm-svn: 155438
-
Nadav Rotem authored
using the pattern (vbroadcast (i32load src)). In some cases, after we generate this pattern new users are added to the load node, which prevent the selection of the blend pattern. This commit provides fallback patterns which perform in-vector broadcast (using in-vector vbroadcast in AVX2 and pshufd on AVX1). llvm-svn: 155437
-
Bill Wendling authored
a simulator. llvm-svn: 155436
-
Bill Wendling authored
Look for the 'Is Simulated' module flag. This indicates that the program is compiled to run on a simulator. llvm-svn: 155435
-
Bill Wendling authored
llvm-svn: 155434
-
Bill Wendling authored
llvm-svn: 155433
-
Bill Wendling authored
llvm-svn: 155432
-
Evgeniy Stepanov authored
llvm-svn: 155431
-
Kostya Serebryany authored
llvm-svn: 155430
-
Craig Topper authored
llvm-svn: 155429
-
Craig Topper authored
llvm-svn: 155428
-
Chandler Carruth authored
llvm-svn: 155427
-
Richard Smith authored
class; we would never actually parse it and attach it to the type. llvm-svn: 155426
-
Chandler Carruth authored
header, along with a stub test to make sure it compiles in the appropriate modes. Thanks to Aaron Ballman for working with me to figure out the initial strategy here, and to Nico for reviewing and pestering me to actually commit it. llvm-svn: 155425
-
Richard Smith authored
exception specification to a function. llvm-svn: 155424
-
Greg Clayton authored
llvm-svn: 155423
-
Jim Ingham authored
llvm-svn: 155422
-