summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Add support for the inline asm constraint 'K'.Eric Christopher2012-05-073-0/+33
| | | | llvm-svn: 156282
* Add SSE4A MOVNTSS/MOVNTSD instructions.Craig Topper2012-05-073-0/+43
| | | | llvm-svn: 156281
* Support the 'J' constraint.Eric Christopher2012-05-073-0/+33
| | | | | | Patch by Jack Carter. llvm-svn: 156280
* Add support for the 'I' inline asm constraint. Also add testsEric Christopher2012-05-077-0/+147
| | | | | | | | from the previous 2 patches. Patch by Jack Carter. llvm-svn: 156279
* Allow 64 bit integer values in gpu registers if arch and abi are 64 bit.Eric Christopher2012-05-071-2/+4
| | | | | | Patch by Jack Carter. llvm-svn: 156278
* When using inline asm constraints representingEric Christopher2012-05-071-1/+1
| | | | | | | | | non-floating point general registers allow 8 and 16-bit elements. Patch by Jack Carter. llvm-svn: 156277
* Tidy up. Whitespace.Jim Grosbach2012-05-071-10/+10
| | | | llvm-svn: 156276
* Updating the test case based on previous patchAaron Ballman2012-05-071-1/+1
| | | | llvm-svn: 156275
* A union can have a constexpr defaulted default constructor, if it has anRichard Smith2012-05-079-14/+79
| | | | | | | | | in-class initializer for one of its fields. Value-initialization of such a type should use the in-class initializer! The former was just a bug, the latter is a (reported) standard defect. llvm-svn: 156274
* Remove variable made unused by r156270.David Blaikie2012-05-071-3/+0
| | | | llvm-svn: 156273
* Detecting illegal instantiations of abstract types when using a ↵Aaron Ballman2012-05-072-1/+17
| | | | | | function-style cast. Fixed PR12658. llvm-svn: 156271
* [analyzer] Reduce parallel code paths in SimpleSValBuilder::evalBinOpNN, and ↵Jordy Rose2012-05-062-165/+145
| | | | | | | | | | | | | | handle mixed-type operations more generally. The logical change is that the integers in SymIntExprs may not have the same type as the symbols they are paired with. This was already the case with taint-propagation expressions created by SValBuilder::makeSymExprValNN, but I think those integers may never have been used. SimpleSValBuilder should be able to handle mixed-integer-type SymIntExprs fine now, though, and the constraint managers were already being defensive (though not entirely correct). All existing tests pass. The logic in evalBinOpNN has been simplified so that conversion is done as late as possible. As a result, most of the switch cases have been reduced to do the minimal amount of work, delegating to another case when they can by substituting ConcreteInts and (as before) reversing the left and right arguments when useful. Comparisons require special handling in two places (building SymIntExprs and evaluating constant-constant operations) because we don't /know/ the best type for comparing the two values. I've approximated the rules in Sema [C99 6.3.1.8] but it'd be nice to refactor Sema's actual algorithm into ASTContext. This is also groundwork for handling mixed-type constraints better than we do now. llvm-svn: 156270
* Split mergeAvailabilityAttr out of handleAvailabilityAttr. This is importantRafael Espindola2012-05-064-40/+141
| | | | | | | | | | | | | | | | | | | | | | | | | | | for having a uniform logic for adding attributes to a decl. This in turn is needed to fix the FIXME: // FIXME: This needs to happen before we merge declarations. Then, // let attribute merging cope with attribute conflicts. ProcessDeclAttributes(S, NewFD, D, /*NonInheritable=*/false, /*Inheritable=*/true); The idea is that mergeAvailabilityAttr will become a method. Once attributes are processed before merging, it will be called from handleAvailabilityAttr to handle multiple attributes in one decl: void f(int) __attribute__((availability(ios,deprecated=3.0), availability(ios,introduced=2.0))); and from SemaDecl.cpp to handle multiple decls: void f(int) __attribute__((availability(ios,deprecated=3.0))); void f(int) __attribute__((availability(ios,introduced=2.0))); As a bonus, use the new structure to diagnose incompatible availability attributes added to different decls (see included testcases). llvm-svn: 156269
* Use MVT instead of EVT as the argument to all the shuffle decode functions. ↵Craig Topper2012-05-063-35/+33
| | | | | | Simplify some of the decode functions. llvm-svn: 156268
* Add VPERMQ/VPERMPD to the list of target specific shuffles that can be ↵Craig Topper2012-05-061-0/+6
| | | | | | looked through for DAG combine purposes. llvm-svn: 156266
* Add shuffle decode support for VPERMQ/VPERMPD.Craig Topper2012-05-063-0/+22
| | | | llvm-svn: 156265
* Fixed some strncat/strlcat uses.Filipe Cabecinhas2012-05-062-5/+5
| | | | llvm-svn: 156264
* TableGen: AsmMatcher diagnostic when missing instruction mnemonic.Jim Grosbach2012-05-061-0/+3
| | | | | | | Previously, if an instruction definition was missing the mnemonic, the next line would just assert(). Issue a real diagnostic instead. llvm-svn: 156263
* Put the availability warnings in a group.Rafael Espindola2012-05-063-8/+6
| | | | llvm-svn: 156261
* make SourceMgr tolerate empty SMLoc()'s better.Chris Lattner2012-05-061-45/+54
| | | | llvm-svn: 156260
* Simple typo fix (syntex to syntax). Fixes PR12735Aaron Ballman2012-05-061-2/+2
| | | | llvm-svn: 156259
* Switch the select to branch transformation on by default.Benjamin Kramer2012-05-063-5/+6
| | | | | | | | | The primitive conservative heuristic seems to give a slight overall improvement while not regressing stuff. Make it available to wider testing. If you notice any speed regressions (or significant code size regressions) let me know! llvm-svn: 156258
* Remove trailing spaces.Jakub Staszak2012-05-061-60/+60
| | | | llvm-svn: 156257
* WWW: Adapt the vectorize option change.Hongbin Zheng2012-05-063-6/+6
| | | | llvm-svn: 156256
* Regression tests: Adapt the vectorize option change.Hongbin Zheng2012-05-0615-18/+19
| | | | llvm-svn: 156255
* Allow polly ask bb-vectorizer to vectorize the loop body.Hongbin Zheng2012-05-066-20/+41
| | | | llvm-svn: 156254
* Revert r156142, "[libclang] Bring back ↵NAKAMURA Takumi2012-05-061-6/+0
| | | | | | | | BodyIndexer::TraverseCXXOperatorCallExpr which" It caused test/Index/index-many-call-ops.cpp to fail in stage2 c-index-test on selfhosting i686-cygwin and x86_64-linux since r156229 (Reverting making RecursiveASTVisitor data recursive). llvm-svn: 156253
* Unix/Process.inc: Give more useful random seed to srand. Workaround for PR12743.NAKAMURA Takumi2012-05-061-1/+14
| | | | llvm-svn: 156252
* Support/Process: Move llvm::sys::Process::GetRandomNumber() from Process.cpp ↵NAKAMURA Takumi2012-05-062-10/+9
| | | | | | | to Unix/Process.inc. FIXME: GetRandomNumber() is not implemented in Win32. llvm-svn: 156251
* A conversion operator in a base class shouldn't hide another conversion operatorRichard Smith2012-05-062-2/+15
| | | | | | in the same class, even if they convert to the same type. Fixes PR12712. llvm-svn: 156247
* reapply my patch, with a fix for an off-by-one error. Turned out to be a lotChris Lattner2012-05-052-13/+26
| | | | | | of work for a drive-by fix :) llvm-svn: 156246
* revert my patches, which are causing problems.Chris Lattner2012-05-052-26/+13
| | | | llvm-svn: 156245
* add missing header <shame>Chris Lattner2012-05-051-1/+8
| | | | llvm-svn: 156244
* refactor some code to expose column numbers more and make diagnostic ↵Chris Lattner2012-05-051-12/+18
| | | | | | printing slightly more efficient. llvm-svn: 156243
* Nuke a few dead remnants of the CBE.Jim Grosbach2012-05-055-56/+0
| | | | llvm-svn: 156241
* [Support] Add missing include.Daniel Dunbar2012-05-051-1/+2
| | | | llvm-svn: 156240
* [Support] Fix up comments.Daniel Dunbar2012-05-051-5/+3
| | | | llvm-svn: 156239
* [Support] Rewrite sys::fs::unique_file to not be stupid with /dev/urandom.Daniel Dunbar2012-05-051-19/+5
| | | | | | | | - Just use sys::Process::GetRandomNumber instead of having two poor implementations. - This is ~70 times (!) faster on my OS X machine. llvm-svn: 156238
* [Support] Add sys::Process::GetRandomNumber().Daniel Dunbar2012-05-052-1/+14
| | | | | | - Primitive API, but we rarely have need for random numbers. llvm-svn: 156237
* [build] Add build check for ::arc4random().Daniel Dunbar2012-05-055-2/+10
| | | | llvm-svn: 156236
* Update all outdated autoconf files in the sample project.Benjamin Kramer2012-05-056-456/+586
| | | | | | We might just use symlinks here, but I'm afraid of possible portability issues. llvm-svn: 156235
* CodeGenPrepare: Add a transform to turn selects into branches in some cases.Benjamin Kramer2012-05-052-0/+147
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This came up when a change in block placement formed a cmov and slowed down a hot loop by 50%: ucomisd (%rdi), %xmm0 cmovbel %edx, %esi cmov is a really bad choice in this context because it doesn't get branch prediction. If we emit it as a branch, an out-of-order CPU can do a better job (if the branch is predicted right) and avoid waiting for the slow load+compare instruction to finish. Of course it won't help if the branch is unpredictable, but those are really rare in practice. This patch uses a dumb conservative heuristic, it turns all cmovs that have one use and a direct memory operand into branches. cmovs usually save some code size, so we disable the transform in -Os mode. In-Order architectures are unlikely to benefit as well, those are included in the "predictableSelectIsExpensive" flag. It would be better to reuse branch probability info here, but BPI doesn't support select instructions currently. It would make sense to use the same heuristics as the if-converter pass, which does the opposite direction of this transform. Test suite shows a small improvement here and there on corei7-level machines, but the actual results depend a lot on the used microarchitecture. The transformation is currently disabled by default and available by passing the -enable-cgp-select2branch flag to the code generator. Thanks to Chandler for the initial test case to him and Evan Cheng for providing me with comments and test-suite numbers that were more stable than mine :) llvm-svn: 156234
* Add a new target hook "predictableSelectIsExpensive".Benjamin Kramer2012-05-054-0/+17
| | | | | | | | | | | This will be used to determine whether it's profitable to turn a select into a branch when the branch is likely to be predicted. Currently enabled for everything but Atom on X86 and Cortex-A9 devices on ARM. I'm not entirely happy with the name of this flag, suggestions welcome ;) llvm-svn: 156233
* NVPTX: Initialize the UseF32FTZ flag.Benjamin Kramer2012-05-051-0/+2
| | | | llvm-svn: 156232
* Small fix in InstCombineCasts.cpp. Restored "alloca + bitcast" reducing for ↵Stepan Dyatkovskiy2012-05-052-3/+6
| | | | | | | | case when alloca's size is calculated within the "add/sub/... nsw". Also added fix to 2011-06-13-nsw-alloca.ll test. llvm-svn: 156231
* Jason Molenda convinced me that we should make ctrl-w on the command line ↵Johnny Chen2012-05-051-0/+1
| | | | | | | | bind to ed-delete-prev-word. If you have ctrl-w key binding specified with your .editrc file, it will be overridden with ed-delete-prev-word. :-) llvm-svn: 156230
* Revert r156141 (making RecursiveASTVisitor data recursive). It is causing ↵Ted Kremenek2012-05-051-93/+143
| | | | | | | | | clang to blow up in memory usage on -O2 when compiling itself, which is leading to swapping in some cases when it didn't before. We need to see if we can make this change without leading to a massive compile-time bloat. llvm-svn: 156229
* Use raw_ostream in TypePrinter and eliminate uses of temporary std::strings.Argyrios Kyrtzidis2012-05-059-572/+964
| | | | | | Part of rdar://10796159 llvm-svn: 156228
* Make BuiltinType::getName return a StringRef and introduce ↵Argyrios Kyrtzidis2012-05-055-5/+11
| | | | | | | | | | | | | BuiltinType::getNameAsCString to get a const char* if necessary. This avoids unnecessary conversions when we want to use the result of getName as a StringRef. Part of rdar://10796159 llvm-svn: 156227
* Typo.Eric Christopher2012-05-051-1/+1
| | | | llvm-svn: 156226
OpenPOWER on IntegriCloud