| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
Thanks to Nico Weber for the suggestion.
llvm-svn: 154648
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 154643
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
__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
|
| |
|
|
|
|
| |
struct __rw_objc_super; no functionality change.
llvm-svn: 154632
|
| |
|
|
| |
llvm-svn: 154630
|
| |
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 154624
|
| |
|
|
|
|
|
| |
when BOOL is not of an intergal type when
boolean literals are used. // rdar://11231426
llvm-svn: 154619
|
| |
|
|
| |
llvm-svn: 154613
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 154611
|
| |
|
|
| |
llvm-svn: 154608
|
| |
|
|
|
|
| |
enclosing function.
llvm-svn: 154607
|
| |
|
|
|
|
|
| |
Otherwise MipsTargetInfoBase::getDefaultFeatures() might return an invalid
features set with an empty feature name.
llvm-svn: 154606
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
| |
that of typedef BOOL if found.
// rdar://11231426
llvm-svn: 154595
|
| |
|
|
|
|
|
| |
__weak and __block when rewriting.
// rdar://11236342
llvm-svn: 154592
|
| |
|
|
|
|
| |
PR12532
llvm-svn: 154591
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 154584
|
| |
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
| |
FunctionDecl::Create calls as well.
rdar://11079003
llvm-svn: 154578
|
| |
|
|
|
|
| |
rdar://11079003
llvm-svn: 154571
|
| |
|
|
|
|
|
|
|
| |
The mangler doesn't like non-prototyped functions so only use a mangled
name for prototyped functions.
rdar://11079003
llvm-svn: 154570
|
| |
|
|
|
|
| |
so.
llvm-svn: 154569
|
| |
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
of a __block struct object. // rdar://11230308
llvm-svn: 154566
|
| |
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 154543
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
| |
symbolic regions would help.
Thanks to Richard Smith.
llvm-svn: 154541
|
| |
|
|
|
|
|
| |
first ivar in the list is a bitfield.
// rdar://11229770
llvm-svn: 154534
|
| |
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 154525
|
| |
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
| |
macro arguments
correctly. clang diagnostics can provide fixits inside a macro argument now.
rdar://11014346
llvm-svn: 154517
|
| |
|
|
| |
llvm-svn: 154514
|
| |
|
|
|
|
|
|
|
| |
<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
|
| |
|
|
|
|
| |
types.
llvm-svn: 154507
|
| |
|
|
| |
llvm-svn: 154501
|
| |
|
|
| |
llvm-svn: 154499
|
| |
|
|
| |
llvm-svn: 154485
|
| |
|
|
|
|
| |
dependent upon metadata ordering.
llvm-svn: 154482
|
| |
|
|
|
|
|
|
| |
an explicit instance variable.
rdar://10590352
llvm-svn: 154481
|
| |
|
|
| |
llvm-svn: 154476
|
| |
|
|
|
|
|
|
| |
that gcc
emits but not clang.
llvm-svn: 154475
|