summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Handle C++11 attribute namespaces automatically.Alexis Hunt2012-06-189-55/+102
| | | | | | | | Now, as long as the 'Namespaces' variable is correct inside Attr.td, the generated code will correctly admit a C++11 attribute only when it has the appropriate namespace(s). llvm-svn: 158661
* add the 'alloc' metadata node to represent the size of offset of buffers ↵Nuno Lopes2012-06-186-1/+151
| | | | | | | | pointed to by pointers. This metadata can be attached to any instruction returning a pointer llvm-svn: 158660
* This change handles a another case for generating the bic instruction Joel Jones2012-06-182-0/+50
| | | | | | | | | | | when a compile time constant is known. This occurs when implicitly zero extending function arguments from 16 bits to 32 bits. The 8 bit case doesn't need to be handled, as the 8 bit constants are encoded directly, thereby not needing a separate load instruction to form the constant into a register. <rdar://problem/11481151> llvm-svn: 158659
* [Sanitizer] add internal_strncmp to sanitizer libcAlexey Samsonov2012-06-182-0/+13
| | | | llvm-svn: 158658
* [TSan] kill some linux-specific code in favor of code in common runtime: ↵Alexey Samsonov2012-06-182-80/+18
| | | | | | reuse wrappers for mmap routines, ProcessMaps iterator, thread stack calculation llvm-svn: 158657
* Add a regression test for the bug exposed by r158087, which has beenChandler Carruth2012-06-181-0/+63
| | | | | | | | | | | | | | | | | | | | temporarily reverted. This test is annoyingly overspecified, but I don't know of another way to thoroughly test the saving and restoring of the registers. While this will have to be adjusted even with the issue fixed in order to re-apply r158087, those adjustments should very clearly indicate that it is still correct (%esp getting restored prior to pops), whereas without it, this case can easily slip under the radar. Still, any suggestions for improvements are very welcome. All credit to Matt Beaumont-Gay for reducing this out of an insane Address Sanitizer crash to a reasonably small seg-faulting C program when built with -mstackrealign. I just reduced it to IR, which was much simpler. =] llvm-svn: 158656
* [Sanitizer] move different wrappers from TSan to common sanitizer runtimeAlexey Samsonov2012-06-1811-22/+42
| | | | llvm-svn: 158655
* Temporarily revert r158087.Chandler Carruth2012-06-186-263/+16
| | | | | | | | | | | | | This patch causes problems when both dynamic stack realignment and dynamic allocas combine in the same function. With this patch, we no longer build the epilog correctly, and silently restore registers from the wrong position in the stack. Thanks to Matt for tracking this down, and getting at least an initial test case to Chad. I'm going to try to check a variation of that test case in so we can easily track the fixes required. llvm-svn: 158654
* [MSExtensions] Add support for __forceinline.Michael J. Spencer2012-06-185-5/+38
| | | | | | __forceinline is a combination of the inline keyword and __attribute__((always_inline)) llvm-svn: 158653
* Extend the error recovery for a template-argument-list terminated by '>>' toRichard Smith2012-06-187-24/+157
| | | | | | | | | also deal with '>>>' (in CUDA), '>=', and '>>='. Fix the FixItHints logic to deal with cases where the token is followed by an adjacent '=', '==', '>=', '>>=', or '>>>' token, where a naive fix-it would result in a differing token stream on a re-lex. llvm-svn: 158652
* Don't warn about address-to-member used as part of initialisation, ifJoerg Sonnenberger2012-06-172-1/+5
| | | | | | the member expression is in parentheses. llvm-svn: 158651
* TableGen.cmake: Fix to work without LLVM_COMMON_DEPENDS.NAKAMURA Takumi2012-06-171-1/+3
| | | | llvm-svn: 158650
* diagtool/CMakeLists.txt: Add missing tblgen'd dependency, ↵NAKAMURA Takumi2012-06-171-0/+4
| | | | | | ClangDiagnosticIndexName. llvm-svn: 158649
* For reasons I can't fathom MSVC supports ULL but not LLU suffixes on long ↵Benjamin Kramer2012-06-171-1/+1
| | | | | | long integer literals. llvm-svn: 158648
* Add missing unittest files to the cmake build.Benjamin Kramer2012-06-171-1/+9
| | | | llvm-svn: 158647
* Remove SmallMap unittests, unbreaking the build.Benjamin Kramer2012-06-171-162/+0
| | | | | | I don't know how useful these are for SmallDenseMap, I'll leave that decision to Chandler. llvm-svn: 158646
* Bring the return value of SmallVector::insert in line with std::vector::insert.Benjamin Kramer2012-06-172-14/+41
| | | | | | | | It always returns the iterator for the first inserted element, or the passed in iterator if the inserted range was empty. Flesh out the unit test more and fix all the cases it uncovered so far. llvm-svn: 158645
* Remove SmallMap, and the several files that were used to implement it.Chandler Carruth2012-06-173-912/+0
| | | | | | | We have SmallDenseMap now that has more correct and predictable semantics, even though it is a more narrow abstraction. llvm-svn: 158644
* SmallVector: return a valid iterator for the rare case of inserting an empty ↵Benjamin Kramer2012-06-172-2/+9
| | | | | | | | range into a SmallVector. Patch by Johannes Schaub! llvm-svn: 158643
* Switch users of SmallMap to use SmallDenseMap instead.Chandler Carruth2012-06-172-4/+4
| | | | | | | | | The most important change here is that the destructor and copy constructor for StoredDeclsList will now reliably be run. Previously, the destructors at least were missed in some cases. See the LLVM commits discussions for why SmallMap is broken and going away. llvm-svn: 158642
* Add a unit test for 'swap', and fix a pile of bugs inChandler Carruth2012-06-172-7/+70
| | | | | | | | | | | | | | | SmallDenseMap::swap. First, make it parse cleanly. Yay for uninstantiated methods. Second, make the inline-buckets case work correctly. This is way trickier than it should be due to the uninitialized values in empty and tombstone buckets. Finally fix a few typos that caused construction/destruction mismatches in the counting unittest. llvm-svn: 158641
* Disable a particular assertion on MSVC... I'm deeply disturbed by itsChandler Carruth2012-06-171-0/+5
| | | | | | implementation of the class layout for the V8 type. llvm-svn: 158640
* Add tests for *DenesMap for both key and value types' construction andChandler Carruth2012-06-172-19/+74
| | | | | | | | | | | | | | | | | | | destruction and fix a bug in SmallDenseMap they caught. This is kind of a poor-man's version of the testing that just adds the addresses to a set on construction and removes them on destruction. We check that double construction and double destruction don't occur. Amusingly enough, this is enough to catch a lot of SmallDenseMap issues because we spend a lot of time with fixed stable addresses in the inline buffer. The SmallDenseMap bug fix included makes grow() not double-destroy in some cases. It also fixes a FIXME there, the code was pretty crappy. We now don't have any wasted initialization, but we do move the entries in inline bucket array an extra time. It's probably a better tradeoff, and is much easier to get correct. llvm-svn: 158639
* Introduce a SmallDenseMap container that re-uses the existing DenseMapChandler Carruth2012-06-172-41/+332
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | implementation. This type includes an inline bucket array which is used initially. Once it is exceeded, an array of 64 buckets is allocated on the heap. The bucket count grows from there as needed. Some highlights of this implementation: - The inline buffer is very carefully aligned, and so supports types with alignment constraints. - It works hard to avoid aliasing issues. - Supports types with non-trivial constructors, destructors, copy constructions, etc. It works reasonably hard to minimize copies and unnecessary initialization. The most common initialization is to set keys to the empty key, and so that should be fast if at all possible. This class has a performance / space trade-off. It tries to optimize for relatively small maps, and so packs the inline bucket array densely into the object. It will be marginally slower than a normal DenseMap in a few use patterns, so it isn't appropriate everywhere. The unit tests for DenseMap have been generalized a bit to support running over different map implementations in addition to different key/value types. They've then been automatically extended to cover the new container through the magic of GoogleTest's typed tests. All of this is still a bit rough though. I'm going to be cleaning up some aspects of the implementation, documenting things better, and adding tests which include non-trivial types. As soon as I'm comfortable with the correctness, I plan to switch existing users of SmallMap over to this class as it is already more correct w.r.t. construction and destruction of objects iin the map. Thanks to Benjamin Kramer for all the reviews of this and the lead-up patches. That said, more review on this would really be appreciated. As I've noted a few times, I'm quite surprised how hard it is to get the semantics for a hashtable-based map container with a small buffer optimization correct. =] llvm-svn: 158638
* Add some somewhat exhaustive tests of sizeof properties of this horribleChandler Carruth2012-06-171-0/+60
| | | | | | construct just for my sanity. llvm-svn: 158637
* Documentation cleanup:James Dennett2012-06-171-60/+60
| | | | | | | * Escaped # characters in Doxygen comments as needed; * Exposed summaries using the \brief command. llvm-svn: 158636
* Documentation cleanup:James Dennett2012-06-171-22/+19
| | | | | | | | * Escaped # characters in Doxygen comments as needed; * Added/reformatted \brief docs; * Used a \file comment to document the file (MultipleIncludeOpt.h). llvm-svn: 158635
* Documentation cleanup:James Dennett2012-06-171-2/+2
| | | | | | | * For Doxygen, escaped "::std" as "\::std"; * For humans, fixed "namespaecs" to "namespaces". llvm-svn: 158634
* Documentation cleanup: add parameter name to \paramJames Dennett2012-06-171-1/+1
| | | | llvm-svn: 158633
* Documentation cleanup:James Dennett2012-06-171-28/+25
| | | | | | | * Escaped # characters in Doxygen comments; * Added \brief markup to provide summaries. llvm-svn: 158632
* Documentation cleanup: escaped a < character in a Doxygen comment.James Dennett2012-06-171-1/+1
| | | | llvm-svn: 158631
* Documentation cleanup: fix two typos, rief -> brief and Descripts -> DescribesJames Dennett2012-06-171-2/+2
| | | | llvm-svn: 158630
* Documentation cleanup: escaping #define in Doxygen commentsJames Dennett2012-06-171-3/+3
| | | | llvm-svn: 158629
* Documentation cleanup:James Dennett2012-06-171-43/+65
| | | | | | | * Added \file, \brief and \verbatim...\endverbatim markup, particularly around documentation of subset of the grammars that are being parsed. llvm-svn: 158628
* Documentation cleanup: escaping # characters and adding \brief markupJames Dennett2012-06-171-3/+2
| | | | llvm-svn: 158627
* Documentation cleanup: escaping # characters and adding \brief markupJames Dennett2012-06-171-5/+5
| | | | llvm-svn: 158626
* Documentation cleanup: escape #undef in Doxygen comments.James Dennett2012-06-171-2/+2
| | | | llvm-svn: 158625
* Documentation cleanup: delete an erroneous use of \linkJames Dennett2012-06-171-1/+1
| | | | llvm-svn: 158624
* Now that SROA can form alloca's for dynamic vector accesses, further improve ↵Pete Cooper2012-06-172-61/+161
| | | | | | it to be able to replace operations on these vector alloca's with insert/extract element insts llvm-svn: 158623
* Documentation cleanup: typo fix, \briaf -> \briefJames Dennett2012-06-171-1/+1
| | | | llvm-svn: 158622
* Documentation cleanup: Add missing parameter name to a \param commandJames Dennett2012-06-171-3/+3
| | | | llvm-svn: 158621
* Documentation cleanup: escape "::" to eliminate a Doxygen warningJames Dennett2012-06-171-1/+1
| | | | llvm-svn: 158620
* Documentation cleanup: Use \brief for summaries, and escape # characters.James Dennett2012-06-171-1/+1
| | | | llvm-svn: 158619
* Documentation cleanup:James Dennett2012-06-171-11/+7
| | | | | | | | | | * Removed docs for Lexer::makeFileCharRange from Lexer.cpp, as they're in the header file; * Reworked the documentation for SkipBlockComment so that it doesn't confuse Doxygen's comment parsing; * Added another summary with \brief markup. llvm-svn: 158618
* Documentation cleanup: fixing a typo from my previous 'fix'.James Dennett2012-06-171-1/+1
| | | | llvm-svn: 158617
* Documentation cleanup: added \verbatim...\verbatim markup to fix theJames Dennett2012-06-171-0/+2
| | | | | | formatting of Doxygen's output for StringLiteralParser::StringLiteralParser. llvm-svn: 158616
* Documentation cleanup:James Dennett2012-06-171-29/+42
| | | | | | | * Escaped #pragma (as \#pragma) in Doxygen comments; * Added \code...\endcode annotations around code examples in doc comments. llvm-svn: 158615
* Documentation cleanup: escaped # characters in Doxygen comments.James Dennett2012-06-171-3/+3
| | | | llvm-svn: 158614
* For compatibility with gcc, accept -maltivec as an alias of -faltivec.Hal Finkel2012-06-172-0/+2
| | | | llvm-svn: 158613
* Fix MSVC compat. MSVC doesn't have bzero.Michael J. Spencer2012-06-171-2/+2
| | | | | | | | | | Although the code is not valid to begin with. It is trying to do a raw memory copy of a non standard-layout type. nameoffset is not guaranteed to directly follow cmdsize. This should be properly fixed. llvm-svn: 158612
OpenPOWER on IntegriCloud