]> granicus.if.org Git - clang/log
clang
6 years agoReverted 321587: Enable configuration files in clang
Serge Pavlov [Sat, 30 Dec 2017 18:38:44 +0000 (18:38 +0000)]
Reverted 321587: Enable configuration files in clang

Need to check targets in tests more carefully.

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

6 years agoEnable configuration files in clang
Serge Pavlov [Sat, 30 Dec 2017 17:59:26 +0000 (17:59 +0000)]
Enable configuration files in clang

Clang is inherently a cross compiler and can generate code for any target
enabled during build. It however requires to specify many parameters in the
invocation, which could be hardcoded during configuration process in the
case of single-target compiler. The purpose of configuration files is to
make specifying clang arguments easier.

A configuration file is a collection of driver options, which are inserted
into command line before other options specified in the clang invocation.
It groups related options together and allows specifying them in simpler,
more flexible and less error prone way than just listing the options
somewhere in build scripts. Configuration file may be thought as a "macro"
that names an option set and is expanded when the driver is called.

Use of configuration files is described in `UserManual.rst`.

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

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

6 years ago[NFC] Modernize enum 'UnqualifiedId::IdKind' into a scoped enum UnqualifiedIdKind.
Faisal Vali [Sat, 30 Dec 2017 04:15:27 +0000 (04:15 +0000)]
[NFC] Modernize enum 'UnqualifiedId::IdKind' into a scoped enum UnqualifiedIdKind.

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

6 years ago[docs] Added description of `-f[no]-openmp-simd` option to UsersManual.
Alexey Bataev [Fri, 29 Dec 2017 18:27:00 +0000 (18:27 +0000)]
[docs] Added description of `-f[no]-openmp-simd` option to UsersManual.

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

6 years ago[docs] Updated ReleaseNotes for OpenMP part.
Alexey Bataev [Fri, 29 Dec 2017 18:23:12 +0000 (18:23 +0000)]
[docs] Updated ReleaseNotes for OpenMP part.

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

6 years ago[OPENMP] Support for -fopenmp-simd option with compilation of simd loops
Alexey Bataev [Fri, 29 Dec 2017 18:07:07 +0000 (18:07 +0000)]
[OPENMP] Support for -fopenmp-simd option with compilation of simd loops
only.

Added support for -fopenmp-simd option that allows compilation of
simd-based constructs without emission of OpenMP runtime calls.

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

6 years ago[driver][darwin] Take the OS version from -m<os>-version-min argument when
Alex Lorenz [Fri, 29 Dec 2017 17:42:40 +0000 (17:42 +0000)]
[driver][darwin] Take the OS version from -m<os>-version-min argument when
-target has no OS version

This ensures that Clang won't warn about redundant -m<os>-version-min
argument for an invocation like
`-target x86_64-apple-macos -mmacos-version-min=10.11`

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

6 years ago[OPENMP] Initial support for `-fopenmp-simd` option.
Alexey Bataev [Fri, 29 Dec 2017 17:36:15 +0000 (17:36 +0000)]
[OPENMP] Initial support for `-fopenmp-simd` option.

Added basic support for `-fopenmp-simd` options.

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

6 years agoRevert r321504 "[X86] Don't accidentally enable PKU on cannon lake and icelake or...
Craig Topper [Fri, 29 Dec 2017 06:39:16 +0000 (06:39 +0000)]
Revert r321504 "[X86] Don't accidentally enable PKU on cannon lake and icelake or CLWB on cannonlake."

I based that commit on what was in Intel's public documentation here https://software.intel.com/sites/default/files/managed/c5/15/architecture-instruction-set-extensions-programming-reference.pdf

Which specifically said CLWB wasn't until Icelake.

But I've since cross checked with SDE and it thinks these features exist on CNL and ICL. So now I don't know what to believe.

I've added test coverage of the current behavior as part of the revert so at least now have proof of what we're doing.

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

6 years ago[NFC] Modernize enum Declarator::TheContext to a type-safe scoped enum.
Faisal Vali [Fri, 29 Dec 2017 05:41:00 +0000 (05:41 +0000)]
[NFC] Modernize enum Declarator::TheContext to a type-safe scoped enum.

Note, we don't do any bitwise manipulations when using them.

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

6 years agoAvoid int to string conversion in Twine or raw_ostream contexts.
Benjamin Kramer [Thu, 28 Dec 2017 16:58:54 +0000 (16:58 +0000)]
Avoid int to string conversion in Twine or raw_ostream contexts.

Some output changes from uppercase hex to lowercase hex, no other functionality change intended.

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

6 years ago[Frontend] Correctly handle instantiating ctors with skipped bodies
Ilya Biryukov [Thu, 28 Dec 2017 13:05:46 +0000 (13:05 +0000)]
[Frontend] Correctly handle instantiating ctors with skipped bodies

Summary:
Previsouly clang tried instantiating member initializers even if ctor
body was skipped, this caused spurious errors (see the test).

Reviewers: sepavloff, klimek

Reviewed By: sepavloff

Subscribers: cfe-commits

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

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

6 years ago-fsanitize=vptr warnings on bad static types in dynamic_cast and typeid
Stephan Bergmann [Thu, 28 Dec 2017 12:45:41 +0000 (12:45 +0000)]
-fsanitize=vptr warnings on bad static types in dynamic_cast and typeid

...when such an operation is done on an object during con-/destruction.

This is the cfe part of a patch covering both cfe and compiler-rt.

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

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

6 years ago[X86] Don't accidentally enable PKU on cannon lake and icelake or CLWB on cannonlake.
Craig Topper [Wed, 27 Dec 2017 22:26:01 +0000 (22:26 +0000)]
[X86] Don't accidentally enable PKU on cannon lake and icelake or CLWB on cannonlake.

We have cannonlake and icelake inheriting from skylake server in a switch using fallthroughs. But they aren't perfect supersets of skylake server.

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

6 years ago[X86] Test that -march=skx enables PKU.
Craig Topper [Wed, 27 Dec 2017 22:26:00 +0000 (22:26 +0000)]
[X86] Test that -march=skx enables PKU.

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

6 years ago[X86] Enable avx512vpopcntdq and clwb for icelake.
Craig Topper [Wed, 27 Dec 2017 22:25:59 +0000 (22:25 +0000)]
[X86] Enable avx512vpopcntdq and clwb for icelake.

Per table 1-1 of the October 2017 edition of IntelĀ® Architecture Instruction Set Extensions and Future Features Programming Reference

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

6 years ago[OPENMP] Support for `depend` clauses on `target enter|exit data`.
Alexey Bataev [Wed, 27 Dec 2017 18:49:38 +0000 (18:49 +0000)]
[OPENMP] Support for `depend` clauses on `target enter|exit data`.

Added codegen for `depend` clauses on `target enter|exit data` directives.

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

6 years ago[NFC] Small const correctness fix
Hamza Sood [Wed, 27 Dec 2017 18:05:29 +0000 (18:05 +0000)]
[NFC] Small const correctness fix

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

6 years ago[OPENMP] Support for `depend` clauses on `target data update`.
Alexey Bataev [Wed, 27 Dec 2017 17:58:32 +0000 (17:58 +0000)]
[OPENMP] Support for `depend` clauses on `target data update`.

Added codegen for `depend` clauses on `target data update` directives.

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

6 years ago[ASTImporter] Support importing FunctionTemplateDecl and CXXDependentScopeMemberExpr
Aleksei Sidorin [Wed, 27 Dec 2017 17:04:42 +0000 (17:04 +0000)]
[ASTImporter] Support importing FunctionTemplateDecl and CXXDependentScopeMemberExpr

* Also introduces ImportTemplateArgumentListInfo facility (A. Sidorin)

This re-commits r320942 after fixing the behaviour on '-fdelayed-template-parsing'
option and adding additional checks.

Patch by Peter Szecsi!

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

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

6 years ago[x86][icelake][vbmi2]
Coby Tayree [Wed, 27 Dec 2017 11:25:07 +0000 (11:25 +0000)]
[x86][icelake][vbmi2]
added vbmi2 feature recognition
added intrinsics support for vbmi2 instructions
_mm[128,256,512]_mask[z]_compress_epi[16,32]
_mm[128,256,512]_mask_compressstoreu_epi[16,32]
_mm[128,256,512]_mask[z]_expand_epi[16,32]
_mm[128,256,512]_mask[z]_expandloadu_epi[16,32]
_mm[128,256,512]_mask[z]_sh[l,r]di_epi[16,32,64]
_mm[128,256,512]_mask_sh[l,r]dv_epi[16,32,64]
matching a similar work on the backend (D40206)
Differential Revision: https://reviews.llvm.org/D41557

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

6 years ago[OpenMP] Further adjustments of nvptx runtime functions
Jonas Hahnfeld [Wed, 27 Dec 2017 10:39:56 +0000 (10:39 +0000)]
[OpenMP] Further adjustments of nvptx runtime functions

Pass in default value of 1, similar to previous commit r318836.

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

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

6 years ago[x86][icelake][vnni]
Coby Tayree [Wed, 27 Dec 2017 10:37:51 +0000 (10:37 +0000)]
[x86][icelake][vnni]
added vnni feature recognition
added intrinsics support for VNNI instructions
_mm256_mask_dpbusd_epi32
_mm256_maskz_dpbusd_epi32
_mm256_dpbusd_epi32
_mm256_mask_dpbusds_epi32
_mm256_maskz_dpbusds_epi32
_mm256_dpbusds_epi32
_mm256_mask_dpwssd_epi32
_mm256_maskz_dpwssd_epi32
_mm256_dpwssd_epi32
_mm256_mask_dpwssds_epi32
_mm256_maskz_dpwssds_epi32
_mm256_dpwssds_epi32
_mm128_mask_dpbusd_epi32
_mm128_maskz_dpbusd_epi32
_mm128_dpbusd_epi32
_mm128_mask_dpbusds_epi32
_mm128_maskz_dpbusds_epi32
_mm128_dpbusds_epi32
_mm128_mask_dpwssd_epi32
_mm128_maskz_dpwssd_epi32
_mm128_dpwssd_epi32
_mm128_mask_dpwssds_epi32
_mm128_maskz_dpwssds_epi32
_mm128_dpwssds_epi32
_mm512_mask_dpbusd_epi32
_mm512_maskz_dpbusd_epi32
_mm512_dpbusd_epi32
_mm512_mask_dpbusds_epi32
_mm512_maskz_dpbusds_epi32
_mm512_dpbusds_epi32
_mm512_mask_dpwssd_epi32
_mm512_maskz_dpwssd_epi32
_mm512_dpwssd_epi32
_mm512_mask_dpwssds_epi32
_mm512_maskz_dpwssds_epi32
_mm512_dpwssds_epi32
matching a similar work on the backend (D40208)
Differential Revision: https://reviews.llvm.org/D41558

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

6 years ago[x86][icelake][bitalg]
Coby Tayree [Wed, 27 Dec 2017 10:01:00 +0000 (10:01 +0000)]
[x86][icelake][bitalg]
added bitalg feature recognition
added intrinsics support for bitalg instructions
_mm512_popcnt_epi16
_mm512_mask_popcnt_epi16
_mm512_maskz_popcnt_epi16
_mm512_popcnt_epi8
_mm512_mask_popcnt_epi8
_mm512_maskz_popcnt_epi8
_mm512_mask_bitshuffle_epi64_mask
_mm512_bitshuffle_epi64_mask
_mm256_popcnt_epi16
_mm256_mask_popcnt_epi16
_mm256_maskz_popcnt_epi16
_mm128_popcnt_epi16
_mm128_mask_popcnt_epi16
_mm128_maskz_popcnt_epi16
_mm256_popcnt_epi8
_mm256_mask_popcnt_epi8
_mm256_maskz_popcnt_epi8
_mm128_popcnt_epi8
_mm128_mask_popcnt_epi8
_mm128_maskz_popcnt_epi8
_mm256_mask_bitshuffle_epi32_mask
_mm256_bitshuffle_epi32_mask
_mm128_mask_bitshuffle_epi16_mask
_mm128_bitshuffle_epi16_mask
matching a similar work on the backend (D40222)
Differential Revision: https://reviews.llvm.org/D41564

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

6 years ago[hotfix]
Coby Tayree [Wed, 27 Dec 2017 09:22:34 +0000 (09:22 +0000)]
[hotfix]
fixinig test failures as seen here:
http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast/builds/22791/steps/test/logs/stdio
which resulted by rL321480

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

6 years ago[x86][icelake][vpclmulqdq]
Coby Tayree [Wed, 27 Dec 2017 09:00:31 +0000 (09:00 +0000)]
[x86][icelake][vpclmulqdq]
added vpclmulqdq feature recognition
added intrinsics support for vpclmulqdq instructions
  _mm256_clmulepi64_epi128
  _mm512_clmulepi64_epi128
matching a similar work on the backend (D40101)
Differential Revision: https://reviews.llvm.org/D41573

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

6 years ago[x86][icelake][gfni]
Coby Tayree [Wed, 27 Dec 2017 08:37:47 +0000 (08:37 +0000)]
[x86][icelake][gfni]
added gfni feature recognition
added intrinsics support for gfni instructions
  _mm_gf2p8affineinv_epi64_epi8
  _mm_mask_gf2p8affineinv_epi64_epi8
  _mm_maskz_gf2p8affineinv_epi64_epi8
  _mm256_gf2p8affineinv_epi64_epi8
  _mm256_mask_gf2p8affineinv_epi64_epi8
  _mm256_maskz_gf2p8affineinv_epi64_epi8
  _mm512_gf2p8affineinv_epi64_epi8
  _mm512_mask_gf2p8affineinv_epi64_epi8
  _mm512_maskz_gf2p8affineinv_epi64_epi8
  _mm_gf2p8affine_epi64_epi8
  _mm_mask_gf2p8affine_epi64_epi8
  _mm_maskz_gf2p8affine_epi64_epi8
  _mm256_gf2p8affine_epi64_epi8
  _mm256_mask_gf2p8affine_epi64_epi8
  _mm256_maskz_gf2p8affine_epi64_epi8
  _mm512_gf2p8affine_epi64_epi8
  _mm512_mask_gf2p8affine_epi64_epi8
  _mm512_maskz_gf2p8affine_epi64_epi8
  _mm_gf2p8mul_epi8
  _mm_mask_gf2p8mul_epi8
  _mm_maskz_gf2p8mul_epi8
  _mm256_gf2p8mul_epi8
  _mm256_mask_gf2p8mul_epi8
  _mm256_maskz_gf2p8mul_epi8
  _mm512_gf2p8mul_epi8
  _mm512_mask_gf2p8mul_epi8
  _mm512_maskz_gf2p8mul_epi8
matching a similar work on the backend (D40373)
Differential Revision: https://reviews.llvm.org/D41582

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

6 years ago[x86][icelake][vaes]
Coby Tayree [Wed, 27 Dec 2017 08:16:54 +0000 (08:16 +0000)]
[x86][icelake][vaes]
added vaes feature recognition
added intrinsics support for vaes instructions, matching a similar work on the backend (D40078)
  _mm256_aesenc_epi128
  _mm512_aesenc_epi128
  _mm256_aesenclast_epi128
  _mm512_aesenclast_epi128
  _mm256_aesdec_epi128
  _mm512_aesdec_epi128
  _mm256_aesdeclast_epi128
  _mm512_aesdeclast_epi128

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

6 years agoFix comment typo in r321312.
Paul Robinson [Tue, 26 Dec 2017 18:01:19 +0000 (18:01 +0000)]
Fix comment typo in r321312.
Post-commit review by Kim Grasman!

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

6 years agoAdd a fixit for attributes incorrectly placed prior to 'struct/class/enum' keyword.
Faisal Vali [Mon, 25 Dec 2017 22:23:20 +0000 (22:23 +0000)]
Add a fixit for attributes incorrectly placed prior to 'struct/class/enum' keyword.

Suggest moving the following erroneous attrib list (based on location)
[[]] struct X;
to
struct [[]] X;

Additionally, added a fixme for the current implementation that diagnoses misplaced attributes to consider using the newly introduced diagnostic (that I think is more user-friendly).

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

6 years ago[AST] Inline CompoundStmt contents into the parent allocation.
Benjamin Kramer [Sun, 24 Dec 2017 16:24:20 +0000 (16:24 +0000)]
[AST] Inline CompoundStmt contents into the parent allocation.

Saves a pointer on every CompoundStmt.

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

6 years ago[AST] Convert AttributedStmt to llvm::TrailingObjects.
Benjamin Kramer [Sun, 24 Dec 2017 16:24:11 +0000 (16:24 +0000)]
[AST] Convert AttributedStmt to llvm::TrailingObjects.

No functionality change intended.

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

6 years ago[OPENMP] Fix the tests for 32bits targets, NFC.
Alexey Bataev [Sun, 24 Dec 2017 14:18:33 +0000 (14:18 +0000)]
[OPENMP] Fix the tests for 32bits targets, NFC.

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

6 years agoMake helpers static. No functionality change.
Benjamin Kramer [Sun, 24 Dec 2017 12:46:22 +0000 (12:46 +0000)]
Make helpers static. No functionality change.

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

6 years ago[Index] Reduce size of SymbolInfo struct.
Sam McCall [Sat, 23 Dec 2017 19:31:24 +0000 (19:31 +0000)]
[Index] Reduce size of SymbolInfo struct.

Summary:
This is currently 16 bytes, the patch reduces it to 4.
(Building with clang on linux x84, I guess others are similar)

The only subfield that might need a bigger type is SymbolPropertySet,
I've moved it to the end of the struct so if it grows, SymbolInfo will
only be 8 bytes.

With a full index of namespace-scope symbols from the LLVM project (200k)
loaded into clangd, this saves ~2MB of RAM.

Reviewers: akyrtzi

Subscribers: ilya-biryukov, cfe-commits

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

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

6 years ago[NFC] Remove a cast rendered unnecessary by r321409
Faisal Vali [Sat, 23 Dec 2017 19:27:07 +0000 (19:27 +0000)]
[NFC] Remove a cast rendered unnecessary by r321409

See https://reviews.llvm.org/rC321409 for additional context.

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

6 years ago[NFC] Update the template-parameter parsers and analyzers to return NamedDecl (vs...
Faisal Vali [Sat, 23 Dec 2017 18:56:34 +0000 (18:56 +0000)]
[NFC] Update the template-parameter parsers and analyzers to return NamedDecl (vs Decl)

This patch addresses a FIXME and has the template-parameter processing functions return a more derived common type NamedDecl (as opposed to a type needlessly higher up in the inheritance hierarchy : Decl).

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

6 years ago[ODRHash] Disable hashing on methods.
Richard Trieu [Sat, 23 Dec 2017 01:35:32 +0000 (01:35 +0000)]
[ODRHash] Disable hashing on methods.

Turn off hashing for class methods, but leave it on for other functions.  This
should get the buildbot to green for the time being.

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

6 years ago[ODRHash] Support ODR violation detection in functions.
Richard Trieu [Sat, 23 Dec 2017 00:41:01 +0000 (00:41 +0000)]
[ODRHash] Support ODR violation detection in functions.

Extend the hashing to functions, which allows detection of function definition
mismatches across modules.  This is a re-commit of r320230.

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

6 years agoAdd an explicit `LLVM_FALLTHROUGH` annotation to an intentional
Chandler Carruth [Fri, 22 Dec 2017 23:29:49 +0000 (23:29 +0000)]
Add an explicit `LLVM_FALLTHROUGH` annotation to an intentional
fallthrough. Fixes GCC and Clang warnings about this.

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

6 years ago[OPENMP] Captured arguments of the capturable clauses by value.
Alexey Bataev [Fri, 22 Dec 2017 21:01:52 +0000 (21:01 +0000)]
[OPENMP] Captured arguments of the capturable clauses by value.

If the clause is applied to the combined construct and has captured
expression, try to capture this expression by value rather than by
reference.

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

6 years agoUnit tests for TBAA metadata generation.
Serge Pavlov [Fri, 22 Dec 2017 15:22:45 +0000 (15:22 +0000)]
Unit tests for TBAA metadata generation.

Now tests for metadata created by clang involve compiling code snippets
placed into c/c++ source files and matching interesting patterns in the
obtained textual representation of IR. Writting such tests is a painful
process as metadata often form complex tree-like structures but textual
representation of IR contains only a pile of metadata at the module end.

This change implements IR matchers that may be used to match required
patterns in the binary IR representation. In this case the metadata
structure is not broken and creation of match patterns is easier.

The change adds unit tests for TBAA metadata generation.

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

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

6 years ago[CodeGen] Represent array members in new-format TBAA type descriptors
Ivan A. Kosarev [Fri, 22 Dec 2017 09:57:24 +0000 (09:57 +0000)]
[CodeGen] Represent array members in new-format TBAA type descriptors

Now that in the new TBAA format we allow access types to be of
any object types, including aggregate ones, it becomes critical
to specify types of all sub-objects such aggregates comprise as
their members. In order to meet this requirement, this patch
enables generation of field descriptors for members of array
types.

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

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

6 years ago[CodeGen] Support generation of TBAA info in the new format
Ivan A. Kosarev [Fri, 22 Dec 2017 09:54:23 +0000 (09:54 +0000)]
[CodeGen] Support generation of TBAA info in the new format

Now that the MDBuilder helpers generating TBAA type and access
descriptors in the new format are in place, we can teach clang to
use them when requested.

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

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

6 years agoFix unused variable warning in SemaTemplate. NFC
Sam McCall [Fri, 22 Dec 2017 07:09:51 +0000 (07:09 +0000)]
Fix unused variable warning in SemaTemplate. NFC

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

6 years ago[X86] Add missing check lines for the silvermont cases in predefined-arch-macros...
Craig Topper [Fri, 22 Dec 2017 05:09:38 +0000 (05:09 +0000)]
[X86] Add missing check lines for the silvermont cases in predefined-arch-macros.c test.

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

6 years ago[Modules] Map missing private submodules from Foo.Private to Foo_Private
Bruno Cardoso Lopes [Fri, 22 Dec 2017 05:04:43 +0000 (05:04 +0000)]
[Modules] Map missing private submodules from Foo.Private to Foo_Private

In case `@import Foo.Private` fails because the submodule doesn't exist,
look for `Foo_Private` (if available) and build/load that module
instead. In that process emit a warning and tell the user about the
assumption.

The intention here is to assist all existing private modules owners
(in ObjC and Swift) to migrate to the new `Foo_Private` syntax.

rdar://problem/36023940

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

6 years ago[X86] Add 'prfchw' to the correct CPUs to match the backend.
Craig Topper [Fri, 22 Dec 2017 04:51:00 +0000 (04:51 +0000)]
[X86] Add 'prfchw' to the correct CPUs to match the backend.

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

6 years agoDiagnose the various invalid decl-specifiers on nontype template parameters.
Faisal Vali [Fri, 22 Dec 2017 03:50:55 +0000 (03:50 +0000)]
Diagnose the various invalid decl-specifiers on nontype template parameters.

The standard correctly forbids various decl-specifiers that dont make sense on non-type template parameters - such as the extern in:
    template<extern int> struct X;

This patch implements those restrictions (in a fashion similar to the corresponding checks on function parameters within ActOnParamDeclarator).

Credit goes to miyuki (Mikhail Maltsev) for drawing attention to this issue,  authoring the initial versions of this patch, and supporting the effort to re-engineer it slightly.  Thank you!

For details of how this patch evolved please see: https://reviews.llvm.org/D40705

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

6 years ago[Modules] Change private modules rules and warnings
Bruno Cardoso Lopes [Fri, 22 Dec 2017 02:53:30 +0000 (02:53 +0000)]
[Modules] Change private modules rules and warnings

We used to advertise private modules to be declared as submodules
(Foo.Private). This has proven to not scale well since private headers
might carry several dependencies, introducing unwanted content into the
main module and often causing dep cycles.

Change the canonical way to name it to Foo_Private, forcing private
modules as top level ones, and provide warnings under -Wprivate-module
to suggest fixes for other private naming. Update documentation to
reflect that.

rdar://problem/31173501

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

6 years ago[CUDA] More fixes for __shfl_* intrinsics.
Artem Belevich [Thu, 21 Dec 2017 23:52:09 +0000 (23:52 +0000)]
[CUDA] More fixes for __shfl_* intrinsics.

* __shfl_{up,down}* uses unsigned int for the third parameter.
* added [unsigned] long overloads for non-sync shuffles.

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

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

6 years ago[X86] Allow _mm_prefetch (both the header implementation and the builtin) to accept...
Craig Topper [Thu, 21 Dec 2017 23:50:22 +0000 (23:50 +0000)]
[X86] Allow _mm_prefetch (both the header implementation and the builtin) to accept bit 2 which is supposed to indicate the prefetched addresses will be written to

Add the appropriate _MM_HINT_ET0/ET1 defines to match gcc.

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

6 years agoCorrect hasFeature/isValidFeatureName's handling of shstk/adx/mwaitx
Erich Keane [Thu, 21 Dec 2017 23:27:36 +0000 (23:27 +0000)]
Correct hasFeature/isValidFeatureName's handling of shstk/adx/mwaitx

https://bugs.llvm.org/show_bug.cgi?id=35721 reports that x86intrin.h
is issuing a few warnings. This is because attribute target is using
isValidFeatureName for its source. It was also discovered that two of
these were missing from hasFeature.

Additionally, shstk is and ibu are reordered alphabetically, as came
up during code review.

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

6 years agoDelete dead code.
Adrian Prantl [Thu, 21 Dec 2017 23:03:05 +0000 (23:03 +0000)]
Delete dead code.

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

6 years ago[analyzer] Add Javascript to analyzer HTML output to allow keyboard navigation.
George Karpenkov [Thu, 21 Dec 2017 22:57:51 +0000 (22:57 +0000)]
[analyzer] Add Javascript to analyzer HTML output to allow keyboard navigation.

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

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

6 years ago[ODRHash] Canonicalize Decl's before processing.
Richard Trieu [Thu, 21 Dec 2017 22:38:29 +0000 (22:38 +0000)]
[ODRHash] Canonicalize Decl's before processing.

Canonicalizing the Decl before processing it as part of the hash should reduce
issues with non-canonical types showing up as mismatches.

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

6 years agoSuppress "redundant parens" warning for "A (::B())".
Richard Smith [Thu, 21 Dec 2017 22:26:47 +0000 (22:26 +0000)]
Suppress "redundant parens" warning for "A (::B())".

This is a slightly odd construct (it's more common to see "A (::B)()") but can
happen in friend declarations, and the parens are not redundant as they prevent
the :: binding to the left.

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

6 years ago[CMake][Fuchsia] Enable assertions
Petr Hosek [Thu, 21 Dec 2017 22:10:27 +0000 (22:10 +0000)]
[CMake][Fuchsia] Enable assertions

Enable assertions in both stages.
Release+Asserts is fast enough.
No need to let insanity through.

Patch By: mcgrathr

Reviewers: phosek

Reviewed By: phosek

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

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

6 years ago[scudo] Add -fsanitize=scudo option to Fuchsia
Petr Hosek [Thu, 21 Dec 2017 22:04:31 +0000 (22:04 +0000)]
[scudo] Add -fsanitize=scudo option to Fuchsia

Apparently the -fsanitize flag hadn't been added for Scudo upstream yet.

Patch By: flowerhack

Reviewers: cryptoad, alekseyshl, mcgrathr, phosek

Reviewed By: mcgrathr, phosek

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

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

6 years ago[AST] Incorrectly qualified unscoped enumeration as template actual parameter.
Paul Robinson [Thu, 21 Dec 2017 21:47:22 +0000 (21:47 +0000)]
[AST] Incorrectly qualified unscoped enumeration as template actual parameter.

An unscoped enumeration used as template argument, should not have any
qualified information about its enclosing scope, as its visibility is
global.

In the case of scoped enumerations, they must include information
about their enclosing scope.

Patch by Carlos Alberto Enciso!

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

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

6 years agoRe-commit r321223, which adds a printing policy to the ASTDumper.
Aaron Ballman [Thu, 21 Dec 2017 21:42:42 +0000 (21:42 +0000)]
Re-commit r321223, which adds a printing policy to the ASTDumper.

This allows you to dump C++ code that spells bool instead of _Bool, leaves off the elaborated type specifiers when printing struct or class names, and other C-isms.

Fixes the -Wreorder issue and fixes the ast-dump-color.cpp test.

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

6 years agoRevert "[CodeGen] Fix crash when a function taking transparent union is redeclared."
Volodymyr Sapsai [Thu, 21 Dec 2017 20:52:59 +0000 (20:52 +0000)]
Revert "[CodeGen] Fix crash when a function taking transparent union is redeclared."

This reverts commit r321296. It caused performance regressions
FAIL: imp.execution_time
FAIL: 2007-01-04-KNR-Args.execution_time
FAIL: sse_expandfft.execution_time
FAIL: sse_stepfft.execution_time

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

6 years agoDon't produce redundant parentheses warning for "A (::B);" and the like.
Richard Smith [Thu, 21 Dec 2017 20:50:39 +0000 (20:50 +0000)]
Don't produce redundant parentheses warning for "A (::B);" and the like.

The parentheses here are not redundant as they affect the binding of the
'::' token.

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

6 years ago[AArch64] Enable fp16 data type for the Builtin for AArch64 only.
Abderrazek Zaafrani [Thu, 21 Dec 2017 20:10:03 +0000 (20:10 +0000)]
[AArch64] Enable fp16 data type for the Builtin for AArch64 only.

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

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

6 years agoRevert "Fix for PR32990"
Reid Kleckner [Thu, 21 Dec 2017 19:44:23 +0000 (19:44 +0000)]
Revert "Fix for PR32990"

This reverts commit r321239. It broke the Chromium DLL build:

[8834/50217] LINK(DLL) icui18n.dll icui18n.dll.lib icui18n.dll.pdb
FAILED: icui18n.dll icui18n.dll.lib icui18n.dll.pdb
zrule.obj : error LNK2001: unresolved external symbol
"__declspec(dllimport) public: void __cdecl icu_60::UnicodeString::`vbase destructor'(void)"
(__imp_??_DUnicodeString@icu_60@@QEAAXXZ)

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

6 years agoWhen instantiating a deduction guide, transform its name.
Richard Smith [Thu, 21 Dec 2017 19:43:39 +0000 (19:43 +0000)]
When instantiating a deduction guide, transform its name.

Otherwise it will serve as a deduction guide for the wrong class template.

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

6 years ago[CodeGen] Fix crash when a function taking transparent union is redeclared.
Volodymyr Sapsai [Thu, 21 Dec 2017 19:42:37 +0000 (19:42 +0000)]
[CodeGen] Fix crash when a function taking transparent union is redeclared.

When a function taking transparent union is declared as taking one of
union members earlier in the translation unit, clang would hit an
"Invalid cast" assertion during EmitFunctionProlog. This case
corresponds to function f1 in test/CodeGen/transparent-union-redecl.c.
We decided to cast i32 to union because after merging function
declarations function parameter type becomes int,
CGFunctionInfo::ArgInfo type matches with ABIArgInfo type, so we decide
it is a trivial case. But these types should also be castable to
parameter declaration type which is not the case here.

The fix is in checking for the trivial case if ABIArgInfo type matches with
parameter declaration type. It exposed inconsistency that we check
hasScalarEvaluationKind for different types in EmitParmDecl and
EmitFunctionProlog, and comment says they should match.

Additional tests in Sema/transparent-union.c capture current behavior and make
sure there are no regressions.

rdar://problem/34949329

Reviewers: rjmccall, rafael

Reviewed By: rjmccall

Subscribers: aemerson, cfe-commits, kristof.beyls

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

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

6 years ago[AARch64] Add ARMv8.2-A FP16 vector intrinsics
Abderrazek Zaafrani [Thu, 21 Dec 2017 19:20:01 +0000 (19:20 +0000)]
[AARch64] Add ARMv8.2-A FP16 vector intrinsics

Putting back the code that was reverted few weeks ago.

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

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

6 years ago[analyzer] Fix zero-initialization of stack VLAs under ObjC ARC.
Artem Dergachev [Thu, 21 Dec 2017 18:43:02 +0000 (18:43 +0000)]
[analyzer] Fix zero-initialization of stack VLAs under ObjC ARC.

Using ARC, strong, weak, and autoreleasing stack variables are implicitly
initialized with nil. This includes variable-length arrays of Objective-C object
pointers. However, in the analyzer we don't zero-initialize them. We used to,
but it accidentally regressed after r289618.

Under ARC, the array variable's initializer within DeclStmt is an
ImplicitValueInitExpr. Environment doesn't maintain any bindings for this
expression kind - instead it always knows that it's a known constant
(0 in our case), so it just returns the known value by calling
SValBuilder::makeZeroVal() (see EnvironmentManager::getSVal().
Commit r289618 had introduced reasonable behavior of SValBuilder::makeZeroVal()
for the arrays, which produces a zero-length compoundVal{}. When such value
is bound to arrays, in RegionStoreManager::bindArray() "remaining" items in the
array are default-initialized with zero, as in
RegionStoreManager::setImplicitDefaultValue(). The similar mechanism works when
an array is initialized by an initializer list that is too short, eg.
  int a[3] = { 1, 2 };
would result in a[2] initialized with 0. However, in case of variable-length
arrays it didn't know if any more items need to be added,
because, well, the length is variable.

Add the default binding anyway, regardless of how many actually need
to be added. We don't really care how many, because the default binding covers
the whole array anyway.

Differential Revision: https://reviews.llvm.org/D41478
rdar://problem/35477763

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

6 years ago[ASTImporterTest] Add mandatory testing with '-fdelayed-template-parsing'
Aleksei Sidorin [Thu, 21 Dec 2017 17:41:06 +0000 (17:41 +0000)]
[ASTImporterTest] Add mandatory testing with '-fdelayed-template-parsing'

 * While running ASTImporterTests, we often forget about Windows MSVC
   buildbots which enable '-fdelayed-template-parsing' by default.
   This leads to AST import errors because templates are not parsed
   and corresponding parts of AST are not built so importer cannot import them.
   It takes both reviewing time to find such issues and post-commit time
   to fix unexpected buildbot failures. To solve this issue, we enable testing
   with '-fdelayed-template-parsing' option enabled by default in addition
   to testing with default compiler options. This allows us to catch
   the problem during development.

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

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

6 years agoAdded helper to get size of PrecompiledPreamble
Ilya Biryukov [Thu, 21 Dec 2017 14:04:39 +0000 (14:04 +0000)]
Added helper to get size of PrecompiledPreamble

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

6 years ago[CodeGen] Fix access sizes in new-format TBAA tags
Ivan A. Kosarev [Thu, 21 Dec 2017 08:14:16 +0000 (08:14 +0000)]
[CodeGen] Fix access sizes in new-format TBAA tags

The new format requires to specify both the type of the access
and its size. This patch fixes setting access sizes for TBAA tags
that denote accesses to structure members. This fix affects all
future TBAA metadata tests for the new format, so I guess we
don't need any special tests for this fix.

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

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

6 years agoFix for PR32990
Erich Keane [Thu, 21 Dec 2017 02:07:46 +0000 (02:07 +0000)]
Fix for PR32990

This fixes the bug in https://bugs.llvm.org/show_bug.cgi?id=32990.

Patch By: zahiraam
Differential Revision: https://reviews.llvm.org/D39063

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

6 years agoReverting a file that snuck in with r321229 by accident.
Aaron Ballman [Thu, 21 Dec 2017 01:34:46 +0000 (01:34 +0000)]
Reverting a file that snuck in with r321229 by accident.

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

6 years ago[ubsan] Diagnose noreturn functions which return
Vedant Kumar [Thu, 21 Dec 2017 00:10:25 +0000 (00:10 +0000)]
[ubsan] Diagnose noreturn functions which return

Diagnose 'unreachable' UB when a noreturn function returns.

  1. Insert a check at the end of functions marked noreturn.

  2. A decl may be marked noreturn in the caller TU, but not marked in
     the TU where it's defined. To diagnose this scenario, strip away the
     noreturn attribute on the callee and insert check after calls to it.

Testing: check-clang, check-ubsan, check-ubsan-minimal, D40700

rdar://33660464

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

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

6 years ago[Driver] Ensure no overlap between trapping & recoverable sanitizers. NFC.
Vedant Kumar [Thu, 21 Dec 2017 00:10:24 +0000 (00:10 +0000)]
[Driver] Ensure no overlap between trapping & recoverable sanitizers. NFC.

This is NFC because in EmitCheck(), -fsanitize-trap=X overrides
-fsanitize-recover=X.

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

6 years agoReverting r321223 and its follow-up commit because of failing bots due to Misc/ast...
Aaron Ballman [Wed, 20 Dec 2017 23:17:29 +0000 (23:17 +0000)]
Reverting r321223 and its follow-up commit because of failing bots due to Misc/ast-dump-color.cpp.

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

6 years agoSilence a -Wreorder warning from r321223.
Aaron Ballman [Wed, 20 Dec 2017 23:11:05 +0000 (23:11 +0000)]
Silence a -Wreorder warning from r321223.

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

6 years agoAdd a printing policy to the ASTDumper.
Aaron Ballman [Wed, 20 Dec 2017 22:04:54 +0000 (22:04 +0000)]
Add a printing policy to the ASTDumper.

This allows you to dump C++ code that spells bool instead of _Bool, leaves off the elaborated type specifiers when printing struct or class names, and other C-isms.

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

6 years agoFix an assertion failure regression in isDesignatorAtObjectEnd for
Alex Lorenz [Wed, 20 Dec 2017 21:03:38 +0000 (21:03 +0000)]
Fix an assertion failure regression in isDesignatorAtObjectEnd for
__builtin_object_size with incomplete array type in struct

The commit r316245 introduced a regression that causes an assertion failure when
Clang tries to cast an IncompleteArrayType to a PointerType when evaluating
__builtin_object_size.

rdar://36094951

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

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

6 years ago[hwasan] Implement -fsanitize-recover=hwaddress.
Evgeniy Stepanov [Wed, 20 Dec 2017 19:05:44 +0000 (19:05 +0000)]
[hwasan] Implement -fsanitize-recover=hwaddress.

Summary: Very similar to AddressSanitizer, with the exception of the error type encoding.

Reviewers: kcc, alekseyshl

Subscribers: cfe-commits, kubamracek, llvm-commits, hiraditya

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

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

6 years agoAdd support for ObjectFormat to TargetSpecificAttr
Erich Keane [Wed, 20 Dec 2017 18:51:08 +0000 (18:51 +0000)]
Add support for ObjectFormat to TargetSpecificAttr

Looking through the code, I saw a FIXME on IFunc to switch it
to a target specific attribute. In looking through it, i saw that
the no-longer-appropriately-named TargetArch didn't support ObjectFormat
checking.

This patch changes the name of TargetArch to TargetSpecific
(since it checks much more than just Arch), makes "Arch" optional, adds
support for ObjectFormat, better documents the TargetSpecific type, and
changes IFunc over to a TargetSpecificAttr.

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

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

6 years agoMake DiagnosticIDs::getAllDiagnostics use std::vector. NFC.
Gabor Horvath [Wed, 20 Dec 2017 16:55:41 +0000 (16:55 +0000)]
Make DiagnosticIDs::getAllDiagnostics use std::vector. NFC.

The size of the result vector is currently around 4600 with
Flavor::WarningOrError, which makes std::vector a better candidate than
llvm::SmallVector.

Patch by: Andras Leitereg!

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

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

6 years ago[clang] Add BeforeExecute method to PrecompiledPreamble
Ilya Biryukov [Wed, 20 Dec 2017 16:48:56 +0000 (16:48 +0000)]
[clang] Add BeforeExecute method to PrecompiledPreamble

Summary: Adds BeforeExecute method to PrecompiledPreamble to be called
before Execute(). This method can be overriden.

Patch by William Enright.

Reviewers: malaperle, ilya-biryukov

Reviewed By: ilya-biryukov

Subscribers: arphaman, cfe-commits, ilya-biryukov

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

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

6 years ago[Complex] Don't use __div?c3 when building with fast-math.
Florian Hahn [Wed, 20 Dec 2017 15:50:52 +0000 (15:50 +0000)]
[Complex] Don't use __div?c3 when building with fast-math.

Summary: Plant an inline version of "((ac+bd)/(cc+dd)) + i((bc-ad)/(cc+dd))" instead.

Patch by Paul Walker.

Reviewed By: hfinkel

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

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

6 years ago[Frontend] Handle skipped bodies in template instantiations
Ilya Biryukov [Wed, 20 Dec 2017 14:32:38 +0000 (14:32 +0000)]
[Frontend] Handle skipped bodies in template instantiations

Summary:
- Fixed an assert in Sema::InstantiateFunctionDefinition and added
  support for instantiating a function template with skipped body.
- Properly call setHasSkippedBody for FunctionTemplateDecl passed to
  Sema::ActOnSkippedFunctionBody.

Reviewers: sepavloff, bkramer

Reviewed By: sepavloff

Subscribers: klimek, cfe-commits

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

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

6 years agoRemove llvm::MemoryBuffer const_casts
Pavel Labath [Wed, 20 Dec 2017 11:34:38 +0000 (11:34 +0000)]
Remove llvm::MemoryBuffer const_casts

Summary:
llvm has grown a WritableMemoryBuffer class, which is convertible
(inherits from) a MemoryBuffer. We can use it to avoid conts_casting the
buffer contents when we want to write to it.

Reviewers: dblaikie, rsmith

Subscribers: cfe-commits

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

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

6 years ago[darwin][driver] Warn about mismatching -<os>-version-min rather than
Alex Lorenz [Wed, 20 Dec 2017 02:31:30 +0000 (02:31 +0000)]
[darwin][driver] Warn about mismatching -<os>-version-min rather than
superfluous -<os>-version-min compiler option

rdar://35813850

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

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

6 years agoRevert r320942, "[ASTImporter] Support importing FunctionTemplateDecl and CXXDependen...
Peter Collingbourne [Wed, 20 Dec 2017 01:47:08 +0000 (01:47 +0000)]
Revert r320942, "[ASTImporter] Support importing FunctionTemplateDecl and CXXDependentScopeMemberExpr"

Caused a test failure on Windows:

[ RUN      ] ImportExpr.ImportCXXDependentScopeMemberExpr
C:\b\rr\tmppzcp4w\w\src\third_party\llvm\tools\clang\unittests\AST\ASTImporterTest.cpp(526): error: Value of: testImport("template <typename T> class C { T t; };" "template <typename T> void declToImport() {" "  C<T> d;" "  d.t;" "}", Lang_CXX, "", Lang_CXX, Verifier, functionTemplateDecl(has(functionDecl(has(compoundStmt( has(cxxDependentScopeMemberExpr())))))))
  Actual: false (Could not find match)
Expected: true
C:\b\rr\tmppzcp4w\w\src\third_party\llvm\tools\clang\unittests\AST\ASTImporterTest.cpp(534): error: Value of: testImport("template <typename T> class C { T t; };" "template <typename T> void declToImport() {" "  C<T> d;" "  (&d)->t;" "}", Lang_CXX, "", Lang_CXX, Verifier, functionTemplateDecl(has(functionDecl(has(compoundStmt( has(cxxDependentScopeMemberExpr())))))))
  Actual: false (Could not find match)
Expected: true
[  FAILED  ] ImportExpr.ImportCXXDependentScopeMemberExpr (37 ms)

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

6 years ago[analyzer] De-duplicate path diagnostics for each exploded graph node.
Artem Dergachev [Wed, 20 Dec 2017 01:17:53 +0000 (01:17 +0000)]
[analyzer] De-duplicate path diagnostics for each exploded graph node.

The bugreporter::trackNullOrUndefValue() mechanism contains a system of bug
reporter visitors that recursively call each other in order to track where a
null or undefined value came from, where each visitor represents a particular
tracking mechanism (track how the value was stored, track how the value was
returned from a function, track how the value was constrained to null, etc.).

Each visitor is only added once per value it needs to track. Almost. One
exception from this rule would be FindLastStoreBRVisitor that has two operation
modes: it contains a flag that indicates whether null stored values should be
suppressed. Two instances of FindLastStoreBRVisitor with different values of
this flag are considered to be different visitors, so they can be added twice
and produce the same diagnostic twice. This was indeed the case in the affected
test.

With the current logic of this whole machinery, such duplication seems
unavoidable. We should be able to safely add visitors with different flag
values without constructing duplicate diagnostic pieces. Hence the effort
in this commit to de-duplicate diagnostics regardless of what visitors
have produced them.

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

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

6 years ago[analyzer] trackNullOrUndefValue: always track through parentheses and casts.
Artem Dergachev [Wed, 20 Dec 2017 01:03:22 +0000 (01:03 +0000)]
[analyzer] trackNullOrUndefValue: always track through parentheses and casts.

When trying to figure out where a null or undefined value came from,
parentheses and cast expressions are either completely irrelevant, or,
in the case of lvalue-to-rvale cast, straightforwardly lead us in the right
direction when we remove them.

There is a regression that causes a certain diagnostic to appear twice in the
path-notes.cpp test (changed to FIXME). It would be addressed in the next
commit.

Differential revision: https://reviews.llvm.org/D41254

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

6 years ago[analyzer] trackNullOrUndefValue: track last store to non-variables.
Artem Dergachev [Wed, 20 Dec 2017 00:47:17 +0000 (00:47 +0000)]
[analyzer] trackNullOrUndefValue: track last store to non-variables.

When reporting certain kinds of analyzer warnings, we use the
bugreporter::trackNullOrUndefValue mechanism, which is part of public checker
API, to understand where a zero, null-pointer, or garbage value came from,
which would highlight important events with respect to that value in the
diagnostic path notes, and help us suppress various false positives that result
from values appearing from particular sources.

Previously, we've lost track of the value when it was written into a memory
region that is not a plain variable. Now try to resume tracking in this
situation by finding where the last write to this region has occured.

Differential revision: https://reviews.llvm.org/D41253

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

6 years ago[X86] Add more CPUID bits to cpuid.h to match gcc and support icelake features.
Craig Topper [Wed, 20 Dec 2017 00:46:09 +0000 (00:46 +0000)]
[X86] Add more CPUID bits to cpuid.h to match gcc and support icelake features.

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

6 years ago[analyzer] Fix a crash during C++17 aggregate construction of base objects.
Artem Dergachev [Wed, 20 Dec 2017 00:40:38 +0000 (00:40 +0000)]
[analyzer] Fix a crash during C++17 aggregate construction of base objects.

Since C++17, classes that have base classes can potentially be initialized as
aggregates. Trying to construct such objects through brace initialization was
causing the analyzer to crash when the base class has a non-trivial constructor,
while figuring target region for the base class constructor, because the parent
stack frame didn't contain the constructor of the subclass, because there is
no constructor for subclass, merely aggregate initialization.

This patch avoids the crash, but doesn't provide the actually correct region
for the constructor, which still remains to be fixed. Instead, construction
goes into a fake temporary region which would be immediately discarded. Similar
extremely conservative approach is used for other cases in which the logic for
finding the target region is not yet implemented, including aggregate
initialization with fields instead of base-regions (which is not C++17-specific
but also never worked, just didn't crash).

Differential revision: https://reviews.llvm.org/D40841

rdar://problem/35441058

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

6 years agoAdd explicit break (PR35700).
Adrian Prantl [Tue, 19 Dec 2017 22:21:48 +0000 (22:21 +0000)]
Add explicit break (PR35700).

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

6 years agoSilence a bunch of implicit fallthrough warnings
Adrian Prantl [Tue, 19 Dec 2017 22:06:11 +0000 (22:06 +0000)]
Silence a bunch of implicit fallthrough warnings

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

6 years ago[driver][darwin] Set the 'simulator' environment when it's specified
Alex Lorenz [Tue, 19 Dec 2017 19:56:14 +0000 (19:56 +0000)]
[driver][darwin] Set the 'simulator' environment when it's specified
in '-target'

rdar://35742458

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

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

6 years ago[driver][darwin] Take the OS version specified in "-target" as the target
Alex Lorenz [Tue, 19 Dec 2017 19:05:04 +0000 (19:05 +0000)]
[driver][darwin] Take the OS version specified in "-target" as the target
OS instead of inferring it from SDK / environment

The OS version is specified in -target should be used instead of the one in an
environment variable / SDK name.

rdar://35813850

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

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

6 years ago[clang] -foptimization-record-file= should imply -fsave-optimization-record
Jonas Devlieghere [Tue, 19 Dec 2017 17:16:45 +0000 (17:16 +0000)]
[clang] -foptimization-record-file= should imply -fsave-optimization-record

The Clang option -foptimization-record-file= controls which file an
optimization record is output to. Optimization records are output if you
use the Clang option -fsave-optimization-record. If you specify the
first option without the second, you get a warning that the command line
argument was unused. Passing -foptimization-record-file= should imply
-fsave-optimization-record.

This fixes PR33670

Patch by: Dmitry Venikov <venikov@phystech.edu>

Differential revision: https://reviews.llvm.org/D39834

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

6 years agoAdd renamed .o files that were omitted by "git llvm push" command
Walter Lee [Tue, 19 Dec 2017 16:34:13 +0000 (16:34 +0000)]
Add renamed .o files that were omitted by "git llvm push" command

Original commit is at: https://reviews.llvm.org/D41295.

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