]> granicus.if.org Git - clang/log
clang
7 years agoIn the expression evaluator, visit the index of an ArraySubscriptExpr even if we...
Nick Lewycky [Thu, 27 Apr 2017 07:27:36 +0000 (07:27 +0000)]
In the expression evaluator, visit the index of an ArraySubscriptExpr even if we can't evaluate the base, if the evaluation mode tells us to continue evaluation.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301522 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoIn the expression evaluator, descend into both the true and false expressions of...
Nick Lewycky [Thu, 27 Apr 2017 07:11:09 +0000 (07:11 +0000)]
In the expression evaluator, descend into both the true and false expressions of a ConditionalOperator when the condition can't be evaluated and we're in an evaluation mode that says we should continue evaluating.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301520 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoDarwin: Define __STDC_NO_THREADS__ on Darwin targets
Duncan P. N. Exon Smith [Thu, 27 Apr 2017 01:47:22 +0000 (01:47 +0000)]
Darwin: Define __STDC_NO_THREADS__ on Darwin targets

Darwin doesn't support C11 threads.h.  Define `__STDC_NO_THREADS__` so
that users can check for it.

rdar://problem/18461003

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301508 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoImprove diagnostics for bad -std= flag.
Richard Smith [Thu, 27 Apr 2017 01:17:05 +0000 (01:17 +0000)]
Improve diagnostics for bad -std= flag.

Don't list deprecated -std= values (c++0x etc). Only produce one line of output
per standard, even if we know it by multiple names.

In passing, add missing -std=gnu++03 alias (supported by GCC), and add new
spelling '-std=cl1.0' for OpenCL 1.0 for consistency with the other values,
with the same meaning as the preexisting '-std=cl'.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301507 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoclang/Lex/PPCallbacks.h: Fix a warning in r301472. [-Wdocumentation]
NAKAMURA Takumi [Thu, 27 Apr 2017 00:09:42 +0000 (00:09 +0000)]
clang/Lex/PPCallbacks.h: Fix a warning in r301472. [-Wdocumentation]

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301503 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoRemove unnecessary and somewhat inaccurate "C89" flag from language standards.
Richard Smith [Wed, 26 Apr 2017 23:49:57 +0000 (23:49 +0000)]
Remove unnecessary and somewhat inaccurate "C89" flag from language standards.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301500 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoDon't accept -std= values that would switch us to a different source language.
Richard Smith [Wed, 26 Apr 2017 23:44:33 +0000 (23:44 +0000)]
Don't accept -std= values that would switch us to a different source language.

We already prohibited this in most cases (in r130710), but had some bugs in our
enforcement of this rule. Specifically, this prevents the following
combinations:

 * -x c -std=clN.M, which would previously effectively act as if -x cl were
   used, despite the input being a C source file. (-x cl -std=cNN continues
   to be disallowed.)

 * -x c++ -std=cuda, which would previously select C++98 + CUDA, despite that
   not being a C++ standard. (-x cuda -std=c++NN is still permitted, and
   selects CUDA with the given C++ standard as its base language.
   -x cuda -std=cuda is still supported with the meaning of CUDA + C++98.)

 * -x renderscript -std=c++NN, which would previously form a hybrid "C++ with
   RenderScript extensions" language. We could support such a thing, but
   shouldn't do so by accident.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301497 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoRevert r301487: Replace HashString algorithm with xxHash64
Rui Ueyama [Wed, 26 Apr 2017 23:15:10 +0000 (23:15 +0000)]
Revert r301487: Replace HashString algorithm with xxHash64

This reverts commit r301487 to make buildbots green.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301491 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoReplace HashString algorithm with xxHash64
Rui Ueyama [Wed, 26 Apr 2017 22:45:04 +0000 (22:45 +0000)]
Replace HashString algorithm with xxHash64

The previous algorithm processed one character at a time, which is very
painful on a modern CPU. Replace it with xxHash64, which both already
exists in the codebase and is fairly fast.

Patch from Scott Smith!

Differential Revision: https://reviews.llvm.org/D32509

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301487 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoFix comment. NFC
George Burgess IV [Wed, 26 Apr 2017 22:37:38 +0000 (22:37 +0000)]
Fix comment. NFC

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301486 91177308-0d34-0410-b5e6-96231b3b80d8

7 years ago[ubsan] nullability-assign: Check assignments into C++ structs
Vedant Kumar [Wed, 26 Apr 2017 21:55:17 +0000 (21:55 +0000)]
[ubsan] nullability-assign: Check assignments into C++ structs

Fix the nullability-assign check so that it can handle assignments into
C++ structs. Previously, such assignments were not instrumented.

Testing: check-clang, check-ubsan, enabling the existing test in ObjC++
mode, and building some Apple frameworks with -fsanitize=nullability.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301482 91177308-0d34-0410-b5e6-96231b3b80d8

7 years agoRevert "Revert "PPCallbacks::MacroUndefined, change signature and add test.""
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

7 years agoFix API breaks
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

7 years agoRevert "PPCallbacks::MacroUndefined, change signature and add test."
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

7 years ago[Modules] Fix a crash-on-invalid with overloaded functions
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

7 years agoPPCallbacks::MacroUndefined, change signature and add test.
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

7 years agoRefactor frontend InputKind to prepare for treating module maps as a distinct kind...
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

7 years agoRevert "Update to LLVM's use of WeakTrackingVH; NFC"
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

7 years agoUpdate to LLVM's use of WeakTrackingVH; NFC
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

7 years ago[Sema] Avoid using a null type pointer (fixes PR32750)
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

7 years ago[OPENMP] Fix failing test.
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

7 years ago[OPENMP] Fix handling of OpenMP code during template instantiation.
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

7 years ago[OPENMP] Move handling of threadprivate vars from the stack, NFC.
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

7 years ago-Wunguarded-availability should support if (@available) checks in top-level
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

7 years ago-Wdocumentation should not check the @returns command for Objective-C
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

7 years ago[AST] Look through attribute type locs when searching for function type
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

7 years agoclang-format: [JS/Java] ignore Objective-C constructs in JS & Java.
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

7 years agoformatting
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

7 years agoclang-format: [JS] prevent wraps before class members.
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

7 years ago[analyzer] Teach the MallocChecker about Glib API for two arguments
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

7 years ago[Modules][ObjC] Check definition from canonical decl on designated initializers
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

7 years ago[ubsan] Skip alignment checks on allocas with known alignment
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

7 years ago[asan] Unconditionally enable GC of globals on COFF.
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

7 years ago[Hexagon] Handle -O4 when checking optimization level
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

7 years ago[Hexagon] Set -ffp-contract=fast at -O3 unless explicitly specified
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

7 years agoMinor fix for distribute_parallel_for_num_threads_codegen on AARCH64
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

7 years ago[PGO/tests] Update comment to reflect reality.
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

7 years agoRecommit of
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

7 years ago[PGO] Update test now that we don't call IndirectCallPromotion.
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

7 years ago[libclang] Check for a record declaration before a template specialization
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

7 years ago[index] Index type source info for class specializations
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

7 years ago[index] Record the 'SpecializationOf' relation for function specializations
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

7 years agoFix fuzzer.c test on platforms where CLANG_DEFAULT_CXX_STDLIB is libc++
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

7 years agoPlacate MSVC's narrowing conversion unhappiness.
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

7 years ago[modules ts] Diagnose 'export' declarations outside of a module interface.
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

7 years ago[Modules] Fix test to wipe out the cache before using it
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

7 years ago[analyzer] Improve subscripting null arrays for catching null dereferences.
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

7 years agoRemove a dead field. NFC.
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

7 years ago[Coverage] Avoid null deref in skipRegionMappingForDecl (fixes PR32761)
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

7 years agoSpecify a target explicitly in libfuzzer driver flag test
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

7 years agoRevert r301223
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

7 years ago[asan] Disable ASan global-GC depending on the target and compiler flags.
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

7 years ago[analyzer] Improve suppression for inlined defensive checks before operator &.
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

7 years ago[OpenMP] Initial implementation of code generation for pragma 'distribute parallel...
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

7 years agoPragma: Fix DebugOverflowStack() resulting in endless loop.
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

7 years agoRemove erroneous driver test for -fsanitize=fuzzer flag
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

7 years agoFlag -fsanitize=fuzzer to enable libfuzzer
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

7 years ago[Docs] Correct the path to the clang-format-diff.py script to include the clang-forma...
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

7 years ago[index] If the 'external_source_symbol' attribute indicates 'Swift' as the language...
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

7 years agoclang-format: Fix bad corner case in formatting of function types.
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

7 years ago[index] The relation between the declarations in template specializations
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

7 years ago[Devirtualization] Emit invariant.group loads with empty group md
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

7 years agoFix typo in comment.
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

7 years agoRearrange some Modules TS testcases into test/CXX/modules-ts.
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

7 years agoMove Split DWARF handling to an MC option/command line argument rather than using...
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

7 years agoP0629R0: Switch to latest proposal for distinguishing module interface from implement...
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

7 years ago[index] Take into account the category's external_symbol attr for namespacing its...
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

7 years agoAdd comments to the diagnostic kinds in Diagnostic.td.
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

7 years ago[ms] Give -Wmicrosoft-enum-forward-reference a chance to fire in clang-cl, PR32736
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

7 years ago[OpenCL] Fix semantic check of ndrange_t for device_side_enqueue.
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

7 years ago[clang-format] Replace IncompleteFormat by a struct with Line
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

7 years ago[clang-format] Clang-tidy cleanup of NamespaceEndCommentFixerTest.cpp, NFC
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

7 years ago[clang-format] Clang-tidy cleanup of CleanupTest.cpp, NFC
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

7 years ago[PR32667] -Wdocumentation should allow @param/@returns for fields/variables
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

7 years agoAdd support for openSUSE ARM Triples
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

7 years ago[index] Take advantage of 'external_source_symbol' attribute for indexing purposes
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

7 years ago[index] For 'transparent' tag typedefs, ignore their tag reference
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

7 years ago[modules] Properly look up the owning module for an instantiation of a merged template.
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

7 years ago[analyzer] Fix assert in ExprEngine::processSwitch
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

7 years agoUse __CLANG_ATOMIC_TYPE_LOCK_FREE macros in `stdatomic.h`
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

7 years ago[CMake] Enable ARM target in Fuchsia toolchain
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

7 years agoAdd __CLANG_ATOMIC_<TYPE>_LOCK_FREE macros for use in MSVC compatibility mode.
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

7 years agoSema: protect against ObjC++ typo-correction failure
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

7 years agoParse: cleanup some bleeding whitespace
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

7 years agoFix Python 2 vs 3 incompatability with dict.items() vs iteritems()
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

7 years agoEnable leak sanitizer builds for darwin
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

7 years agoBegin making git-clang-format python3 compatible.
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

7 years ago[Driver] Add a missing -no-canonical-prefixes to test.
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

7 years agoDon't pass FPOpFusion::Strict to the backend
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

7 years agoDelete unused IncompleteFormat variable, NFCi.
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

7 years ago[index] Record class template specializations using a new 'SpecializationOf'
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

7 years agoAdd Python 3 support to clang.cindex
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

7 years agoAdd #pragma clang attribute support to the availability attribute
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

7 years agoPR19260: Teach doxygen to spell correctly the include paths.
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

7 years ago[AVR] Add -mmcu option to the driver
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

7 years ago[ODRHash] clean up test and add new examples. NFC
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

7 years agoPR32673: Don't wrap parameter packs in SubstTemplateTypeParmPackType nodes when formi...
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

7 years ago[Sema] Use MSVC inner class behavior on Itanium
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

7 years agoAdd a triple to codegen test.
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

7 years ago[OpenMP] Prepare sema to support combined constructs with omp distribute and omp for
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