summaryrefslogtreecommitdiffstats
path: root/clang
Commit message (Collapse)AuthorAgeFilesLines
* Mention atomics support in the release notes.Richard Smith2012-04-131-0/+2
| | | | | | Thanks to Nico Weber for the suggestion. llvm-svn: 154648
* When we're flagging a protected scope to prevent jumps into theJohn McCall2012-04-133-10/+37
| | | | | | | | shadow of a block expression with non-trivial destructed cleanups, we should flag that in the enclosing function, not in the block that we're about to pop. llvm-svn: 154646
* Now that we provide sufficient support for three C11/C++11 atomicsRichard Smith2012-04-131-4/+4
| | | | | | | | | implementations, mark the atomics-related parts of the C++11 status page as done. I've not marked 'Strong Compare and Exchange' done, since although we implement supporting builtins, we don't yet produce different code for the weak and strong forms. llvm-svn: 154644
* C++11 no longer requires files to end with a newlineSeth Cantrell2012-04-133-3/+8
| | | | llvm-svn: 154643
* Implement the missing pieces needed to support libstdc++4.7's <atomic>:Richard Smith2012-04-137-47/+376
| | | | | | | | | | | | | | | | | | | | | | | | __atomic_test_and_set, __atomic_clear, plus a pile of undocumented __GCC_* predefined macros. Implement library fallback for __atomic_is_lock_free and __c11_atomic_is_lock_free, and implement __atomic_always_lock_free. Contrary to their documentation, GCC's __atomic_fetch_add family don't multiply the operand by sizeof(T) when operating on a pointer type. libstdc++ relies on this quirk. Remove this handling for all but the __c11_atomic_fetch_add and __c11_atomic_fetch_sub builtins. Contrary to their documentation, __atomic_test_and_set and __atomic_clear take a first argument of type 'volatile void *', not 'void *' or 'bool *', and __atomic_is_lock_free and __atomic_always_lock_free have an argument of type 'const volatile void *', not 'void *'. With this change, libstdc++4.7's <atomic> passes libc++'s atomic test suite, except for a couple of libstdc++ bugs and some cases where libc++'s test suite tests for properties which implementations have latitude to vary. llvm-svn: 154640
* objective-c modern translator: beautify rewrite ofFariborz Jahanian2012-04-121-7/+7
| | | | | | struct __rw_objc_super; no functionality change. llvm-svn: 154632
* Config.h: Add another definition which the Darwin build (sometimes) uses.Daniel Dunbar2012-04-121-0/+3
| | | | llvm-svn: 154630
* Warn on 64-to-32 for source value of x bits where 64 >= x > 32.David Blaikie2012-04-122-1/+5
| | | | | | | | | The codepath already only works for source bits > target bits, it's just that it was testing for the source expr bits to be exactly 64. This meant simple cases (int i = x_long / 2) were missed & ended up under the general -Wconversion warning, which a user might not have enabled. llvm-svn: 154626
* [analyzer] PCH deserialization optimization.Anna Zaks2012-04-129-92/+187
| | | | | | | | | | | | | | | | We should not deserialize unused declarations from the PCH file. Achieve this by storing the top level declarations during parsing (HandleTopLevelDecl ASTConsumer callback) and analyzing/building a call graph only for those. Tested the patch on a sample ObjC file that uses PCH. With the patch, the analyzes is 17.5% faster and clang consumes 40% less memory. Got about 10% overall build/analyzes time decrease on a large Objective C project. A bit of CallGraph refactoring/cleanup as well.. llvm-svn: 154625
* [analyzer] Test case for r154451 (redefining system functions).Anna Zaks2012-04-121-0/+17
| | | | llvm-svn: 154624
* objective-c literals: Issue warning and ignoreFariborz Jahanian2012-04-123-3/+17
| | | | | | | when BOOL is not of an intergal type when boolean literals are used. // rdar://11231426 llvm-svn: 154619
* s/isAtomicConversion/tryAtomicConversion/g, per Jordy's suggestion.Douglas Gregor2012-04-121-11/+11
| | | | llvm-svn: 154613
* Fix some i1/i8 confusion within _Atomic(bool) in IR generation, bothDouglas Gregor2012-04-124-7/+41
| | | | | | | | | | | | | | in general (such an atomic has boolean representation) and specifically for IR generation of __c11_atomic_init. The latter also means actually using initialization semantics for this initialization, rather than just creating a store. On a related note, make sure we actually put in non-atomic-to-atomic conversions when performing an implicit conversion sequence. IR generation is far too kind here, but we still want the ASTs to make sense. llvm-svn: 154612
* Include lambda capture init expressions in CFG.Ted Kremenek2012-04-122-1/+37
| | | | llvm-svn: 154611
* Add -Wuninitialized test for C++11 lambdas.Ted Kremenek2012-04-121-1/+6
| | | | llvm-svn: 154608
* Fix CFGBuilder to not include the body of a LambdaExpr in the CFG of the ↵Ted Kremenek2012-04-121-3/+5
| | | | | | enclosing function. llvm-svn: 154607
* MIPS: Initialize MIPS CPU's name by default value.Simon Atanasyan2012-04-121-3/+6
| | | | | | | Otherwise MipsTargetInfoBase::getDefaultFeatures() might return an invalid features set with an empty feature name. llvm-svn: 154606
* Compute standard conversion sequences for conversions to atomicDouglas Gregor2012-04-123-11/+76
| | | | | | | | | | | | types. The second and third conversions in the sequence are based on the conversion for the underlying type, so that we get sensible overloading behavior for, e.g., _Atomic(int) vs. _Atomic(float). As part of this, actually implement the lvalue-to-rvalue conversion for atomic types. There is probably a pile of code in SemaExpr that can now be deleted, but I haven't tracked it down yet. llvm-svn: 154596
* objective-c numeric literal: type of boolean isFariborz Jahanian2012-04-123-2/+54
| | | | | | | that of typedef BOOL if found. // rdar://11231426 llvm-svn: 154595
* modern objective-c translator. ifdef'out Fariborz Jahanian2012-04-122-1/+11
| | | | | | | __weak and __block when rewriting. // rdar://11236342 llvm-svn: 154592
* Fix the signatures for the _mm256_storeu2_* intrinsics.Chad Rosier2012-04-121-3/+3
| | | | | | PR12532 llvm-svn: 154591
* Changed all direct calls to CompletionConsumer.reset(..) to go callErik Verbruggen2012-04-121-4/+4
| | | | | | | | CompilerInstance::setCodeCompletionConsumer instead, in order to change the SkipFunctionBodies flag accordingly. Also fixed setCodeCompletionConsumer to take a reset() to null into account. llvm-svn: 154585
* Added a flag to the parser to skip method bodies.Erik Verbruggen2012-04-1215-34/+106
| | | | llvm-svn: 154584
* There's some code in the PCH reader that looks like it's needlessly complex, butNick Lewycky2012-04-124-0/+21
| | | | | | | turns out that it's actually needed for C++ modules support. Since simplifying it didn't cause any test failures, I'll add a test for it. llvm-svn: 154582
* Implement support for 18 of the GNU-compatible __atomic builtins.Richard Smith2012-04-1211-281/+732
| | | | | | | | | | | | This is not quite sufficient for libstdc++'s <atomic>: we still need __atomic_test_and_set and __atomic_clear, and may need a more complete __atomic_is_lock_free implementation. We are also missing an implementation of __atomic_always_lock_free, __atomic_nand_fetch, and __atomic_fetch_nand, but those aren't needed for libstdc++. llvm-svn: 154579
* These functions too have no prototypes. Audited the rest of Sema forEric Christopher2012-04-122-4/+4
| | | | | | | | FunctionDecl::Create calls as well. rdar://11079003 llvm-svn: 154578
* Testcase for previous commit.Eric Christopher2012-04-121-0/+10
| | | | | | rdar://11079003 llvm-svn: 154571
* static functions have a need for mangled name debug information too.Eric Christopher2012-04-121-3/+4
| | | | | | | | | The mangler doesn't like non-prototyped functions so only use a mangled name for prototyped functions. rdar://11079003 llvm-svn: 154570
* The copy and destroy helper functions aren't prototyped, don't call themEric Christopher2012-04-122-3/+3
| | | | | | so. llvm-svn: 154569
* Implement clang_getDiagnosticCategoryText() to provide a way for a client of ↵Ted Kremenek2012-04-129-8/+65
| | | | | | | | | libclang to accurately get the diagnostic category name from a serialized diagnostic when the version of libclang used to read the diagnostic file is newer than the clang that emitted the diagnostic file. llvm-svn: 154567
* modern objective-c translator. Fixes a mis-translation whenFariborz Jahanian2012-04-112-0/+22
| | | | | | of a __block struct object. // rdar://11230308 llvm-svn: 154566
* Add test for a construct we currently reject, constant-evaluating a load ↵Eli Friedman2012-04-111-0/+4
| | | | | | from a constant string. Given that gcc doesn't accept this, we should continue to not accept it, even though it was accidentally supported by clang for a brief period. llvm-svn: 154564
* [analyzer] Another dynamic_cast false positive/negative.Anna Zaks2012-04-111-0/+7
| | | | llvm-svn: 154543
* [analyzer] dynamic_cast Simplify null value generation.Anna Zaks2012-04-111-8/+2
| | | | | | | | As per Jordy's review. Creating a symbol here is more flexible; however I could not come up with an example where it was needed. (What constrains can be added on of the symbol constrained to 0?) llvm-svn: 154542
* [analyzer] Better test cases for explaining where tracking types ofAnna Zaks2012-04-111-5/+35
| | | | | | | | symbolic regions would help. Thanks to Richard Smith. llvm-svn: 154541
* modern objective-c translator. Fixes a translation bug when Fariborz Jahanian2012-04-112-18/+34
| | | | | | | first ivar in the list is a bitfield. // rdar://11229770 llvm-svn: 154534
* Part of PR10101: after a parse error in a declaration, try harder to find theRichard Smith2012-04-114-6/+110
| | | | | | | right place to pick up parsing. In C++, this had a tendency to skip everything declared within headers if the TU starts with garbage. llvm-svn: 154530
* [libclang] Apparently it's important to build in C89, sigh..Argyrios Kyrtzidis2012-04-111-1/+2
| | | | llvm-svn: 154525
* [libclang] Introduce a couple of functions to make it convenientArgyrios Kyrtzidis2012-04-117-8/+71
| | | | | | | | | | | to get at the parameters (and their types) of a function or objc method cursor. int clang_Cursor_getNumArguments(CXCursor C); CXCursor clang_Cursor_getArgument(CXCursor C, unsigned i); rdar://11201527 llvm-svn: 154523
* [libclang] In cxloc::translateSourceRange make sure to handle locations in ↵Argyrios Kyrtzidis2012-04-112-4/+14
| | | | | | | | | | macro arguments correctly. clang diagnostics can provide fixits inside a macro argument now. rdar://11014346 llvm-svn: 154517
* Update recently-added test to use new __c11_ form of atomic builtins.Richard Smith2012-04-111-1/+1
| | | | llvm-svn: 154514
* Provide, and document, a set of __c11_atomic_* intrinsics to implement C11'sRichard Smith2012-04-1110-98/+165
| | | | | | | | | <stdatomic.h> header. In passing, fix LanguageExtensions to note that C11 and C++11 are no longer "upcoming standards" but are now actually standardized. llvm-svn: 154513
* Make __atomic_init() (soon to be __c11_atomic_init()) work with non-scalar ↵David Chisnall2012-04-112-4/+28
| | | | | | types. llvm-svn: 154507
* Clean up last commit as per dgregor's comments.David Chisnall2012-04-111-7/+7
| | | | llvm-svn: 154501
* Allow c++ initialisers to initialise _Atomic fields.David Chisnall2012-04-112-0/+19
| | | | llvm-svn: 154499
* Add a triple to this test.Eric Christopher2012-04-111-1/+1
| | | | llvm-svn: 154485
* Try to fix the windows buildbots by making this test a little lessEric Christopher2012-04-111-1/+1
| | | | | | dependent upon metadata ordering. llvm-svn: 154482
* Enable debug info for objective c implementations that may not haveEric Christopher2012-04-117-5/+42
| | | | | | | | an explicit instance variable. rdar://10590352 llvm-svn: 154481
* Support C++11 attributes at the start of a parameter-declaration.Richard Smith2012-04-114-10/+36
| | | | llvm-svn: 154476
* [libclang] Fix "error: conflicts with new declaration with ‘C’ linkage" ↵Argyrios Kyrtzidis2012-04-111-21/+21
| | | | | | | | that gcc emits but not clang. llvm-svn: 154475
OpenPOWER on IntegriCloud