Vedant Kumar [Wed, 26 Apr 2017 21:05:44 +0000 (21:05 +0000)]
Revert "Revert "PPCallbacks::MacroUndefined, change signature and add test.""
This reverts commit r301469. It isn't needed with r301470, which fixes
the API break introduced in the original commit.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301472
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Wed, 26 Apr 2017 20:58:21 +0000 (20:58 +0000)]
Fix API breaks
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301470
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Wed, 26 Apr 2017 20:58:19 +0000 (20:58 +0000)]
Revert "PPCallbacks::MacroUndefined, change signature and add test."
This reverts commit r301449. It breaks the build with:
MacroPPCallbacks.h:114:50: error: non-virtual member function marked 'override' hides virtual member function
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301469
91177308-0d34-0410-b5e6-
96231b3b80d8
Bruno Cardoso Lopes [Wed, 26 Apr 2017 20:13:45 +0000 (20:13 +0000)]
[Modules] Fix a crash-on-invalid with overloaded functions
Do not add an overload if the function doesn't have a prototype; this
can happen if, for instance, a misplaced/malformed call site is
considered like a declaration for recovery purposes.
rdar://problem/
31306325
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301453
91177308-0d34-0410-b5e6-
96231b3b80d8
Frederich Munch [Wed, 26 Apr 2017 19:47:31 +0000 (19:47 +0000)]
PPCallbacks::MacroUndefined, change signature and add test.
Summary:
The PPCallbacks::MacroUndefined callback is currently insufficient for clients that need to track the MacroDirectives.
This patch adds an additional argument to PPCallbacks::MacroUndefined that is the undef MacroDirective.
Reviewers: bruno, manmanren
Reviewed By: bruno
Subscribers: nemanjai, cfe-commits
Differential Revision: https://reviews.llvm.org/D29923
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301449
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Wed, 26 Apr 2017 18:57:40 +0000 (18:57 +0000)]
Refactor frontend InputKind to prepare for treating module maps as a distinct kind of input.
No functionality change intended.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301442
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Wed, 26 Apr 2017 16:37:51 +0000 (16:37 +0000)]
Revert "Update to LLVM's use of WeakTrackingVH; NFC"
This reverts commit r301427.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301430
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Wed, 26 Apr 2017 16:22:36 +0000 (16:22 +0000)]
Update to LLVM's use of WeakTrackingVH; NFC
Summary: Depends on D32266
Reviewers: davide, dblaikie
Subscribers: mcrosier, llvm-commits
Differential Revision: https://reviews.llvm.org/D32270
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301427
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Wed, 26 Apr 2017 15:40:21 +0000 (15:40 +0000)]
[Sema] Avoid using a null type pointer (fixes PR32750)
isMicrosoftMissingTypename() uses a Type pointer without first checking
that it's non-null. PR32750 reports a case where the pointer is in fact
null. This patch adds in a defensive check and a regression test.
Differential Revision: https://reviews.llvm.org/D32519
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301420
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Bataev [Wed, 26 Apr 2017 15:30:36 +0000 (15:30 +0000)]
[OPENMP] Fix failing test.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301417
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Bataev [Wed, 26 Apr 2017 15:06:24 +0000 (15:06 +0000)]
[OPENMP] Fix handling of OpenMP code during template instantiation.
If some function template is instantiated during handling of OpenMP
code, currently it may cause crash of compiler because of trying of
capturing variables in non-capturing function scopes. Patch fixes this
bug.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301416
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Bataev [Wed, 26 Apr 2017 14:24:21 +0000 (14:24 +0000)]
[OPENMP] Move handling of threadprivate vars from the stack, NFC.
Threadprivate variables do no need to be handled in the Stack of all
directives, moving it out for better performance and memory.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301410
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Lorenz [Wed, 26 Apr 2017 14:20:02 +0000 (14:20 +0000)]
-Wunguarded-availability should support if (@available) checks in top-level
blocks and lambdas
Prior to this commit Clang emitted the old "partial availability" warning for
expressions that referred to declarations that were not yet introduced in
blocks and lambdas that were not in a function/method. This commit ensures that
top-level blocks and lambdas use the new unguarded availability checks.
rdar://
31835952
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301409
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Lorenz [Wed, 26 Apr 2017 13:09:28 +0000 (13:09 +0000)]
-Wdocumentation should not check the @returns command for Objective-C
function/block pointer properties
The commit r300981 allowed @param/@return commands for function/block
pointer property declarations. This meant that -Wdocumentation started warning
about @return that was used to document properties whose function/block type
returned void. However, prior to that commit, we allowed @return for all
property declarations, because it can be used to document the value that's
returned by the property getter. This commit restores the previous behaviour:
now the @return command can be used to document all properties without warnings.
rdar://
24978538
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301402
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Lorenz [Wed, 26 Apr 2017 12:46:27 +0000 (12:46 +0000)]
[AST] Look through attribute type locs when searching for function type
loc
Prior to this commit -Wdocumentation crashed when checking the @returns command
for declarations whose function/block pointer type included an attribute like
_Nullable.
rdar://
31818195
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301400
91177308-0d34-0410-b5e6-
96231b3b80d8
Martin Probst [Wed, 26 Apr 2017 12:36:49 +0000 (12:36 +0000)]
clang-format: [JS/Java] ignore Objective-C constructs in JS & Java.
Summary:
Java and JavaScript support annotations and decorators, respectively, that use a leading "@" token. clang-format currently detects this as an Objective-C construct and applies special formatting, for example no whitespace around "=" operators. This change disables the distinction for Java and JavaScript, which leads to normal formatting of single line annotated and initialized properties.
Before:
class X {
@foo() bar=false;
}
After:
class X {
@foo() bar = false;
}
Reviewers: djasper, bkramer
Subscribers: klimek, cfe-commits
Differential Revision: https://reviews.llvm.org/D32532
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301399
91177308-0d34-0410-b5e6-
96231b3b80d8
Martin Probst [Wed, 26 Apr 2017 12:34:18 +0000 (12:34 +0000)]
formatting
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301398
91177308-0d34-0410-b5e6-
96231b3b80d8
Martin Probst [Wed, 26 Apr 2017 12:34:15 +0000 (12:34 +0000)]
clang-format: [JS] prevent wraps before class members.
Summary: In JavaScript/TypeScript, class member definitions that use modifiers can be subject to Automatic Semicolon Insertion (ASI). For example, "class X { get \n foo }" defines a property called "get" and a property called "foo", both with no type annotation. This change prevents wrapping after the modifier keywords (visibility modifiers, static, get and set) to prevent accidental ASI.
Reviewers: djasper, bkramer
Subscribers: klimek, cfe-commits
Differential Revision: https://reviews.llvm.org/D32531
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301397
91177308-0d34-0410-b5e6-
96231b3b80d8
Leslie Zhai [Wed, 26 Apr 2017 05:33:14 +0000 (05:33 +0000)]
[analyzer] Teach the MallocChecker about Glib API for two arguments
Reviewers: zaks.anna, NoQ, danielmarjamaki
Reviewed By: zaks.anna, NoQ, danielmarjamaki
Subscribers: cfe-commits, kalev, pwithnall
Differential Revision: https://reviews.llvm.org/D30771
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301384
91177308-0d34-0410-b5e6-
96231b3b80d8
Bruno Cardoso Lopes [Wed, 26 Apr 2017 05:06:20 +0000 (05:06 +0000)]
[Modules][ObjC] Check definition from canonical decl on designated initializers
Use definition from canonical decl when checking for designated
initializers. This is necessary since deserialization of a interface
might reuse the definition from the canonical one (see r281119).
rdar://problem/
29360655
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301382
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Wed, 26 Apr 2017 02:17:21 +0000 (02:17 +0000)]
[ubsan] Skip alignment checks on allocas with known alignment
It's possible to determine the alignment of an alloca at compile-time.
Use this information to skip emitting some runtime alignment checks.
Testing: check-clang, check-ubsan.
This significantly reduces the amount of alignment checks we emit when
compiling X86ISelLowering.cpp. Here are the numbers from patched/unpatched
clangs based on r301361.
------------------------------------------
| Setup | # of alignment checks |
------------------------------------------
| unpatched, -O0 | 47195 |
| patched, -O0 | 30876 | (-34.6%)
------------------------------------------
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301377
91177308-0d34-0410-b5e6-
96231b3b80d8
Evgeniy Stepanov [Wed, 26 Apr 2017 00:51:06 +0000 (00:51 +0000)]
[asan] Unconditionally enable GC of globals on COFF.
This change restores pre-r301225 behavior, where linker GC compatible global
instrumentation was used on COFF targets disregarding -f(no-)data-sections and/or
/Gw flags.
This instrumentation puts each global in a COMDAT with an ASan descriptor for that global.
It effectively enables -fdata-sections, but limits it to ASan-instrumented globals.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301374
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Tue, 25 Apr 2017 21:31:55 +0000 (21:31 +0000)]
[Hexagon] Handle -O4 when checking optimization level
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301364
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Tue, 25 Apr 2017 20:51:51 +0000 (20:51 +0000)]
[Hexagon] Set -ffp-contract=fast at -O3 unless explicitly specified
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301361
91177308-0d34-0410-b5e6-
96231b3b80d8
Carlo Bertolli [Tue, 25 Apr 2017 18:59:37 +0000 (18:59 +0000)]
Minor fix for distribute_parallel_for_num_threads_codegen on AARCH64
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301348
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Tue, 25 Apr 2017 18:04:31 +0000 (18:04 +0000)]
[PGO/tests] Update comment to reflect reality.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301344
91177308-0d34-0410-b5e6-
96231b3b80d8
Carlo Bertolli [Tue, 25 Apr 2017 17:52:12 +0000 (17:52 +0000)]
Recommit of
[OpenMP] Initial implementation of code generation for pragma 'distribute parallel for' on host
https://reviews.llvm.org/D29508
This patch makes the following additions:
It abstracts away loop bound generation code from procedures associated with pragma 'for' and loops in general, in such a way that the same procedures can be used for 'distribute parallel for' without the need for a full re-implementation.
It implements code generation for 'distribute parallel for' and adds regression tests. It includes tests for clauses.
It is important to notice that most of the clauses are implemented as part of existing procedures. For instance, firstprivate is already implemented for 'distribute' and 'for' as separate pragmas. As the implementation of 'distribute parallel for' is based on the same procedures, then we automatically obtain implementation for such clauses without the need to add new code. However, this requires regression tests that verify correctness of produced code.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301340
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Tue, 25 Apr 2017 17:48:10 +0000 (17:48 +0000)]
[PGO] Update test now that we don't call IndirectCallPromotion.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301339
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Lorenz [Tue, 25 Apr 2017 16:59:07 +0000 (16:59 +0000)]
[libclang] Check for a record declaration before a template specialization
Fixes PR32539.
Patch by Emilio Cobos Álvarez!
Differential Revision: https://reviews.llvm.org/D32348
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301328
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Lorenz [Tue, 25 Apr 2017 15:13:42 +0000 (15:13 +0000)]
[index] Index type source info for class specializations
rdar://
31758344
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301315
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Lorenz [Tue, 25 Apr 2017 14:22:29 +0000 (14:22 +0000)]
[index] Record the 'SpecializationOf' relation for function specializations
rdar://
31603531
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301310
91177308-0d34-0410-b5e6-
96231b3b80d8
Ismail Donmez [Tue, 25 Apr 2017 11:24:14 +0000 (11:24 +0000)]
Fix fuzzer.c test on platforms where CLANG_DEFAULT_CXX_STDLIB is libc++
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301302
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Tue, 25 Apr 2017 00:40:40 +0000 (00:40 +0000)]
Placate MSVC's narrowing conversion unhappiness.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301285
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Mon, 24 Apr 2017 23:12:30 +0000 (23:12 +0000)]
[modules ts] Diagnose 'export' declarations outside of a module interface.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301271
91177308-0d34-0410-b5e6-
96231b3b80d8
Bruno Cardoso Lopes [Mon, 24 Apr 2017 21:58:13 +0000 (21:58 +0000)]
[Modules] Fix test to wipe out the cache before using it
This should appease bots:
http://green.lab.llvm.org/green/job/clang-stage1-cmake-RA-incremental_check/35914
rdar://problem/
31796737
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301261
91177308-0d34-0410-b5e6-
96231b3b80d8
Artem Dergachev [Mon, 24 Apr 2017 20:55:07 +0000 (20:55 +0000)]
[analyzer] Improve subscripting null arrays for catching null dereferences.
Array-to-pointer cast now works correctly when the pointer to the array
is concrete, eg. null, which allows further symbolic calculations involving
such values.
Inlined defensive checks are now detected correctly when the resulting null
symbol is being array-subscripted before dereference.
Differential Revision: https://reviews.llvm.org/D32291
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301251
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Mon, 24 Apr 2017 20:54:36 +0000 (20:54 +0000)]
Remove a dead field. NFC.
Suggested by Adam Folwarczny!
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301250
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Mon, 24 Apr 2017 20:52:04 +0000 (20:52 +0000)]
[Coverage] Avoid null deref in skipRegionMappingForDecl (fixes PR32761)
Patch by Adam Folwarczny!
Differential Revision: https://reviews.llvm.org/D32406
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301249
91177308-0d34-0410-b5e6-
96231b3b80d8
George Karpenkov [Mon, 24 Apr 2017 20:38:56 +0000 (20:38 +0000)]
Specify a target explicitly in libfuzzer driver flag test
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301246
91177308-0d34-0410-b5e6-
96231b3b80d8
Carlo Bertolli [Mon, 24 Apr 2017 19:50:35 +0000 (19:50 +0000)]
Revert r301223
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301233
91177308-0d34-0410-b5e6-
96231b3b80d8
Evgeniy Stepanov [Mon, 24 Apr 2017 19:34:12 +0000 (19:34 +0000)]
[asan] Disable ASan global-GC depending on the target and compiler flags.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301225
91177308-0d34-0410-b5e6-
96231b3b80d8
Artem Dergachev [Mon, 24 Apr 2017 19:30:33 +0000 (19:30 +0000)]
[analyzer] Improve suppression for inlined defensive checks before operator &.
Null dereferences are suppressed if the lvalue was constrained to 0 for the
first time inside a sub-function that was inlined during analysis, because
such constraint is a valid defensive check that does not, by itself,
indicate that null pointer case is anyhow special for the caller.
If further operations on the lvalue are performed, the symbolic lvalue is
collapsed to concrete null pointer, and we need to track where does the null
pointer come from.
Improve such tracking for lvalue operations involving operator &.
rdar://problem/
27876009
Differential Revision: https://reviews.llvm.org/D31982
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301224
91177308-0d34-0410-b5e6-
96231b3b80d8
Carlo Bertolli [Mon, 24 Apr 2017 19:26:11 +0000 (19:26 +0000)]
[OpenMP] Initial implementation of code generation for pragma 'distribute parallel for' on host
https://reviews.llvm.org/D29508
This patch makes the following additions:
1. It abstracts away loop bound generation code from procedures associated with pragma 'for' and loops in general, in such a way that the same procedures can be used for 'distribute parallel for' without the need for a full re-implementation.
2. It implements code generation for 'distribute parallel for' and adds regression tests. It includes tests for clauses.
It is important to notice that most of the clauses are implemented as part of existing procedures. For instance, firstprivate is already implemented for 'distribute' and 'for' as separate pragmas. As the implementation of 'distribute parallel for' is based on the same procedures, then we automatically obtain implementation for such clauses without the need to add new code. However, this requires regression tests that verify correctness of produced code.
Looking forward to comments.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301223
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Mon, 24 Apr 2017 18:41:00 +0000 (18:41 +0000)]
Pragma: Fix DebugOverflowStack() resulting in endless loop.
Drive-by fix (noticed while working on https://reviews.llvm.org/D32205):
DebugOverflowStack() is supposed to provoke a stack overflow, however
LLVM was smart enough to use the red-zone and fold the load into a tail
jump on x86_64 optimizing this to an endless loop instead of a stack
overflow.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301218
91177308-0d34-0410-b5e6-
96231b3b80d8
George Karpenkov [Mon, 24 Apr 2017 18:36:31 +0000 (18:36 +0000)]
Remove erroneous driver test for -fsanitize=fuzzer flag
libfuzzer is not available on all platforms, and hence we can not always
rely that it was compiled.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301216
91177308-0d34-0410-b5e6-
96231b3b80d8
George Karpenkov [Mon, 24 Apr 2017 18:23:24 +0000 (18:23 +0000)]
Flag -fsanitize=fuzzer to enable libfuzzer
Previously, adding libfuzzer to a project was a multi-step procedure,
involving libfuzzer compilation, linking the library, and specifying
coverage flags.
With this change,libfuzzer can be enabled by adding a single
-fsanitize=fuzzer flag instead.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301212
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 24 Apr 2017 17:39:35 +0000 (17:39 +0000)]
[Docs] Correct the path to the clang-format-diff.py script to include the clang-format directory.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301202
91177308-0d34-0410-b5e6-
96231b3b80d8
Argyrios Kyrtzidis [Mon, 24 Apr 2017 14:52:00 +0000 (14:52 +0000)]
[index] If the 'external_source_symbol' attribute indicates 'Swift' as the language then report it accordingly
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301183
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Jasper [Mon, 24 Apr 2017 14:28:49 +0000 (14:28 +0000)]
clang-format: Fix bad corner case in formatting of function types.
Before:
std::function<
LoooooooooooongTemplatedType<SomeType>*(
LooooooooooooooooooooongType
type)>
function;
After:
std::function<
LoooooooooooongTemplatedType<
SomeType>*(
LooooooooooooooooongType type)>
function;
clang-format generally avoids having lines like "SomeType>*(" as they
lead to parameter lists that don't belong together to be aligned. However, in
case it is better than the alternative, which can even be violating the column
limit.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301182
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Lorenz [Mon, 24 Apr 2017 14:04:58 +0000 (14:04 +0000)]
[index] The relation between the declarations in template specializations
that 'override' declarations in the base template should be recorded
This can be used for improved "go to definition" feature in Xcode.
rdar://
31604739
Differential Revision: https://reviews.llvm.org/D32020
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301180
91177308-0d34-0410-b5e6-
96231b3b80d8
Piotr Padlewski [Mon, 24 Apr 2017 12:58:43 +0000 (12:58 +0000)]
[Devirtualization] Emit invariant.group loads with empty group md
Summary:
As discussed here
http://lists.llvm.org/pipermail/llvm-dev/2017-January/109332.html
having different groups doesn't solve the problem entirly.
Reviewers: rjmccall, rsmith
Subscribers: amharc, cfe-commits
Differential Revision: https://reviews.llvm.org/D32110
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301178
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Sun, 23 Apr 2017 20:46:58 +0000 (20:46 +0000)]
Fix typo in comment.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301138
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Sat, 22 Apr 2017 00:47:53 +0000 (00:47 +0000)]
Rearrange some Modules TS testcases into test/CXX/modules-ts.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301066
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Fri, 21 Apr 2017 23:35:36 +0000 (23:35 +0000)]
Move Split DWARF handling to an MC option/command line argument rather than using metadata
Since Split DWARF needs to name the actual .dwo file that is generated,
it can't be known at the time the llvm::Module is produced as it may be
merged with other Modules before the object is generated and that object
may be generated with any name.
By passing the Split DWARF file name when LLVM is producing object code
the .dwo file name in the object file can match correctly.
The support for Split DWARF for implicit modules remains the same -
using metadata to store the dwo name and dwo id so that potentially
multiple skeleton CUs referring to different dwo files can be generated
from one llvm::Module.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301063
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Fri, 21 Apr 2017 22:39:18 +0000 (22:39 +0000)]
P0629R0: Switch to latest proposal for distinguishing module interface from implementation.
This switches from the prototype syntax in P0273R0 ('module' and 'module
implementation') to the consensus syntax 'export module' and 'module'.
In passing, drop the "module declaration must be first" enforcement, since EWG
seems to have changed its mind on that.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301056
91177308-0d34-0410-b5e6-
96231b3b80d8
Argyrios Kyrtzidis [Fri, 21 Apr 2017 22:27:06 +0000 (22:27 +0000)]
[index] Take into account the category's external_symbol attr for namespacing its methods
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301051
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Fri, 21 Apr 2017 20:55:00 +0000 (20:55 +0000)]
Add comments to the diagnostic kinds in Diagnostic.td.
https://reviews.llvm.org/D32371
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301039
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Fri, 21 Apr 2017 20:12:26 +0000 (20:12 +0000)]
[ms] Give -Wmicrosoft-enum-forward-reference a chance to fire in clang-cl, PR32736
clang-cl sets MicrosoftCompat. In that mode, we always give enums a fixed
underlying type, and for enums with fixed underlying type we never enter the
block that tries to emit ext_ms_forward_ref_enum. Fix this by requiring an
explicit underlying type when we're skipping this diagnostic.
We had a test for this warning, but it only ran in C++98 mode. clang-cl always
enables -std=c++14, so MicrosoftCompatibiliy-cxx98.cpp is a fairly useless
test. Fold it into MicrosoftCompatibility.cpp -- that way, the test checks if
-Wmicrosoft-enum-forward-reference can fire in clang-cl builds.
https://reviews.llvm.org/D32369
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301032
91177308-0d34-0410-b5e6-
96231b3b80d8
Anastasia Stulova [Fri, 21 Apr 2017 15:13:24 +0000 (15:13 +0000)]
[OpenCL] Fix semantic check of ndrange_t for device_side_enqueue.
Check unqualified type for ndrange argument in device_side_enqueue so
device_side_enqueue accept const and volatile qualified ndranges.
Differential Revision: https://reviews.llvm.org/D31458
Patch by Dmitry Borisenkov!
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300988
91177308-0d34-0410-b5e6-
96231b3b80d8
Krasimir Georgiev [Fri, 21 Apr 2017 14:35:20 +0000 (14:35 +0000)]
[clang-format] Replace IncompleteFormat by a struct with Line
Summary: This patch replaces the boolean IncompleteFormat that is used to notify the client if an unrecoverable syntax error occurred by a struct that also contains a line number.
Reviewers: djasper
Reviewed By: djasper
Subscribers: cfe-commits, klimek
Differential Revision: https://reviews.llvm.org/D32298
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300985
91177308-0d34-0410-b5e6-
96231b3b80d8
Krasimir Georgiev [Fri, 21 Apr 2017 14:30:01 +0000 (14:30 +0000)]
[clang-format] Clang-tidy cleanup of NamespaceEndCommentFixerTest.cpp, NFC
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300983
91177308-0d34-0410-b5e6-
96231b3b80d8
Krasimir Georgiev [Fri, 21 Apr 2017 14:21:21 +0000 (14:21 +0000)]
[clang-format] Clang-tidy cleanup of CleanupTest.cpp, NFC
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300982
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Lorenz [Fri, 21 Apr 2017 14:17:49 +0000 (14:17 +0000)]
[PR32667] -Wdocumentation should allow @param/@returns for fields/variables
that have a function/block pointer type
This commit improves the -Wdocumentation warning by making sure that @param and
@returns commands won't trigger warnings when used for fields, variables,
or properties whose type is a function/block pointer type. The
function/block pointer type must be specified directly with the declaration,
and when a typedef is used the warning is still emitted.
In the future we might also want to handle the std::function type as well.
rdar://
24978538
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300981
91177308-0d34-0410-b5e6-
96231b3b80d8
Ismail Donmez [Fri, 21 Apr 2017 12:26:43 +0000 (12:26 +0000)]
Add support for openSUSE ARM Triples
Summary: Add support for armv6hl-suse-linux-gnueabi and armv7hl-suse-linux-gnueabi triples used by openSUSE/SUSE.
Reviewers: cfe-commits, rovka, compnerd, rengolin
Reviewed By: rengolin
Subscribers: aemerson, rengolin, bkramer, chandlerc
Differential Revision: https://reviews.llvm.org/D32347
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300969
91177308-0d34-0410-b5e6-
96231b3b80d8
Argyrios Kyrtzidis [Fri, 21 Apr 2017 05:42:46 +0000 (05:42 +0000)]
[index] Take advantage of 'external_source_symbol' attribute for indexing purposes
- Ignore decls marked as 'generated_declaration'
- Include the 'defined_in' in the USR for additional namespacing
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300949
91177308-0d34-0410-b5e6-
96231b3b80d8
Argyrios Kyrtzidis [Fri, 21 Apr 2017 05:42:40 +0000 (05:42 +0000)]
[index] For 'transparent' tag typedefs, ignore their tag reference
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300948
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Fri, 21 Apr 2017 01:15:13 +0000 (01:15 +0000)]
[modules] Properly look up the owning module for an instantiation of a merged template.
When looking for the template instantiation pattern of a templated entity,
consistently select the definition of the pattern if there is one. This means
we'll pick the same owning module when we start instantiating a template that
we'll later pick when determining which modules are visible during that
instantiation.
This reinstates r300650, reverted in r300659, with a fix for a regression
reported by Chandler after commit.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300938
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexander Shaposhnikov [Fri, 21 Apr 2017 01:05:26 +0000 (01:05 +0000)]
[analyzer] Fix assert in ExprEngine::processSwitch
This diff replaces getTypeSize(CondE->getType()))
with getIntWidth(CondE->getType())) in ExprEngine::processSwitch.
These calls are not equivalent for bool, see ASTContext.cpp
Add a test case.
Test plan:
make check-clang-analysis
make check-clang
Differential revision: https://reviews.llvm.org/D32328
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300936
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Fiselier [Thu, 20 Apr 2017 23:07:38 +0000 (23:07 +0000)]
Use __CLANG_ATOMIC_TYPE_LOCK_FREE macros in `stdatomic.h`
Summary: This patch makes the header `stdatomic.h` work when `-fms-compatibility` is specified.
Reviewers: rsmith
Reviewed By: rsmith
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D32322
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300919
91177308-0d34-0410-b5e6-
96231b3b80d8
Petr Hosek [Thu, 20 Apr 2017 23:06:53 +0000 (23:06 +0000)]
[CMake] Enable ARM target in Fuchsia toolchain
This is still used by some users of Fuchsia toolchain. Also include
llc and opt which is useful for development and testing.
Differential Revision: https://reviews.llvm.org/D32231
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300917
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Fiselier [Thu, 20 Apr 2017 22:53:57 +0000 (22:53 +0000)]
Add __CLANG_ATOMIC_<TYPE>_LOCK_FREE macros for use in MSVC compatibility mode.
Summary:
Libc++ currently implements the `ATOMIC_<TYPE>_LOCK_FREE` macros using the `__GCC_ATOMIC_<TYPE>_LOCK_FREE` macros. However these are not available when MSVC compatibility is enabled even though C11 `_Atomic` is. This prevents libc++ from correctly implementing `ATOMIC_<TYPE>_LOCK_FREE`.
This patch adds an alternative spelling `__CLANG_ATOMIC_<TYPE>_LOCK_FREE` that is enabled with `-fms-compatibility`.
Reviewers: rsmith, aaron.ballman, majnemer, zturner, compnerd, jfb, rnk
Reviewed By: rsmith
Subscribers: BillyONeal, smeenai, jfb, cfe-commits, dschuff
Differential Revision: https://reviews.llvm.org/D32265
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300914
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Thu, 20 Apr 2017 22:23:10 +0000 (22:23 +0000)]
Sema: protect against ObjC++ typo-correction failure
ObjC++ has two different types of "pointer" types (ObjCClassPointerType
and PointerType). Both can be indirected through. However, the former
is not a member expression. Ensure that we do not try to rebuild the
MRE in that case.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300909
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Thu, 20 Apr 2017 22:23:07 +0000 (22:23 +0000)]
Parse: cleanup some bleeding whitespace
Clean up some bleeding whitespace that I noticed. NFC
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300908
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Fiselier [Thu, 20 Apr 2017 21:23:58 +0000 (21:23 +0000)]
Fix Python 2 vs 3 incompatability with dict.items() vs iteritems()
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300895
91177308-0d34-0410-b5e6-
96231b3b80d8
Francis Ricci [Thu, 20 Apr 2017 21:11:51 +0000 (21:11 +0000)]
Enable leak sanitizer builds for darwin
Summary:
Support for leak sanitizer on darwin has been added to
compiler-rt, this patch adds compiler support.
Reviewers: dexonsmith, compnerd
Subscribers: alekseyshl, kubamracek, cfe-commits
Differential Revision: https://reviews.llvm.org/D32192
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300894
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Fiselier [Thu, 20 Apr 2017 21:05:58 +0000 (21:05 +0000)]
Begin making git-clang-format python3 compatible.
This patch fixes most of the python3 incompatabilities
within git-clang-format while keeping the script python2 compatible.
There is still one remaining incompatability that prevents using Python3
which is the `str` vs `byte` type change. I plan to put those fixes
up for review separately.
This patch contains fixes for the following incompatabilities:
1) Use the new style Python3 `print` function. This requires importing
__future__.print_function.
2) Fix incompatability between the Python3 octal prefix and the
octal prefix Git uses.
3) Replace use of dict.iteritems() with dict.viewitems() because iteritems()
has been removed in Python3. viewitems() reviews python 2.7 but that is
also what the script is documented as requiring.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300891
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Thu, 20 Apr 2017 19:06:24 +0000 (19:06 +0000)]
[Driver] Add a missing -no-canonical-prefixes to test.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300873
91177308-0d34-0410-b5e6-
96231b3b80d8
Adam Nemet [Thu, 20 Apr 2017 17:09:35 +0000 (17:09 +0000)]
Don't pass FPOpFusion::Strict to the backend
This restores the behavior prior to D31167 where the code-gen default was
FPC_On which mapped to FPOpFusion::Standard. After merging the FE
state (on/off) and the code-gen state (on/fast/off), the default became off to
match the front-end.
In other words, the front-end controls when to fuse along the language
standards and the backend shouldn't override this by splitting fused
intrinsics as FPOpFusion::Strict would imply.
Differential Revision: https://reviews.llvm.org/D32301
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300858
91177308-0d34-0410-b5e6-
96231b3b80d8
Krasimir Georgiev [Thu, 20 Apr 2017 13:37:27 +0000 (13:37 +0000)]
Delete unused IncompleteFormat variable, NFCi.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300841
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Lorenz [Thu, 20 Apr 2017 10:43:22 +0000 (10:43 +0000)]
[index] Record class template specializations using a new 'SpecializationOf'
relationship
rdar://
31603531
Differential Revision: https://reviews.llvm.org/D32010
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300832
91177308-0d34-0410-b5e6-
96231b3b80d8
Jonathan Coe [Thu, 20 Apr 2017 10:11:01 +0000 (10:11 +0000)]
Add Python 3 support to clang.cindex
Summary:
Introduce an interop string to convert from unicode to c-strings where needed.
Add missing conversions from _CXString to strings in function registrations.
Explicitly evaluate lists where Python 3's lazy iterators would not otherwise do so.
This is an improvement upon the reverted change proposed in https://reviews.llvm.org/D26082
Reviewers: compnerd, skalinichev, modocache, MathieuDuponchelle
Reviewed By: compnerd
Subscribers: cfe-commits
Tags: #clang-c
Differential Revision: https://reviews.llvm.org/D31568
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300829
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Lorenz [Thu, 20 Apr 2017 09:35:02 +0000 (09:35 +0000)]
Add #pragma clang attribute support to the availability attribute
rdar://
31707804
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300826
91177308-0d34-0410-b5e6-
96231b3b80d8
Vassil Vassilev [Thu, 20 Apr 2017 08:57:41 +0000 (08:57 +0000)]
PR19260: Teach doxygen to spell correctly the include paths.
Currently we have #include <Sema.h> in the doxygen page documenting Sema. The
patch changes it ot #include "clang/Sema/Sema.h" which is what we would spell if
we need to include it in a real codebase.
Patch by Yuka Takahashi (D32113)!
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300825
91177308-0d34-0410-b5e6-
96231b3b80d8
Leslie Zhai [Thu, 20 Apr 2017 04:23:24 +0000 (04:23 +0000)]
[AVR] Add -mmcu option to the driver
A patch by Peter Wu!
Reviewers: jroelofs, xiangzhai
Reviewed By: jroelofs, dylanmckay, xiangzhai
Subscribers: dlj, dylanmckay, cfe-commits
Differential Revision: https://reviews.llvm.org/D29827
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300818
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Trieu [Thu, 20 Apr 2017 02:53:53 +0000 (02:53 +0000)]
[ODRHash] clean up test and add new examples. NFC
Use a macro to generate the struct with all decls. Previously, four identical
changes would be needed to update this test. This macro reduces that to one
location. Added two other tests for issues that triggered false positives
during testing.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300814
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Thu, 20 Apr 2017 01:15:31 +0000 (01:15 +0000)]
PR32673: Don't wrap parameter packs in SubstTemplateTypeParmPackType nodes when forming implicit deduction guides.
Doing so thwarts template type deduction. Instead, substitute the pack directly
by picking "slice 0" of the resulting expansion.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300805
91177308-0d34-0410-b5e6-
96231b3b80d8
Shoaib Meenai [Thu, 20 Apr 2017 01:11:42 +0000 (01:11 +0000)]
[Sema] Use MSVC inner class behavior on Itanium
Windows Itanium aims to use MSVC export and import semantics. Inner
class members shouldn't be exported on a dllexport explicit
instantiation definition of the outer class, and they shouldn't be
imported on a dllimport explicit instantiation declaration of the outer
class (instead a local copy should be emitted). We were doing the first
but not the second, and this mismatch can lead to link errors. Fix the
behavior and add tests for both.
Differential Revision: https://reviews.llvm.org/D32213
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300804
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Thu, 20 Apr 2017 01:02:29 +0000 (01:02 +0000)]
Add a triple to codegen test.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300803
91177308-0d34-0410-b5e6-
96231b3b80d8
Carlo Bertolli [Thu, 20 Apr 2017 00:39:39 +0000 (00:39 +0000)]
[OpenMP] Prepare sema to support combined constructs with omp distribute and omp for
https://reviews.llvm.org/D32237
This patch prepares sema with additional fields to support all those composite and combined constructs of OpenMP that include pragma 'distribute' and 'for', such as 'distribute parallel for'. It also extends the regression tests for 'distribute parallel for' and adds a new one.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300802
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Wed, 19 Apr 2017 22:25:30 +0000 (22:25 +0000)]
[sanitizer-coverage] trim down the docs
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300776
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Wed, 19 Apr 2017 21:31:11 +0000 (21:31 +0000)]
[sanitizer-coverage] deprecate -fsanitize-coverage=trace-bb
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300767
91177308-0d34-0410-b5e6-
96231b3b80d8
Erich Keane [Wed, 19 Apr 2017 21:24:55 +0000 (21:24 +0000)]
Corrrect warn_unused_result attribute
The original idea was that if the attribute on an operator,
that the return-value unused-ness wouldn't matter. However,
all of the operators except postfix inc/dec return
references! References don't result in this warning
anyway, so those are already excluded.
Differential Revision: https://reviews.llvm.org/D32207
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300764
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Smith [Wed, 19 Apr 2017 21:15:45 +0000 (21:15 +0000)]
Fix assertion failure in codegen on non-template deduction guide.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300762
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Wed, 19 Apr 2017 21:02:45 +0000 (21:02 +0000)]
[CodeGen] Use preincrement version of APInt::operator++ instead of postincrement to avoid creating and immediately discarding a temporary APInt.
This is preparation for a clang change to improve the [[nodiscard]] warning to not be ignored on methods that return a class marked [[nodiscard]] that are defined in the class itself. See D32207.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300756
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Wed, 19 Apr 2017 20:57:13 +0000 (20:57 +0000)]
Fix a leak in tools/driver/cc1as_main.cpp
Summary: For some reason, the asan bot has recently started reporting this leak even though it existed for ages.
Reviewers: pcc
Reviewed By: pcc
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D32243
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300755
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Wed, 19 Apr 2017 20:15:58 +0000 (20:15 +0000)]
[sanitizer-coverage] deprecate -fsanitize-coverage=8bit-counters
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300744
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Wed, 19 Apr 2017 20:08:21 +0000 (20:08 +0000)]
Parse backend options during thinlto backend compile actions
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300741
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Wed, 19 Apr 2017 19:57:16 +0000 (19:57 +0000)]
[sanitizer-coverage] deprecate some of the stale coverage variants
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300738
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Wed, 19 Apr 2017 17:58:30 +0000 (17:58 +0000)]
[Coverage] Don't emit mappings for functions in dependent contexts (fixes PR32679)
The coverage implementation marks functions which won't be emitted as
'deferred', so that it can emit empty coverage regions for them later
(once their linkages are known).
Functions in dependent contexts are an exception: if there isn't a full
instantiation of a function, it shouldn't be marked 'deferred'. We've
been breaking that rule without much consequence because we just ended
up with useless, extra, empty coverage mappings. With PR32679, this
behavior finally caused a crash, because clang marked a partial template
specialization as 'deferred', causing the MS mangler to choke in its
delayed-template-parsing mode:
error: cannot mangle this template type parameter type yet
(http://bugs.llvm.org/show_bug.cgi?id=32679)
Fix this by checking if a decl's context is a dependent context before
marking it 'deferred'.
Based on a patch by Adam Folwarczny!
Differential Revision: https://reviews.llvm.org/D32144
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300723
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Wed, 19 Apr 2017 17:54:08 +0000 (17:54 +0000)]
[Sema][ObjC] Disallow jumping into ObjC fast enumeration loops.
rdar://problem/
31635406
Differential Revision: https://reviews.llvm.org/D32187
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@300722
91177308-0d34-0410-b5e6-
96231b3b80d8