- Feb 01, 2012
-
-
Stepan Dyatkovskiy authored
The purpose of refactoring is to hide operand roles from SwitchInst user (programmer). If you want to play with operands directly, probably you will need lower level methods than SwitchInst ones (TerminatorInst or may be User). After this patch we can reorganize SwitchInst operands and successors as we want. What was done: 1. Changed semantics of index inside the getCaseValue method: getCaseValue(0) means "get first case", not a condition. Use getCondition() if you want to resolve the condition. I propose don't mix SwitchInst case indexing with low level indexing (TI successors indexing, User's operands indexing), since it may be dangerous. 2. By the same reason findCaseValue(ConstantInt*) returns actual number of case value. 0 means first case, not default. If there is no case with given value, ErrorIndex will returned. 3. Added getCaseSuccessor method. I propose to avoid usage of TerminatorInst::getSuccessor if you want to resolve case successor BB. Use getCaseSuccessor instead, since internal SwitchInst organization of operands/successors is hidden and may be changed in any moment. 4. Added resolveSuccessorIndex and resolveCaseIndex. The main purpose of these methods is to see how case successors are really mapped in TerminatorInst. 4.1 "resolveSuccessorIndex" was created if you need to level down from SwitchInst to TerminatorInst. It returns TerminatorInst's successor index for given case successor. 4.2 "resolveCaseIndex" converts low level successors index to case index that curresponds to the given successor. Note: There are also related compatability fix patches for dragonegg, klee, llvm-gcc-4.0, llvm-gcc-4.2, safecode, clang. llvm-svn: 149481
-
NAKAMURA Takumi authored
llvm-svn: 149475
-
Hal Finkel authored
llvm-svn: 149472
-
Argyrios Kyrtzidis authored
These are: r149348 r149351 r149352 r149354 r149356 r149357 r149361 r149362 r149364 r149365 llvm-svn: 149470
-
Hal Finkel authored
This is the initial checkin of the basic-block autovectorization pass along with some supporting vectorization infrastructure. Special thanks to everyone who helped review this code over the last several months (especially Tobias Grosser). llvm-svn: 149468
-
Jim Grosbach authored
Changing arguments from being passed as fixed to varargs is unsafe, as the ABI may require they be handled differently (stack vs. register, for example). Remove two tests which rely on the bitcast being folded into the direct call, which is exactly the transformation that's unsafe. llvm-svn: 149457
-
Lenny Maiorani authored
Make the EarlyCSE optimizer not use recursion to do a depth first iteration. llvm-svn: 149445
-
- Jan 31, 2012
-
-
Bill Wendling authored
vector. This potentially saves a resizing. llvm-svn: 149369
-
Bill Wendling authored
llvm-svn: 149368
-
Chris Lattner authored
ConstantDataArray::getString instead. llvm-svn: 149365
-
Chris Lattner authored
eliminate the last uses of GetConstantStringInfo from this file, I didn't realize I was that close... llvm-svn: 149354
-
Chris Lattner authored
dramatically more efficient than GetConstantStringInfo. llvm-svn: 149352
-
Chris Lattner authored
llvm-svn: 149340
-
Bill Wendling authored
llvm-svn: 149328
-
Bill Wendling authored
llvm-svn: 149323
-
Bill Wendling authored
llvm-svn: 149322
-
Bill Wendling authored
llvm-svn: 149318
-
Bill Wendling authored
llvm-svn: 149317
-
Bill Wendling authored
llvm-svn: 149316
-
Bill Wendling authored
The eh.selector and eh.resume intrinsics aren't used anymore. Get rid of some calls to them. llvm-svn: 149314
-
Bill Wendling authored
llvm-svn: 149312
-
Bill Wendling authored
llvm-svn: 149307
-
Kostya Serebryany authored
llvm-svn: 149300
-
- Jan 30, 2012
-
-
Chad Rosier authored
llvm-svn: 149289
-
Chad Rosier authored
llvm-svn: 149275
-
Alexander Potapenko authored
Fix compilation of ASan tests on OS X Lion (see http://code.google.com/p/address-sanitizer/issues/detail?id=32) The redzones emitted by AddressSanitizer for CFString instances confuse the linker and are of little use, so we shouldn't add them. llvm-svn: 149243
-
- Jan 29, 2012
-
-
Nick Lewycky authored
llvm-svn: 149185
-
- Jan 28, 2012
-
-
Kostya Serebryany authored
llvm-svn: 149172
-
- Jan 27, 2012
-
-
Chris Lattner authored
we should (theoretically optimize and codegen ConstantDataVector as well as ConstantVector. llvm-svn: 149116
-
- Jan 26, 2012
-
-
Chris Lattner authored
new methods recently added to (sometimes greatly!) simplify code. llvm-svn: 149024
-
Chris Lattner authored
llvm-svn: 149006
-
- Jan 25, 2012
-
-
Nick Lewycky authored
llvm-svn: 148946
-
Chris Lattner authored
llvm-svn: 148934
-
Chris Lattner authored
llvm-svn: 148929
-
- Jan 24, 2012
-
-
Kostya Serebryany authored
llvm-svn: 148846
-
Chris Lattner authored
llvm-svn: 148806
-
- Jan 23, 2012
-
-
Alexander Potapenko authored
llvm-svn: 148697
-
- Jan 20, 2012
-
-
David Blaikie authored
llvm-svn: 148578
-
Andrew Trick authored
Fixes PR11783: bad cast to AddRecExpr. llvm-svn: 148572
-
Kostya Serebryany authored
Problem: LLVM needs more function attributes than currently available (32 bits). One such proposed attribute is "address_safety", which shows that a function is being checked for address safety (by AddressSanitizer, SAFECode, etc). Solution: - extend the Attributes from 32 bits to 64-bits - wrap the object into a class so that unsigned is never erroneously used instead - change "unsigned" to "Attributes" throughout the code, including one place in clang. - the class has no "operator uint64 ()", but it has "uint64_t Raw() " to support packing/unpacking. - the class has "safe operator bool()" to support the common idiom: if (Attributes attr = getAttrs()) useAttrs(attr); - The CTOR from uint64_t is marked explicit, so I had to add a few explicit CTOR calls - Add the new attribute "address_safety". Doing it in the same commit to check that attributes beyond first 32 bits actually work. - Some of the functions from the Attribute namespace are worth moving inside the class, but I'd prefer to have it as a separate commit. Tested: "make check" on Linux (32-bit and 64-bit) and Mac (10.6) built/run spec CPU 2006 on Linux with clang -O2. This change will break clang build in lib/CodeGen/CGCall.cpp. The following patch will fix it. llvm-svn: 148553
-