Craig Topper
f85c6ce867
De-virtualize a method that doesn't override anything and has no overrides itself.
...
llvm-svn: 203895
2014-03-14 06:06:19 +00:00
Craig Topper
21beb40da5
Remove seemingly dead method. It was marked virtual but doesn't override anything and there don't seem to be any in tree callers.
...
llvm-svn: 203894
2014-03-14 06:04:02 +00:00
Craig Topper
b45acb8a16
[C++11] Add 'override' keyword to virtual methods that override their base class.
...
llvm-svn: 203893
2014-03-14 06:02:07 +00:00
Argyrios Kyrtzidis
6d0753d42a
[Modules] Emit the module file paths as dependencies of the PCH when we are building one.
...
This is because the PCH is tied to the module files, if one of the module files changes or gets removed
the build system should re-build the PCH file.
rdar://16321245
llvm-svn: 203885
2014-03-14 03:07:38 +00:00
Argyrios Kyrtzidis
68ccbe01b0
[Modules] Make sure that the synthesized file "__inferred_module.map" doesn't show up as dependency of a module file.
...
Follow-up for rdar://15459210
llvm-svn: 203882
2014-03-14 02:26:31 +00:00
Argyrios Kyrtzidis
ce9b49e5ec
Refactor ASTReader::readInputFileInfo to return a struct containing the related information.
...
No functionality change.
llvm-svn: 203881
2014-03-14 02:26:27 +00:00
Aaron Ballman
0f6e64d505
[C++11] Replacing ObjCProtocolDecl iterators protocol_begin() and protocol_end() with iterator_range protocols(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203863
2014-03-13 22:58:06 +00:00
Aaron Ballman
b4a5345598
[C++11] Replacing ObjCInterfaceDecl iterators known_extensions_begin() and known_extensions_end() with iterator_range known_extensions(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203857
2014-03-13 21:57:01 +00:00
Aaron Ballman
f53d8dd37d
[C++11] Replacing ObjCInterfaceDecl iterators visible_extensions_begin() and visible_extensions_end() with iterator_range visible_extensions(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203855
2014-03-13 21:47:07 +00:00
Aaron Ballman
15063e19c6
[C++11] Replacing ObjCInterfaceDecl iterators known_categories_begin() and known_categories_end() with iterator_range known_categories(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203854
2014-03-13 21:35:02 +00:00
Aaron Ballman
3fe486a332
[C++11] Replacing ObjCInterfaceDecl iterators visible_categories_begin() and visible_categories_end() with iterator_range visible_categories(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203851
2014-03-13 21:23:55 +00:00
Aaron Ballman
59abbd4d9b
[C++11] Replacing ObjCInterfaceDecl iterators ivar_begin() and ivar_end() with iterator_range ivars(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203849
2014-03-13 21:09:43 +00:00
Aaron Ballman
a9f49e394c
[C++11] Replacing ObjCInterfaceDecl iterators all_referenced_protocol_begin() and all_referenced_protocol_end() with iterator_range all_referenced_protocols(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203848
2014-03-13 20:55:22 +00:00
Aaron Ballman
e937888e1c
[C++11] Replacing ObjCInterfaceDecl iterators protocol_loc_begin() and protocol_loc_end() with iterator_range protocol_locs(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203847
2014-03-13 20:34:24 +00:00
Stephan Tolksdorf
232670fc05
Refactor InstantiatingTemplate constructors
...
This patch factors the bodies of 9 constructors out into a single initialization
method.
Reviewed By: rsmith
Differential Revision: http://llvm-reviews.chandlerc.com/D3059
llvm-svn: 203846
2014-03-13 20:34:22 +00:00
Stephan Tolksdorf
eb7708d07a
Add SourceRange to err_not_tag_in_scope diagnostic in TreeTransform<...>::RebuildDependentNameType
...
Apparently the FIXME was overlooked when the source location information was
made available to the function.
Reviewed By: rsmith
Differential Revision: http://llvm-reviews.chandlerc.com/D3058
llvm-svn: 203845
2014-03-13 20:34:03 +00:00
Aaron Ballman
a49c5064a1
[C++11] Replacing ObjCInterfaceDecl iterators protocol_begin() and protocol_end() with iterator_range protocols(). Updating all of the usages of the iterators with range-based for loops.
...
Drive-by fixing some incorrect types where a for loop would be improperly using ObjCInterfaceDecl::protocol_iterator. No functional changes in these cases.
llvm-svn: 203842
2014-03-13 20:29:09 +00:00
Aaron Ballman
e8a7dc9889
[C++11] Replacing ObjCContainerDecl iterators classmeth_begin() and classmeth_end() with iterator_range class_methods(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203840
2014-03-13 20:11:06 +00:00
Aaron Ballman
f26acce6f7
[C++11] Replacing ObjCContainerDecl iterators instmeth_begin() and instmeth_end() with iterator_range instance_methods(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203839
2014-03-13 19:50:17 +00:00
Tim Northover
514fc61c09
CodeGen: use symbolic enumerators for memory order
...
It makes the code clearer and less error-prone to use our (already
known) special values for the various memory order cases.
llvm-svn: 203838
2014-03-13 19:25:52 +00:00
Tim Northover
9c177223bc
CodeGen: make use of weaker failure orders on cmpxchg.
...
This makes Clang take advantage of the recent IR addition of a
"failure" memory ordering requirement. As with the "success" ordering,
we try to emit just a single version if the expression is constant,
but fall back to runtime detection (to allow optimisation across
function-call boundaries).
rdar://problem/15996804
llvm-svn: 203837
2014-03-13 19:25:48 +00:00
Aaron Ballman
d174edffa0
Renaming the recently-created (r203830) props() range API to properties() for clarity.
...
llvm-svn: 203835
2014-03-13 19:11:50 +00:00
Aaron Ballman
aff18c0446
[C++11] Replacing ObjCContainerDecl iterators meth_begin() and meth_end() with iterator_range methods(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203832
2014-03-13 19:03:34 +00:00
Aaron Ballman
dc4bea4676
[C++11] Replacing ObjCContainerDecl iterators prop_begin() and prop_end() with iterator_range props(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203830
2014-03-13 18:47:37 +00:00
Aaron Ballman
91cdc28d93
[C++11] Replacing UsingDecl iterators shadow_begin() and shadow_end() with iterator_range shadows(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203825
2014-03-13 18:07:29 +00:00
Jordan Rose
821a3a0f77
[analyzer] Warn when passing pointers to const but uninitialized memory.
...
Passing a pointer to an uninitialized memory buffer is normally okay,
but if the function is declared to take a pointer-to-const then it's
very unlikely it will be modifying the buffer. In this case the analyzer
should warn that there will likely be a read of uninitialized memory.
This doesn't check all elements of an array, only the first one.
It also doesn't yet check Objective-C methods, only C functions and
C++ methods.
This is controlled by a new check: alpha.core.CallAndMessageUnInitRefArg.
Patch by Per Viberg!
llvm-svn: 203822
2014-03-13 17:55:39 +00:00
Aaron Ballman
9bc5f36099
[C++11] Replacing ObjCImplementationDecl iterators init_begin() and init_end() with iterator_range inits(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203820
2014-03-13 17:35:02 +00:00
Aaron Ballman
0ad78303de
[C++11] Replacing CXXRecordDecl iterators init_begin() and init_end() with iterator_range inits(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203819
2014-03-13 17:34:31 +00:00
Aaron Ballman
6def98ab5f
[C++11] Replacing CXXRecordDecl iterators capture_begin() and capture_end() with iterator_range captures(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203817
2014-03-13 17:08:33 +00:00
Hans Wennborg
a316933e09
MS intrinsics: __interlockedbittestandset(64) (PR19054)
...
llvm-svn: 203816
2014-03-13 17:05:09 +00:00
Aaron Ballman
522a6ddf9e
[C++11] Replacing CXXRecordDecl iterators friend_begin() and friend_end() with iterator_range friends(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203815
2014-03-13 17:00:06 +00:00
Aaron Ballman
2a4bd6d189
[C++11] Replacing CXXRecordDecl iterators ctor_begin() and ctor_end() with iterator_range ctors(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203814
2014-03-13 16:51:27 +00:00
Ben Langmuir
d285c50390
Prevent outputting HeaderFileInfos for files not used as headers
...
When building an AST file, we don't want to output HeaderFileInfo
structures for files that are not actually used as headers in the
current context. This can lead to assuming that unrelated files have
include counts of 0, defeating multiple-include prevention.
This is accomplished by adding an IsValid bit to the HFI.
llvm-svn: 203813
2014-03-13 16:46:36 +00:00
Aaron Ballman
2b124d1a5d
[C++11] Replacing CXXRecordDecl iterators method_begin() and method_end() with iterator_range methods(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203812
2014-03-13 16:36:16 +00:00
Aaron Ballman
445a939db8
[C++11] Replacing CXXRecordDecl iterators vbases_begin() and vbases_end() with iterator_range vbases(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203808
2014-03-13 16:15:17 +00:00
Rafael Espindola
93c7a6532e
Simplify code. No functionality change.
...
llvm-svn: 203804
2014-03-13 15:47:50 +00:00
Aaron Ballman
574705ed7f
[C++11] Replacing CXXRecordDecl iterators bases_begin() and bases_end() with iterator_range bases(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203803
2014-03-13 15:41:46 +00:00
Alexander Kornienko
c2ee9cf861
Remove an unnecessary check for FormatTok not being null.
...
Summary:
This check hints clang analyzer, that FormatTok may be null, and it
reports a null pointer dereference error:
http://buildd-clang.debian.net/scan-build/report-827c64.html#Path28
Reviewers: djasper
Reviewed By: djasper
CC: cfe-commits, klimek
Differential Revision: http://llvm-reviews.chandlerc.com/D3040
llvm-svn: 203800
2014-03-13 13:59:48 +00:00
Daniel Jasper
ac7e34e778
clang-format: Prevent ObjC code from confusing the braced-init detection
...
This was leading to bad formatting, e.g.:
Before:
f(^{
@autoreleasepool {
if (a) {
g();
}
}
});
After:
f(^{
@autoreleasepool {
if (a) {
g();
}
}
});
llvm-svn: 203777
2014-03-13 10:11:17 +00:00
Craig Topper
2e5c11ff5c
[C++11] Add 'override' keyword to virtual methods that override their base class.
...
llvm-svn: 203769
2014-03-13 08:12:15 +00:00
Craig Topper
456705304a
De-virtualize a method. It's called through template magic and doesn't override anything.
...
llvm-svn: 203764
2014-03-13 07:14:47 +00:00
Craig Topper
34d8e21d32
Remove unreachable PragmaCaptured method. It's not a real PPCallback.
...
llvm-svn: 203759
2014-03-13 06:19:24 +00:00
Craig Topper
afa7cb3aa5
[C++11] Add 'override' keyword to virtual methods that override their base class.
...
llvm-svn: 203758
2014-03-13 06:07:04 +00:00
Craig Topper
3e89dfee00
[C++11] Add 'override' keyword to virtual methods that override their base class.
...
llvm-svn: 203746
2014-03-13 02:13:41 +00:00
Joerg Sonnenberger
52be0b4cf4
Always use --eh-frame-hdr on NetBSD, even for -static.
...
llvm-svn: 203742
2014-03-13 00:42:01 +00:00
Richard Smith
aae4058453
PR18275: If a member function of a class template is declared with a
...
const-qualified parameter type and the defined with a non-const-qualified
parameter type, the parameter is not const inside its body. Ensure that
the type we use when instantiating the body is the right one. Patch by
suyog sarda!
This is still rather unsatisfactory; it seems like it might be better to
instantiate at least the function parameters, and maybe the complete function
declaration, when we instantiate the definition for such a member function
(instead of reusing the declaration from inside the instantiated class
definition).
llvm-svn: 203741
2014-03-13 00:28:45 +00:00
Richard Smith
5b5d21ea1a
Only allow streaming exactly type 'bool' to a DiagnosticBuilder, not anything
...
that implicitly converts to 'bool' (such as pointers, and the first operand of
?:). Clean up issues found by this. Patch by Stephan Tolksdorf!
llvm-svn: 203735
2014-03-12 23:36:42 +00:00
Richard Smith
8e6002f3bd
Fix crash if delayed template parsing meets an erroneous trailing return type.
...
Based on a patch and test by Stephan Tolksdorf! Refactoring and fixing adjacent
brokenness by me.
llvm-svn: 203733
2014-03-12 23:14:33 +00:00
Hans Wennborg
d9be72ec44
MS intrinsics: implement the __movs and __stos intrinsics (PR19054)
...
llvm-svn: 203722
2014-03-12 22:00:32 +00:00
Hans Wennborg
a4421e03fa
MS intrinsics: implement __readgs{byte,word,dword,qword} (PR19054)
...
llvm-svn: 203715
2014-03-12 21:09:05 +00:00
Hans Wennborg
dd0f5304f6
MS intrinsics: don't declare __readeflags and __writeeflags in Intrin.h
...
They're already defined in ia32intrin.h, and this would cause including Intrin.h
in 64-bit mode to fail because of conflicting types. Update ms-intrin.cpp to
also run in 64-bit mode to catch things like this.
llvm-svn: 203714
2014-03-12 21:09:03 +00:00
Justin Bogner
d66a17d0a3
Revert "CodeGen: Use a binary format for instrumentation based profiling"
...
I've clearly done something wrong with how to get this to link
correctly. Reverting for now.
This reverts commit r203711.
llvm-svn: 203712
2014-03-12 21:06:31 +00:00
Justin Bogner
ff9a058267
CodeGen: Use a binary format for instrumentation based profiling
...
This updates CodeGenPGO to use the ProfileDataReader introduced to
llvm in r203703 and the new API for writing out the profile introduced
to compiler-rt in r203710.
llvm-svn: 203711
2014-03-12 20:53:16 +00:00
Roman Divacky
b048007243
Dont unconditionally add gcc4.2 include paths on FreeBSD.
...
Newer FreeBSD doesnt ship with gcc and defaults to using libc++.
llvm-svn: 203700
2014-03-12 19:32:42 +00:00
Fariborz Jahanian
44be154b04
Objective-C. Issue diagnostics on mismatched methods when their selector is used
...
in an @selector expression. // rdar://15794055
llvm-svn: 203693
2014-03-12 18:34:01 +00:00
Richard Smith
0fc7bdc821
PR19113: Emit 'vtable' TBAA metadata when loading a vptr in a pointer-to-member-function call.
...
llvm-svn: 203691
2014-03-12 18:26:14 +00:00
Justin Bogner
4c9c45c060
CodeGen: Move hot/cold logic out of PGOProfileData
...
llvm-svn: 203689
2014-03-12 18:14:32 +00:00
Richard Smith
66204ecff9
DR1346: a parenthesized braced-init-list cannot be used as the initializer when
...
performing auto type deduction.
llvm-svn: 203683
2014-03-12 17:42:45 +00:00
Eli Bendersky
b5cfa8c2f3
Don't recompute inlining threshold - use new overload provided by LLVM
...
Follow-up on LLVM r203669
llvm-svn: 203673
2014-03-12 16:30:34 +00:00
Hans Wennborg
501eadb429
Check for LLVM_ON_WIN32 instead of _WIN32.
...
This is a follow-up to r203624 to address Anton's comment.
llvm-svn: 203668
2014-03-12 16:07:46 +00:00
Oliver Stannard
7c3c09e23f
ARM: Correct alignment of structs passed as byval pointer
...
When a struct has bitfields overlapping with other members
(as required by the AAPCS), clang uses a packed struct to
represent this. If such a struct is large enough for clang to
pass it as a byval pointer (>64 bytes), we need to set the
alignment of the argument to match the original type.
llvm-svn: 203660
2014-03-12 14:02:50 +00:00
Daniel Jasper
da353cd5f1
clang-format: Fix crasher.
...
Caused by unknown tokens (e.g. "\n") not properly updating the state.
Example:
const char* c = STRINGIFY(
\na : b);
llvm-svn: 203645
2014-03-12 08:24:47 +00:00
Craig Topper
4f12f10de4
[C++11] Add 'override' keyword to virtual methods that override their base class.
...
llvm-svn: 203643
2014-03-12 06:41:41 +00:00
Craig Topper
2b07f0252e
[C++11] Add 'override' keyword to virtual methods that override their base class.
...
llvm-svn: 203641
2014-03-12 05:09:18 +00:00
Craig Topper
e14c0f8e73
[C++11] Add 'override' keyword to virtual methods that override their base class.
...
llvm-svn: 203640
2014-03-12 04:55:44 +00:00
Saleem Abdulrasool
729b7d357d
Lex: reduce buffer size, add a test
...
Reduce the stack usage as hopefully include paths are usually not too long. Add
a test case for the path normalisation behaviour.
llvm-svn: 203632
2014-03-12 02:26:08 +00:00
Ben Langmuir
dcf73861a5
Add an option -fmodules-validate-system-headers
...
When enabled, always validate the system headers when loading a module.
The end result of this is that when these headers change, we will notice
and rebuild the module.
llvm-svn: 203630
2014-03-12 00:06:17 +00:00
Aaron Ballman
e8d69b7fc9
Allow GNU-style attributes on lambda expressions.
...
llvm-svn: 203628
2014-03-12 00:01:07 +00:00
Saleem Abdulrasool
198034105d
lex: improve include handling on Linux for Windows
...
Normalise the path separator character on non-windows platforms. Although this
would work on Windows as well (most newer versions of Windows support either '/'
or '\' as a path separator character), it could potentially cause problems with
full UNC paths. This change enables the use of the Windows SDK on Linux which
will not accept '\' as a path separator.
llvm-svn: 203614
2014-03-11 22:41:45 +00:00
David Blaikie
29559b1efa
Driver: Support -gmlt as an alias for -gline-tables-only
...
llvm-svn: 203603
2014-03-11 21:05:26 +00:00
Fariborz Jahanian
0c325319cf
Objective-C. Prevent an assertion crash due to buggy code
...
as it can commonly happen. // rdar://16261494
llvm-svn: 203598
2014-03-11 18:56:18 +00:00
Duncan P. N. Exon Smith
38402dc917
PGO: Scale large counters down to 32-bits
...
PGO counters are 64-bit and branch weights are 32-bit. Scale them down
when necessary, instead of just taking the lower 32 bits.
<rdar://problem/16276448>
llvm-svn: 203592
2014-03-11 18:18:10 +00:00
Bob Wilson
3ca7904fea
Remove trailing whitespace introduced in r203028.
...
llvm-svn: 203588
2014-03-11 17:17:16 +00:00
Fariborz Jahanian
bf678e82e1
Objective-C. Diagose use of undefined protocols
...
when a class adopts a protocol that inherits from
undefined protocols. // rdar://16111182
llvm-svn: 203586
2014-03-11 17:10:51 +00:00
Jordan Rose
a6839aaa9b
[analyzer] Check all conditions in a chained if against each other.
...
Like the binary operator check of r201702, this actually checks the
condition of every if in a chain against every other condition, an
O(N^2) operation. In most cases N should be small enough to make this
practical, and checking all cases like this makes it much more likely
to catch a copy-paste error within the same series of branches.
Part of IdenticalExprChecker; patch by Daniel Fahlgren!
llvm-svn: 203585
2014-03-11 16:52:29 +00:00
Aaron Ballman
b5c59f5862
Gracefully handle an attribute specifier following a lambda introducer when the parameter list wasn't present.
...
llvm-svn: 203565
2014-03-11 13:03:15 +00:00
Tim Northover
c83472e0ff
Sema: demote invalid atomic ordering message to warning.
...
Someone could write:
if (0) {
__c11_atomic_load(ptr, memory_order_release);
}
or the equivalent, which is perfectly valid, so we shouldn't outright reject
invalid orderings on purely static grounds.
rdar://problem/16242991
llvm-svn: 203564
2014-03-11 11:35:10 +00:00
Daniel Jasper
8f59ae537c
clang-format: Avoid unnecessary break before lambda return type.
...
Before:
auto aaaaaaaa = [](int i, // break
int j)
-> int {
return fffffffffffffffffffffffffffffffffffffff(i * j);
};
After:
auto aaaaaaaa = [](int i, // break
int j) -> int {
return fffffffffffffffffffffffffffffffffffffff(i * j);
};
llvm-svn: 203562
2014-03-11 11:03:26 +00:00
Tim Northover
e94a34cae2
Sema: produce error when invalid ordering is passed to atomic builtin
...
This is a conservative check, because it's valid for the expression to be
non-constant, and in cases like that we just don't know whether it's valid.
rdar://problem/16242991
llvm-svn: 203561
2014-03-11 10:49:14 +00:00
Tim Northover
0622b3a67a
Update for IR: add a second AtomicOrdering to cmpxchg insts.
...
rdar://problem/15996804
llvm-svn: 203560
2014-03-11 10:49:03 +00:00
Daniel Jasper
a58dd5db29
clang-format: Fix another false positive in the lambda detection.
...
Before:
int i = (*b)[a] -> f();
After:
int i = (*b)[a]->f();
llvm-svn: 203557
2014-03-11 10:03:33 +00:00
Daniel Jasper
d3c7ab975f
clang-format: Fix incorrect lambda recognition exposed by r203452.
...
Before:
int i = a[a][a] -> f();
After:
int i = a[a][a]->f();
llvm-svn: 203556
2014-03-11 09:59:36 +00:00
Daniel Jasper
c580af96fa
clang-format: Detect weird macro lambda usage.
...
Before:
void f() {
MACRO((const AA & a) { return 1; });
}
After:
void f() {
MACRO((const AA &a) { return 1; });
}
llvm-svn: 203551
2014-03-11 09:29:46 +00:00
Richard Smith
52e3fbaee8
Revert C++11ification in r203534 and r203536. Apparently our toolchains aren't
...
ready for this yet.
llvm-svn: 203548
2014-03-11 07:17:35 +00:00
Craig Topper
9140dd2fe7
[C++11] Add 'override' keyword to virtual methods that override their base class.
...
llvm-svn: 203547
2014-03-11 06:50:42 +00:00
Craig Topper
cbce6e9e63
[C++11] Add 'override' keyword to virtual methods that override their base class.
...
llvm-svn: 203543
2014-03-11 06:22:39 +00:00
Argyrios Kyrtzidis
34fad42003
[HeaderSearch] Fix issue where if a headermap entry maps the filename to a framework import (non-absolute path)
...
then we fail to find it if it is re-included later on.
rdar://16285490
llvm-svn: 203542
2014-03-11 06:21:28 +00:00
Craig Topper
e6f17d0cac
De-virtualize a method since it doesn't override anything and isn't overridden itself.
...
llvm-svn: 203538
2014-03-11 04:07:52 +00:00
Craig Topper
3164f33f8f
[C++11] Add 'override' keyword to virtual methods that override their base class.
...
llvm-svn: 203537
2014-03-11 03:39:26 +00:00
Richard Smith
cf91493176
Speculative workaround for apparent libstdc++ bug exposed by r203534.
...
llvm-svn: 203536
2014-03-11 03:30:30 +00:00
Richard Trieu
99e1c9515a
Move the warning about unused relational comparison from -Wunused-value to
...
-Wunused-comparison. Also, newly warn on unused result from overloaded
relational comparisons, now also in -Wunused-comparison.
llvm-svn: 203535
2014-03-11 03:11:08 +00:00
Richard Smith
d91747980a
If a visibility update record is found for a DeclContext after that Decl has
...
already been loaded, apply that update record to the Decl immediately, rather
than adding it to a pending list and never applying it.
llvm-svn: 203534
2014-03-11 03:10:46 +00:00
Richard Smith
723928c7dc
If a module map is found in a relative -I path, convert the filenames within it
...
to absolute paths when building the includes file for the module. Without this,
the module build would fail, because the relative paths we were using are not
necessarily relative to a directory in our include path.
llvm-svn: 203528
2014-03-11 02:02:47 +00:00
Fariborz Jahanian
f322f2fb61
Objective-C IRGen. Fixes several regressions caused by changes made
...
to setting of ObjC linkages. //rdar://16206443
llvm-svn: 203521
2014-03-11 00:25:05 +00:00
DeLesley Hutchins
d1c9b37db9
Thread safety analysis: move smart pointer checks from -Wthread-safety-beta
...
to -Wthread-safety.
llvm-svn: 203510
2014-03-10 23:03:49 +00:00
Anton Yartsev
fe50df6983
[analyzer] Eliminate memory leak in BugReporter::emitReport()
...
llvm-svn: 203507
2014-03-10 22:35:02 +00:00
John McCall
e54d92b0f1
RTTI symbols for visible local types may need weak linkage.
...
Previously, we would always emit them with internal linkage,
but with hidden visibility when the function was hidden, which
is an illegal combination, which could lead LLVM to actually
emit them as strong hidden symbols with hilarious results.
rdar://16265084
llvm-svn: 203503
2014-03-10 22:27:33 +00:00
David Majnemer
938bc1ea84
IRGen: __c11/__atomic compare-and-exchange should respect the standard
...
Summary:
'Expected' should only be modified if the operation fails.
This fixes PR18899.
Reviewers: chandlerc, rsmith, rjmccall
CC: cfe-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D2922
llvm-svn: 203493
2014-03-10 21:35:33 +00:00
Benjamin Kramer
3f755aa7a8
[C++11] Avoid implicit conversion of ArrayRef to std::vector and use move semantics where appropriate.
...
llvm-svn: 203477
2014-03-10 17:55:02 +00:00
Aaron Ballman
be22bcb180
[C++11] Replacing DeclBase iterators specific_attr_begin() and specific_attr_end() with iterator_range specific_attrs(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203474
2014-03-10 17:08:28 +00:00
Samuel Benzaquen
a083935d0a
Add loc() to the dynamic registry.
...
Summary:
Add loc() to the dynamic registry.
Other fixes:
- Fix the polymorphic variant value to accept an exact match, even if
there are other possible conversions.
- Fix specifiesTypeLoc() to not crash on an empty
NestedNameSpecifierLoc.
Reviewers: klimek
CC: cfe-commits, klimek
Differential Revision: http://llvm-reviews.chandlerc.com/D2928
llvm-svn: 203467
2014-03-10 15:40:23 +00:00
Daniel Jasper
84a12e18d3
clang-format: Add spaces between lambdas and comments.
...
Before:
void f() {
bar([]() {}// Does not respect SpacesBeforeTrailingComments
);
}
After:
void f() {
bar([]() {} // Does not respect SpacesBeforeTrailingComments
);
}
This fixes llvm.org/PR19017.
llvm-svn: 203466
2014-03-10 15:06:25 +00:00
Aaron Ballman
62e47c423d
Reverting llvm::distance changes to use std::distance with iterators instead, per post-commit review feedback.
...
Replacing llvm::copy changes with SmallVector range-based construction which is a considerably cleaner approach.
llvm-svn: 203461
2014-03-10 13:43:55 +00:00
Alexander Kornienko
4504f93901
Preserve hanging indent when breaking line comments.
...
Summary:
If we need to break the second line here:
// something: aaaaa aaaaa aaaaaa aaaaa aaaaa
// aaaaa aaaaa aaaaaa aaaaa aaaaa aaaaa
with the patch it will be turned to
// something: aaaaa aaaaa aaaaaa aaaaa aaaaa
// aaaaa aaaaa aaaaaa aaaaa aaaaa
// aaaaa
instead of
// something: aaaaa aaaaa aaaaaa aaaaa aaaaa
// aaaaa aaaaa aaaaaa aaaaa aaaaa
// aaaaa
Reviewers: djasper, klimek
Reviewed By: klimek
CC: cfe-commits, klimek
Differential Revision: http://llvm-reviews.chandlerc.com/D2988
llvm-svn: 203458
2014-03-10 13:14:56 +00:00
Robert Lytton
2c942c64fb
Make __LITTLE_ENDIAN__/__BIG_ENDOAN__ common PredefinedMacros
...
llvm-svn: 203455
2014-03-10 12:06:29 +00:00
Daniel Jasper
81a20787db
clang-format: Add spaces around trailing/lambda return types.
...
Before:
int c = []()->int { return 2; }();
After:
int c = []() -> int { return 2; }();
llvm-svn: 203452
2014-03-10 10:02:02 +00:00
Richard Smith
a108760b33
When a type's definition is instantiated, the definition becomes visible, even
...
if the type's declaration was previously instantiated in an unimported module.
(For an imported type definition, this already worked, because the source
location is set to the location of the definition, but for locally-instantiated
type definitions, it did not.)
llvm-svn: 203425
2014-03-10 00:04:29 +00:00
Bob Wilson
d836d3dde1
Remove trailing whitespace.
...
llvm-svn: 203422
2014-03-09 23:02:27 +00:00
Nick Lewycky
206cc2d9c6
Tab to spaces. No functionality change.
...
llvm-svn: 203417
2014-03-09 17:09:28 +00:00
Logan Chien
8153b368b6
Fix uninitialized value in AttributedTypeLoc.
...
Clang might crash while reading the precompiled headers if
we don't initialize the AttrEnumOperandLoc properly.
This commit fixes the combination of string attribute
operand and enum operand. Besides, this commit also adds
several assertions to avoid unexpected operand kind.
llvm-svn: 203416
2014-03-09 16:21:03 +00:00
Ahmed Charles
bfb6232233
[C++11] Use std::unique_ptr for ownership in a vector.
...
Also change to using range-based for loops. No functional change intended.
llvm-svn: 203396
2014-03-09 12:24:23 +00:00
Ahmed Charles
dfca6f97bc
[C++11] Replace OwningPtr include with <memory>.
...
llvm-svn: 203389
2014-03-09 11:36:40 +00:00
Ahmed Charles
af94d56b56
[C++11] Remove the remaining uses of OwningPtr.
...
Replace OwningArrayPtr with std::unique_ptr<T[]>.
llvm-svn: 203388
2014-03-09 11:34:25 +00:00
Ted Kremenek
2dd810a331
[-Wunreachable-code] Handle Objective-C bool literals in 'isConfigurationValue'.
...
This includes special casing 'YES' and 'NO', which are constants
defined as macros.
llvm-svn: 203380
2014-03-09 08:13:49 +00:00
David Blaikie
dcb72d72ff
Remove uses of SmallString::equals in favor of SmallVectorImpl<char>'s operator==
...
llvm-svn: 203373
2014-03-09 05:18:27 +00:00
Argyrios Kyrtzidis
0098a4bd04
[Sema] Fix assertion hit with #pragma weak.
...
rdar://16264844
llvm-svn: 203372
2014-03-09 05:15:28 +00:00
Argyrios Kyrtzidis
b255ee91a7
[libclang] Don't pad the main buffer for the preamble.
...
Padding does not seem to be useful currently, and it leads to bogus location if an error
points to the end of the file.
rdar://15836513
llvm-svn: 203370
2014-03-09 04:24:57 +00:00
Chandler Carruth
4d01fff492
[C++11] Update Clang for the change to LLVM's Use-Def chain iterators in
...
r203364: what was use_iterator is now user_iterator, and there is
a use_iterator for directly iterating over the uses.
This also switches to use the range-based APIs where appropriate.
llvm-svn: 203365
2014-03-09 03:16:50 +00:00
Ted Kremenek
c980afc578
[-Wunreachable-code] Tweak heuristic for configuration values to include arithmetic operations involving sizeof(), but not raw integers.
...
This case was motivated by a false positive with the
llvm::AlignOf<> specialization in LLVM.
llvm-svn: 203363
2014-03-08 23:20:11 +00:00
Aaron Ballman
b97112e4bd
[C++11] Replacing Decl iterators attr_begin() and attr_end() with iterator_range attrs(). Updating all of the usages of the iterators with range-based for loops.
...
This is a reapplication of r203236 with modifications to the definition of attrs() and following the new style guidelines on auto usage.
llvm-svn: 203362
2014-03-08 22:19:01 +00:00
Argyrios Kyrtzidis
8ed7414e58
[Preprocessor] Only check for -Wunused-macros if the translation unit kind is TU_Complete.
...
llvm-svn: 203360
2014-03-08 21:18:26 +00:00
Aaron Ballman
e8a8baef44
[C++11] Replacing RecordDecl iterators field_begin() and field_end() with iterator_range fields(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203355
2014-03-08 20:12:42 +00:00
Aaron Ballman
23a6dcb365
[C++11] Replacing EnumDecl iterators enumerator_begin() and enumerator_end() with iterator_range enumerators(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203353
2014-03-08 18:45:14 +00:00
Aaron Ballman
43027eb093
Reapplying r203299 in a slightly different manner. Now range APIs are implemented in terms of iterator APIs.
...
llvm-svn: 203351
2014-03-08 18:30:40 +00:00
Ted Kremenek
efea63450b
[-Wunreachabe-code] Don't warn about unreachable destructors for temporaries.
...
This can possibly be refined later, but right now the experience
is so incomprehensible for a user to understand what is going on
this isn't a useful warning.
llvm-svn: 203336
2014-03-08 02:22:32 +00:00
Ted Kremenek
fcc1417fad
Fix CFG bug where the 'isTemporaryDtorsBranch' bit was silently lost for terminators.
...
llvm-svn: 203335
2014-03-08 02:22:29 +00:00
Ted Kremenek
ff909f907c
[CFG] Record would-be successor for noreturn destructor.
...
llvm-svn: 203334
2014-03-08 02:22:25 +00:00
Ted Kremenek
04bfbeea04
[-Wunreachable-code] Handle 'return' with no argument dominated by 'noreturn' function.
...
llvm-svn: 203333
2014-03-08 02:22:23 +00:00
Richard Smith
9bca298f6d
Module [extern_c] attribute: inherit to submodules, don't write 'extern "C"'
...
blocks when building in C mode, and serialize and deserialize the attribute.
llvm-svn: 203317
2014-03-08 00:03:56 +00:00
Aaron Ballman
da634f1dee
In my tests, I'm finding that declaring iterators in terms of ranges can sometimes have dangerous side-effects where the range temporary is destroyed, taking the underlying iterators out with it.
...
This changes the iterators so that they are no longer implemented in terms of ranges (so it's a very partial revert of the existing rangification efforts).
llvm-svn: 203299
2014-03-07 22:17:20 +00:00
Benjamin Kramer
4cadf292a5
[C++11] Revert uses of lambdas with array_pod_sort.
...
Looks like GCC implements the lambda->function pointer conversion differently.
llvm-svn: 203293
2014-03-07 21:51:58 +00:00
Benjamin Kramer
15ae783e14
[C++11] Convert sort predicates into lambdas.
...
No functionality change.
llvm-svn: 203289
2014-03-07 21:35:40 +00:00
Ted Kremenek
94d1617a1f
[-Wunreachable-code] Treat constant globals as configuration values in unreachable code heuristics.
...
This one could possibly be refined even further; e.g. looking
at the initializer and see if it is truly a configuration value.
llvm-svn: 203283
2014-03-07 20:51:13 +00:00
Ted Kremenek
91e45e056b
Zap another dead 'break' statement.
...
llvm-svn: 203282
2014-03-07 20:51:10 +00:00
Ahmed Charles
b89843299a
Replace OwningPtr with std::unique_ptr.
...
This compiles cleanly with lldb/lld/clang-tools-extra/llvm.
llvm-svn: 203279
2014-03-07 20:03:18 +00:00
Aaron Ballman
629afaefe0
[C++11] Replacing DeclBase iterators decls_begin() and decls_end() with iterator_range decls(). The same is true for the noload versions of these APIs. Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203278
2014-03-07 19:56:05 +00:00
Ahmed Charles
d72a5f103d
Replace OwningPtr::isValid() with conversion to bool.
...
This is a precursor to moving to std::unique_ptr.
llvm-svn: 203277
2014-03-07 19:51:06 +00:00
Ahmed Charles
9a16beb8bc
Change OwningPtr::take() to OwningPtr::release().
...
This is a precursor to moving to std::unique_ptr.
llvm-svn: 203275
2014-03-07 19:33:25 +00:00
Ted Kremenek
090a273b55
Remove dead return and simplify code.
...
llvm-svn: 203266
2014-03-07 18:53:05 +00:00
Aaron Ballman
29c9460d3e
Renaming the chains() ranged iterator to chain() per suggestion by Richard Smith.
...
llvm-svn: 203262
2014-03-07 18:36:15 +00:00
Aaron Ballman
1391608234
[C++11] Replacing IndirectFieldDecl iterators chain_begin() and chain_end() with iterator_range chains(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203261
2014-03-07 18:11:58 +00:00
Aaron Ballman
43b68bebe7
[C++11] Replacing ObjCMethodDecl iterators param_begin() and param_end() with iterator_range params(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203255
2014-03-07 17:50:17 +00:00
Aaron Ballman
b2b8b1dc66
[C++11] Replacing BlockDecl iterators param_begin() and param_end() with iterator_range params(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203250
2014-03-07 16:09:59 +00:00
Aaron Ballman
f6bf62e2d0
[C++11] Replacing FunctionDecl iterators param_begin() and param_end() with iterator_range params(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203248
2014-03-07 15:12:56 +00:00
Benjamin Kramer
ed2f476b20
[C++11] Replace LLVM-style type traits with C++11 standard ones.
...
No functionality change.
llvm-svn: 203241
2014-03-07 14:30:23 +00:00
Aaron Ballman
b105e49f28
[C++11] Replacing iterators ddiag_begin() and ddiag_end() with iterator_range ddiags(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203240
2014-03-07 14:09:15 +00:00
Aaron Ballman
63ab760ebe
[C++11] Updating getUsingDirectives to use iterator_range instead of a std::pair.
...
llvm-svn: 203239
2014-03-07 13:44:44 +00:00
Aaron Ballman
7dce1a840c
Fully reverting r203236 -- it seems the only bots that are happy are the MSVC bots.
...
llvm-svn: 203237
2014-03-07 13:13:38 +00:00
Aaron Ballman
690829696c
[C++11] Replacing iterators attr_begin() and attr_end() with iterator_range attrs(). Updating all of the usages of the iterators with range-based for loops.
...
llvm-svn: 203236
2014-03-07 12:50:00 +00:00
Alexey Bataev
d3db6acf7e
[OPENMP] Fix for threadprivate construct instantiatiation.
...
llvm-svn: 203225
2014-03-07 09:46:29 +00:00