]> granicus.if.org Git - clang/log
clang
7 years agoOpenCL: Assume functions are convergent
Matt Arsenault [Fri, 6 Oct 2017 19:34:40 +0000 (19:34 +0000)]
OpenCL: Assume functions are convergent

This was done for CUDA functions in r261779, and for the same
reason this also needs to be done for OpenCL. An arbitrary
function could have a barrier() call in it, which in turn
requires the calling function to be convergent.

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

7 years ago[ObjC] Don't warn on readwrite properties with custom setters that
Alex Lorenz [Fri, 6 Oct 2017 19:24:26 +0000 (19:24 +0000)]
[ObjC] Don't warn on readwrite properties with custom setters that
override readonly properties from protocols

rdar://34192541

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

7 years ago[refactor] add support for refactoring options
Alex Lorenz [Fri, 6 Oct 2017 18:12:29 +0000 (18:12 +0000)]
[refactor] add support for refactoring options

This commit adds initial support for refactoring options. One can now use
optional and required std::string options.

This commit also adds a NewNameOption for the local-rename refactoring action to
allow rename to work with custom names.

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

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

7 years ago[lit] Improve tool substitution in lit.
Zachary Turner [Fri, 6 Oct 2017 17:54:46 +0000 (17:54 +0000)]
[lit] Improve tool substitution in lit.

This addresses two sources of inconsistency in test configuration
files.

1. Substitution boundaries.  Previously you would specify a
   substitution, such as 'lli', and then additionally a set
   of characters that should fail to match before and after
   the tool.  This was used, for example, so that matches that
   are parts of full paths would not be replaced.  But not all
   tools did this, and those that did would often re-invent
   the set of characters themselves, leading to inconsistency.
   Now, every tool substitution defaults to using a sane set
   of reasonable defaults and you have to explicitly opt out
   of it.  This actually fixed a few latent bugs that were
   never being surfaced, but only on accident.

2. There was no standard way for the system to decide how to
   locate a tool.  Sometimes you have an explicit path, sometimes
   we would search for it and build up a path ourselves, and
   sometimes we would build up a full command line.  Furthermore,
   there was no standardized way to handle missing tools.  Do we
   warn, fail, ignore, etc?  All of this is now encapsulated in
   the ToolSubst class.  You either specify an exact command to
   run, or an instance of FindTool('<tool-name>') and everything
   else just works.  Furthermore, you can specify an action to
   take if the tool cannot be resolved.

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

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

7 years agoRun pyformat on lit code.
Zachary Turner [Fri, 6 Oct 2017 17:54:27 +0000 (17:54 +0000)]
Run pyformat on lit code.

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

7 years agoFor Windows, allow .exe extension in a test.
Paul Robinson [Fri, 6 Oct 2017 17:12:28 +0000 (17:12 +0000)]
For Windows, allow .exe extension in a test.

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

7 years ago[OPENMP] Do not capture local static variables.
Alexey Bataev [Fri, 6 Oct 2017 17:00:28 +0000 (17:00 +0000)]
[OPENMP] Do not capture local static variables.

Previously we may erroneously try to capture locally declared static
variables, which will lead to crash for target-based constructs.
Patch fixes this problem.

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

7 years agoSplit X86::BI__builtin_cpu_init handling into own function[NFC]
Erich Keane [Fri, 6 Oct 2017 16:40:45 +0000 (16:40 +0000)]
Split X86::BI__builtin_cpu_init handling into own function[NFC]

The Cpu Init functionality is required for the target
attribute, so this patch simply splits it out into its own
function, exactly like CpuIs and CpuSupports.

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

7 years ago[OPENMP] Capture references to global variables.
Alexey Bataev [Fri, 6 Oct 2017 16:17:25 +0000 (16:17 +0000)]
[OPENMP] Capture references to global variables.

In C++11 variable to global variables are considered as constant
expressions and these variables are not captured in the outlined
regions. Patch allows capturing of such variables in the OpenMP regions.

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

7 years agoFix one more check string after r315045.
Akira Hatanaka [Fri, 6 Oct 2017 08:19:31 +0000 (08:19 +0000)]
Fix one more check string after r315045.

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

7 years agoRefine generation of TBAA information in clang
Ivan A. Kosarev [Fri, 6 Oct 2017 08:17:48 +0000 (08:17 +0000)]
Refine generation of TBAA information in clang

This patch is an attempt to clarify and simplify generation and
propagation of TBAA information. The idea is to pack all values
that describe a memory access, namely, base type, access type and
offset, into a single structure. This is supposed to make further
changes, such as adding support for unions and array members,
easier to prepare and review.

DecorateInstructionWithTBAA() is no more responsible for
converting types to tags. These implicit conversions not only
complicate reading the code, but also suggest assigning scalar
access tags while we generally prefer full-size struct-path tags.

TBAAPathTag is replaced with TBAAAccessInfo; the latter is now
the type of the keys of the cache map that translates access
descriptors to metadata nodes.

Fixed a bug with writing to a wrong map in
getTBAABaseTypeMetadata() (former getTBAAStructTypeInfo()).

We now check for valid base access types every time we
dereference a field. The original code only checks the top-level
base type. See isValidBaseType() / isTBAAPathStruct() calls.

Some entities have been renamed to sound more adequate and less
confusing/misleading in presence of path-aware TBAA information.

Now we do not lookup twice for the same cache entry in
getAccessTagInfo().

Refined relevant comments and descriptions.

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

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

7 years agoFix one more check string after r315045.
Akira Hatanaka [Fri, 6 Oct 2017 08:05:34 +0000 (08:05 +0000)]
Fix one more check string after r315045.

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

7 years agoFix check strings in test case and use llvm::to_string instead of
Akira Hatanaka [Fri, 6 Oct 2017 07:47:47 +0000 (07:47 +0000)]
Fix check strings in test case and use llvm::to_string instead of
std::to_string.

These changes were needed to fix bots that started failing after
r315045.

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

7 years ago[CodeGen] Emit a helper function for __builtin_os_log_format to reduce
Akira Hatanaka [Fri, 6 Oct 2017 07:12:46 +0000 (07:12 +0000)]
[CodeGen] Emit a helper function for __builtin_os_log_format to reduce
code size.

Currently clang expands a call to __builtin_os_log_format into a long
sequence of instructions at the call site, causing code size to
increase in some cases.

This commit attempts to reduce code size by emitting a helper function
that can be shared by calls to __builtin_os_log_format with similar
formats and arguments. The helper function has linkonce_odr linkage to
enable the linker to merge identical functions across translation units.
Attribute 'noinline' is attached to the helper function at -Oz so that
the inliner doesn't inline functions that can potentially be merged.

This commit also fixes a bug where the generated IR writes past the end
of the buffer when "%m" is the last specifier appearing in the format
string passed to __builtin_os_log_format.

Original patch by Duncan Exon Smith.

rdar://problem/34065973
rdar://problem/34196543

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

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

7 years ago[CMake] Add install-distribution-toolchain to stage2 target list
Chris Bieneman [Thu, 5 Oct 2017 22:48:34 +0000 (22:48 +0000)]
[CMake] Add install-distribution-toolchain to stage2 target list

This allows generating toolchains with just the distribution components instead of toolchains with everything.

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

7 years agoFor dllexport class templates, export specializations of member functions (PR34849)
Hans Wennborg [Thu, 5 Oct 2017 21:45:27 +0000 (21:45 +0000)]
For dllexport class templates, export specializations of member functions (PR34849)

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

7 years agoCleanup and generalize -shared-libasan.
Evgeniy Stepanov [Thu, 5 Oct 2017 20:14:00 +0000 (20:14 +0000)]
Cleanup and generalize -shared-libasan.

Summary:
* Rename -shared-libasan to -shared-libsan, keeping the old name as alias.
* Add -static-libsan for targets that default to shared.
* Remove an Android special case. It is now possible (but untested) to use static compiler-rt libraries there.
* Support libclang_rt.ubsan_standalone as a shared library.

Unlike GCC, this change applies -shared-libsan / -static-libsan to all sanitizers.
I don't see a point in multiple flags like -shared-libubsan, considering that most sanitizers
are not compatible with each other, and each link has basically a single shared/static choice.

Reviewers: vitalybuka, kcc, rsmith

Subscribers: srhines, cfe-commits

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

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

7 years agoFix two-phase name lookup for non-dependent overloaded operators.
Richard Smith [Thu, 5 Oct 2017 19:35:51 +0000 (19:35 +0000)]
Fix two-phase name lookup for non-dependent overloaded operators.

If we resolve an overloaded operator call to a specific function during
template definition, don't perform ADL during template instantiation.
Doing so finds overloads that we're not supposed to find.

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

7 years ago[OPENMP] Fix mapping|privatization of implicitly captured variables.
Alexey Bataev [Thu, 5 Oct 2017 17:51:39 +0000 (17:51 +0000)]
[OPENMP] Fix mapping|privatization of implicitly captured variables.

If the `defaultmap(tofrom:scalar)` clause is specified, the scalars must
be mapped with 'tofrom' modifiers, otherwise they must be captured as
firstprivates.

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

7 years ago[Analyzer Tests] Run static analyzer integration tests until the end,
George Karpenkov [Thu, 5 Oct 2017 17:32:06 +0000 (17:32 +0000)]
[Analyzer Tests] Run static analyzer integration tests until the end,

Do not stop at the first failure.

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

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

7 years ago[CodeGen] Unify generation of scalar and struct-path TBAA tags
Ivan A. Kosarev [Thu, 5 Oct 2017 11:08:17 +0000 (11:08 +0000)]
[CodeGen] Unify generation of scalar and struct-path TBAA tags

This patch makes it possible to produce access tags in a uniform
manner regardless whether the resulting tag will be a scalar or a
struct-path one. getAccessTagInfo() now takes care of the actual
translation of access descriptors to tags and can handle all
kinds of accesses. Facilities that specific to scalar accesses
are eliminated.

Some more details:
* DecorateInstructionWithTBAA() is not responsible for conversion
  of types to access tags anymore. Instead, it takes an access
  descriptor (TBAAAccessInfo) and generates corresponding access
  tag from it.
* getTBAAInfoForVTablePtr() reworked to
  getTBAAVTablePtrAccessInfo() that now returns the
  virtual-pointer access descriptor and not the virtual-point
  type metadata.
* Added function getTBAAMayAliasAccessInfo() that returns the
  descriptor for may-alias accesses.
* getTBAAStructTagInfo() renamed to getTBAAAccessTagInfo() as now
  it is the only way to generate access tag by a given access
  descriptor. It is capable of producing both scalar and
  struct-path tags, depending on options and availability of the
  base access type. getTBAAScalarTagInfo() and its cache
  ScalarTagMetadataCache are eliminated.
* Now that we do not need to care about whether the resulting
  access tag should be a scalar or struct-path one,
  getTBAAStructTypeInfo() is renamed to getBaseTypeInfo().
* Added function getTBAAAccessInfo() that constructs access
  descriptor by a given QualType access type.

This is part of D37826 reworked to be a separate patch to
simplify review.

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

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

7 years agoRevert r314977 "[CodeGen] Unify generation of scalar and struct-path TBAA tags"
Ivan A. Kosarev [Thu, 5 Oct 2017 11:05:43 +0000 (11:05 +0000)]
Revert r314977 "[CodeGen] Unify generation of scalar and struct-path TBAA tags"

D37826 has been mistakenly committed where it should be the patch from D38503.

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

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

7 years ago[CodeGen] Unify generation of scalar and struct-path TBAA tags
Ivan A. Kosarev [Thu, 5 Oct 2017 10:47:51 +0000 (10:47 +0000)]
[CodeGen] Unify generation of scalar and struct-path TBAA tags

This patch makes it possible to produce access tags in a uniform
manner regardless whether the resulting tag will be a scalar or a
struct-path one. getAccessTagInfo() now takes care of the actual
translation of access descriptors to tags and can handle all
kinds of accesses. Facilities that specific to scalar accesses
are eliminated.

Some more details:
* DecorateInstructionWithTBAA() is not responsible for conversion
  of types to access tags anymore. Instead, it takes an access
  descriptor (TBAAAccessInfo) and generates corresponding access
  tag from it.
* getTBAAInfoForVTablePtr() reworked to
  getTBAAVTablePtrAccessInfo() that now returns the
  virtual-pointer access descriptor and not the virtual-point
  type metadata.
* Added function getTBAAMayAliasAccessInfo() that returns the
  descriptor for may-alias accesses.
* getTBAAStructTagInfo() renamed to getTBAAAccessTagInfo() as now
  it is the only way to generate access tag by a given access
  descriptor. It is capable of producing both scalar and
  struct-path tags, depending on options and availability of the
  base access type. getTBAAScalarTagInfo() and its cache
  ScalarTagMetadataCache are eliminated.
* Now that we do not need to care about whether the resulting
  access tag should be a scalar or struct-path one,
  getTBAAStructTypeInfo() is renamed to getBaseTypeInfo().
* Added function getTBAAAccessInfo() that constructs access
  descriptor by a given QualType access type.

This is part of D37826 reworked to be a separate patch to
simplify review.

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

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

7 years ago[analyzer] Fix leak false positives on stuff put in C++/ObjC initializer lists.
Artem Dergachev [Thu, 5 Oct 2017 08:43:32 +0000 (08:43 +0000)]
[analyzer] Fix leak false positives on stuff put in C++/ObjC initializer lists.

The analyzer now realizes that C++ std::initializer_list objects and
Objective-C boxed structure/array/dictionary expressions can potentially
maintain a reference to the objects that were put into them. This avoids
false memory leak posivites and a few other issues.

This is a conservative behavior; for now, we do not model what actually happens
to the objects after being passed into such initializer lists.

rdar://problem/32918288
Differential Revision: https://reviews.llvm.org/D35216

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

7 years agoEnabling new pass manager in LTO (and thinLTO) link step.
Sean Fertile [Thu, 5 Oct 2017 01:50:48 +0000 (01:50 +0000)]
Enabling new pass manager in LTO (and thinLTO) link step.

Passes 'new-pass-manager' option to the linker plugin when the new pass
manager is enabled.

Patch by Graham Yiu.

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

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

7 years ago[Analyzer Tests] Fix misc bugs in analyzer reference results updater.
George Karpenkov [Thu, 5 Oct 2017 01:02:20 +0000 (01:02 +0000)]
[Analyzer Tests] Fix misc bugs in analyzer reference results updater.

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

7 years agoAdd testcase for r314956:
Richard Smith [Thu, 5 Oct 2017 00:48:18 +0000 (00:48 +0000)]
Add testcase for r314956:

PR33924: Merge block-scope anonymous declarations if there are multiple definitions of the enclosing function.

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

7 years agoPR33924: Merge block-scope anonymous declarations if there are multiple definitions...
Richard Smith [Thu, 5 Oct 2017 00:47:24 +0000 (00:47 +0000)]
PR33924: Merge block-scope anonymous declarations if there are multiple definitions of the enclosing function.

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

7 years agoRemove PendingBody mechanism for function and ObjC method deserialization.
Richard Smith [Thu, 5 Oct 2017 00:43:38 +0000 (00:43 +0000)]
Remove PendingBody mechanism for function and ObjC method deserialization.

In its place, track on the canonical function declaration whether there is a
declaration with a body (and if so, which one). This brings function definition
handling in line with what we do in all other contexts, and is necessary to
allow us to merge declarations within multiple definitions of the same function
(eg, PR33924).

No functionality change intended.

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

7 years agoFix 'section' warning behavior with tentatively-defined values
Erich Keane [Wed, 4 Oct 2017 22:16:24 +0000 (22:16 +0000)]
Fix 'section' warning behavior with tentatively-defined values

As reported on cfe-commits, r314262 resulted in tentatively-defined
variables not being excluded for the warning.

Patch By: Elizabeth Andrews

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

7 years ago[OpenCL] Clean up and add missing fields for block struct
Yaxun Liu [Wed, 4 Oct 2017 20:32:17 +0000 (20:32 +0000)]
[OpenCL] Clean up and add missing fields for block struct

Currently block is translated to a structure equivalent to

struct Block {
  void *isa;
  int flags;
  int reserved;
  void *invoke;
  void *descriptor;
};
Except invoke, which is the pointer to the block invoke function,
all other fields are useless for OpenCL, which clutter the IR and
also waste memory since the block struct is passed to the block
invoke function as argument.

On the other hand, the size and alignment of the block struct is
not stored in the struct, which causes difficulty to implement
__enqueue_kernel as library function, since the library function
needs to know the size and alignment of the argument which needs
to be passed to the kernel.

This patch removes the useless fields from the block struct and adds
size and align fields. The equivalent block struct will become

struct Block {
  int size;
  int align;
  generic void *invoke;
 /* custom fields */
};
It also changes the pointer to the invoke function to be
a generic pointer since the address space of a function
may not be private on certain targets.

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

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

7 years ago[Hexagon] Move getHexagonTargetFeatures to Hexagon.cpp (NFC)
Sumanth Gundapaneni [Wed, 4 Oct 2017 19:09:29 +0000 (19:09 +0000)]
[Hexagon] Move getHexagonTargetFeatures to Hexagon.cpp (NFC)

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

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

7 years ago[analyzer] Fix autodetection of binding types.
Artem Dergachev [Wed, 4 Oct 2017 15:59:40 +0000 (15:59 +0000)]
[analyzer] Fix autodetection of binding types.

In ProgramState::getSVal(Location, Type) API which dereferences a pointer value,
when the optional Type parameter is not supplied and the Location is not typed,
type should have been guessed on a best-effort basis by inspecting the Location
more deeply. However, this never worked; the auto-detected type was instead
a pointer type to the correct type.

Fixed the issue and added various test cases to demonstrate which parts of the
analyzer were affected (uninitialized pointer argument checker, C++ trivial copy
modeling, Google test API modeling checker).

Additionally, autodetected void types are automatically replaced with char,
in order to simplify checker APIs. Which means that if the location is a void
pointer, getSVal() would read the first byte through this pointer
and return its symbolic value.

Fixes pr34305.

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

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

7 years ago[OpenMP] Initial implementation of teams distribute code generation
Carlo Bertolli [Wed, 4 Oct 2017 14:12:09 +0000 (14:12 +0000)]
[OpenMP] Initial implementation of teams distribute code generation

https://reviews.llvm.org/D38371

This patch implements codegen for the combined 'teams distribute" OpenMP pragma and adds regression tests for all its clauses.

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

7 years ago[test] Pass in fixed triple for openmp-offload.c
Jonas Hahnfeld [Wed, 4 Oct 2017 13:54:09 +0000 (13:54 +0000)]
[test] Pass in fixed triple for openmp-offload.c

This should fix the test on other architectures.

Related to: https://reviews.llvm.org/D38372

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

7 years ago[OpenMP] Fix passing of -m arguments correctly
Jonas Hahnfeld [Wed, 4 Oct 2017 13:32:59 +0000 (13:32 +0000)]
[OpenMP] Fix passing of -m arguments correctly

The recent fix in D38258 was wrong: getAuxTriple() only returns
non-null values for the CUDA toolchain. That is why the now added
test for PPC and X86 failed.

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

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

7 years agoFix assertion failure in thread safety analysis (PR34800).
Alexander Kornienko [Wed, 4 Oct 2017 10:24:36 +0000 (10:24 +0000)]
Fix assertion failure in thread safety analysis (PR34800).

Summary:
Fix an assertion failure (http://llvm.org/PR34800) and clean up unused code relevant to the fixed logic.

A bit of context: when `SExprBuilder::translateMemberExpr` is called on a member expression that involves a conversion operator, for example, `til::Project` constructor can't just call `getName()` on it, since the name is not a simple identifier. In order to handle this case I've introduced an optional string to print the member name to. I discovered that the other two `til::Project` constructors are not used, so it was better to delete them instead of ensuring they work correctly with the new logic.

Reviewers: aaron.ballman

Reviewed By: aaron.ballman

Subscribers: cfe-commits

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

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

7 years agoMove verbosity check for opt remarks to the diag handler.
Adam Nemet [Wed, 4 Oct 2017 04:25:31 +0000 (04:25 +0000)]
Move verbosity check for opt remarks to the diag handler.

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

7 years agoWe allow implicit function declarations as an extension in all C dialects. Remove...
Richard Smith [Wed, 4 Oct 2017 01:58:22 +0000 (01:58 +0000)]
We allow implicit function declarations as an extension in all C dialects. Remove OpenCL special case.

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

7 years agoPR34822: Fix a collection of related bugs with our handling of C89 implicit function...
Richard Smith [Wed, 4 Oct 2017 01:49:22 +0000 (01:49 +0000)]
PR34822: Fix a collection of related bugs with our handling of C89 implicit function declarations.

We were injecting the function into the wrong semantic context, resulting in it
failing to be registered as a global for redeclaration lookup. As a
consequence, we accepted invalid code since r310616.

Fixing that resulted in the "out-of-scope declaration" diagnostic firing a lot
more often. It turned out that warning codepath was non-conforming, because it
did not cause us to inject the implicitly-declared function into the enclosing
block scope. We now only warn if the type of the out-of-scope declaration
doesn't match the type of an implicitly-declared function; in all other cases,
we produce the normal warning for an implicitly-declared function.

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

7 years ago[ExprConstant] Allow constexpr ctor to modify non static data members
Erik Pilkington [Wed, 4 Oct 2017 00:18:55 +0000 (00:18 +0000)]
[ExprConstant] Allow constexpr ctor to modify non static data members

Fixes PR19741.

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

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

7 years ago[Analyzer] Re-apply r314820 with a fix for StringRef lifetime.
George Karpenkov [Tue, 3 Oct 2017 23:15:35 +0000 (23:15 +0000)]
[Analyzer] Re-apply r314820 with a fix for StringRef lifetime.

Fixes the test failure: temporary is now bound to std::string, tests
fully pass on Linux.

This reverts commit b36ee0924038e1d95ea74230c62d46e05f80587e.

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

7 years ago[CMake] Minor updates to Apple CMake caches
Chris Bieneman [Tue, 3 Oct 2017 21:59:53 +0000 (21:59 +0000)]
[CMake] Minor updates to Apple CMake caches

* Turn off embedded compiler-rt builds in stage1
* Support generating Xcode toolchains from Stage2 build configurations

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

7 years agoSuppress -Wmissing-braces warning when aggregate-initializing a struct with a single...
Richard Smith [Tue, 3 Oct 2017 20:36:00 +0000 (20:36 +0000)]
Suppress -Wmissing-braces warning when aggregate-initializing a struct with a single field that is itself an aggregate.

In C++, such initialization of std::array<T, N> types is guaranteed to work by
the standard, is completely idiomatic, and the "suggested" alternative from
Clang was technically invalid.

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

7 years ago[OPENMP] Allow use of declare target directive inside struct
Alexey Bataev [Tue, 3 Oct 2017 20:00:00 +0000 (20:00 +0000)]
[OPENMP] Allow use of declare target directive inside struct
declaration.

Patch allows using of the `#pragma omp declare target`| `#pragma omp end
declare target` directives inside the structures if we need to mark as
declare target only some static members.

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

7 years agoRevert r314820 "[Analyzer] More granular special casing in RetainCountChecker"
Tim Shen [Tue, 3 Oct 2017 19:39:02 +0000 (19:39 +0000)]
Revert r314820 "[Analyzer] More granular special casing in RetainCountChecker"

The test retain-release.m fails with this patch.

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

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

7 years ago[Analyzer] More granular special casing in RetainCountChecker
George Karpenkov [Tue, 3 Oct 2017 18:12:15 +0000 (18:12 +0000)]
[Analyzer] More granular special casing in RetainCountChecker

Only assume that IOBSDNameMatching and friends increment a reference counter
if their return type is a CFMutableDictionaryRef.

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

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

7 years ago[OpenCL] Fix checking of vector type casting
Yaxun Liu [Tue, 3 Oct 2017 14:34:29 +0000 (14:34 +0000)]
[OpenCL] Fix checking of vector type casting

Currently clang allows the following code

int a;
int b = (const int) a;
However it does not the following code

int4 a;
int4 b = (const int4) a;
This is because Clang compares the qualified types instead of unqualified types for vector type casting, which causes the inconsistency.

This patch fixes that.

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

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

7 years ago[CodeGen] Fix propagation of TBAA info for atomic accesses
Ivan A. Kosarev [Tue, 3 Oct 2017 11:31:42 +0000 (11:31 +0000)]
[CodeGen] Fix propagation of TBAA info for atomic accesses

This patch fixes clang to propagate complete TBAA information for
atomic accesses and not just the final access types. Prepared
against D38456 and requires it to be committed first.

This is part of D37826 reworked to be a separate patch to
simplify review.

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

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

7 years ago[CodeGen] Introduce generic TBAA access descriptors
Ivan A. Kosarev [Tue, 3 Oct 2017 10:52:39 +0000 (10:52 +0000)]
[CodeGen] Introduce generic TBAA access descriptors

With this patch we implement a concept of TBAA access descriptors
that are capable of representing both scalar and struct-path
accesses in a generic way.

This is part of D37826 reworked to be a separate patch to
simplify review.

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

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

7 years agoR34811: Allow visibilities other than 'default' for VisibleNoLinkage entities.
Richard Smith [Tue, 3 Oct 2017 01:58:15 +0000 (01:58 +0000)]
R34811: Allow visibilities other than 'default' for VisibleNoLinkage entities.

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

7 years agoAdd parens around the boolean condition of one of the added asserts in r314747 ...
Faisal Vali [Tue, 3 Oct 2017 01:33:36 +0000 (01:33 +0000)]
Add parens around the boolean condition of one of the added asserts in r314747 ...
  ... in the hopes of teaching the bots the gift of silence ;)

For quick reference: https://reviews.llvm.org/rL314747

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

7 years ago[ubsan] Skip alignment checks which are folded away
Vedant Kumar [Tue, 3 Oct 2017 01:27:26 +0000 (01:27 +0000)]
[ubsan] Skip alignment checks which are folded away

Don't emit alignment checks which the IR constant folder throws away.

I've tested this out on X86FastISel.cpp. While this doesn't decrease
end-to-end compile-time significantly, it results in 122 fewer type
checks (1% reduction) overall, without adding any real complexity.

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

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

7 years ago[ubsan] Save the result of getLLVMContext. NFC.
Vedant Kumar [Tue, 3 Oct 2017 01:27:26 +0000 (01:27 +0000)]
[ubsan] Save the result of getLLVMContext. NFC.

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

7 years ago[ubsan] Add helpers to decide when null/vptr checks are required. NFC.
Vedant Kumar [Tue, 3 Oct 2017 01:27:25 +0000 (01:27 +0000)]
[ubsan] Add helpers to decide when null/vptr checks are required. NFC.

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

7 years ago[ubsan] Save a ptrtoint when emitting alignment checks
Vedant Kumar [Tue, 3 Oct 2017 01:27:24 +0000 (01:27 +0000)]
[ubsan] Save a ptrtoint when emitting alignment checks

The alignment check emits a ptrtoint instruction which can be reused in
the call to the diagnostic handler.

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

7 years agoRemove an assertion I added from the refactoring of pasteTokens (https://reviews...
Faisal Vali [Tue, 3 Oct 2017 01:20:40 +0000 (01:20 +0000)]
Remove an assertion I added from the refactoring of pasteTokens (https://reviews.llvm.org/rL314747).
  - it made the bots v angry!

I'm not exactly sure why the assertion doesn't hold - if anyone has any insight - would appreciate it.

Thanks!

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

7 years ago[NFC] Refactor PasteTokens so that it can be passed the Token Stream and Index to...
Faisal Vali [Tue, 3 Oct 2017 00:52:14 +0000 (00:52 +0000)]
[NFC] Refactor PasteTokens so that it can be passed the Token Stream and Index to start concatenating at.
  In passing:
    - change the name of the function to pasteTokens c/w coding standards
    - rename CurToken to CurTokenIdx (since it is not the token, but the index)
    - add doxygen comments to document some of pasteTokens' functionality
    - use parameter names different from the data member names.

This will be useful for implementing __VA_OPT__ (https://reviews.llvm.org/D35782#inline-322587)

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

7 years ago[clang-cl] Claim ignored /O[12xd] arguments
Reid Kleckner [Tue, 3 Oct 2017 00:14:03 +0000 (00:14 +0000)]
[clang-cl] Claim ignored /O[12xd] arguments

Fixes PR34809

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

7 years agoPR33839: Fix -Wunused handling for structured binding declarations.
Richard Smith [Mon, 2 Oct 2017 22:43:36 +0000 (22:43 +0000)]
PR33839: Fix -Wunused handling for structured binding declarations.

We warn about a structured binding declaration being unused only if none of its
bindings are used.

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

7 years ago[Analyzer] Avoid copy and modifying passed reference in BodyFarm::create_call_once
George Karpenkov [Mon, 2 Oct 2017 21:01:46 +0000 (21:01 +0000)]
[Analyzer] Avoid copy and modifying passed reference in BodyFarm::create_call_once

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

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

7 years agoAdd std::move in RefactoringActionRulesTest.cpp
Alex Lorenz [Mon, 2 Oct 2017 19:02:42 +0000 (19:02 +0000)]
Add std::move in RefactoringActionRulesTest.cpp

Should fix http://green.lab.llvm.org/green/job/clang-stage1-cmake-RA-incremental

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

7 years agoAdd support for Myriad ma2x8x series of CPUs
Walter Lee [Mon, 2 Oct 2017 18:50:57 +0000 (18:50 +0000)]
Add support for Myriad ma2x8x series of CPUs

Summary:
Also:
- Add support for some older Myriad CPUs that were missing.
- Fix some incorrect compiler defines for exisitng CPUs.

Reviewers: jyknight

Subscribers: fedor.sergeev

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

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

7 years ago[refactor] Simplify the refactoring interface
Alex Lorenz [Mon, 2 Oct 2017 18:42:43 +0000 (18:42 +0000)]
[refactor] Simplify the refactoring interface

This commit simplifies the interface for the refactoring action rules and the
refactoring requirements. It merges the selection constraints and the selection
requirements into one class. The refactoring actions rules must now be
implemented using subclassing instead of raw function / lambda pointers. This
change also removes a bunch of template-based traits and other
template definitions that are now redundant.

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

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

7 years agoAdd a testcase to check that debug info is upgraded when compiling LLVM IR
Adrian Prantl [Mon, 2 Oct 2017 18:31:52 +0000 (18:31 +0000)]
Add a testcase to check that debug info is upgraded when compiling LLVM IR
through clang.

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

7 years agoRevert "Add /System/Library/PrivateFrameworks as a header search path."
Douglas Gregor [Mon, 2 Oct 2017 18:22:19 +0000 (18:22 +0000)]
Revert "Add /System/Library/PrivateFrameworks as a header search path."

This reverts commit f7a95215a435aa8d5f64f43a8bb23ba077270755.

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

7 years ago[Analyzer] Make testing scripts flake8 compliant
George Karpenkov [Mon, 2 Oct 2017 17:59:12 +0000 (17:59 +0000)]
[Analyzer] Make testing scripts flake8 compliant

Differential Review: https://reviews.llvm.org/D38213

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

7 years ago[CUDA] Fix name of __activemask()
Jonas Hahnfeld [Mon, 2 Oct 2017 17:50:11 +0000 (17:50 +0000)]
[CUDA] Fix name of __activemask()

The name has two underscores in the official CUDA documentation:
http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#warp-vote-functions

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

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

7 years agoRevert "[Sema] Warn on attribute nothrow conflicting with language specifiers"
Reid Kleckner [Mon, 2 Oct 2017 17:16:14 +0000 (17:16 +0000)]
Revert "[Sema] Warn on attribute nothrow conflicting with language specifiers"

This reverts r314461.

It is warning on user code that uses END_COM_MAP(), which expands to
declare QueryInterface with conflicting exception specifers. I've spent
a while trying to understand why, but haven't been able to extract a
reduced test case. Let's revert and I'll keep trying.

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

7 years agoUpdate IUnknown lit test to pass on Win32
Erich Keane [Mon, 2 Oct 2017 16:49:32 +0000 (16:49 +0000)]
Update IUnknown lit test to pass on Win32

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

7 years ago[OPENMP] Capture argument of `device` clause for target-based
Alexey Bataev [Mon, 2 Oct 2017 16:32:39 +0000 (16:32 +0000)]
[OPENMP] Capture argument of `device` clause for target-based
directives.

The argument of the `device` clause in target-based executable
directives must be captured to support codegen for the `target`
directives with the `depend` clauses.

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

7 years ago[clang-format] Fix regression about short functions after #else
Krasimir Georgiev [Mon, 2 Oct 2017 15:53:37 +0000 (15:53 +0000)]
[clang-format] Fix regression about short functions after #else

Summary:
This patch fixes a regression introduced in r312904, where the formatter confuses
the `else` in `#else` with an `else` of an `if-else` statement.
For example, formatting this code with google style
```
#ifdef A
int f() {}
#else
int f() {}
#endif
```
resulted in
```
#ifdef A
int f() {}
#else
int f() {
}
#endif
```

Reviewers: sammccall

Reviewed By: sammccall

Subscribers: klimek, cfe-commits

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

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

7 years ago[OPENMP] Fix test, NFC.
Alexey Bataev [Mon, 2 Oct 2017 14:35:31 +0000 (14:35 +0000)]
[OPENMP] Fix test, NFC.

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

7 years ago[OPENMP] Simplify codegen for non-offloading code.
Alexey Bataev [Mon, 2 Oct 2017 14:20:58 +0000 (14:20 +0000)]
[OPENMP] Simplify codegen for non-offloading code.

Simplified and generalized codegen for non-offloading part that works if
offloading is failed or condition of the `if` clause is `false`.

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

7 years agoDependent Address Space Support Test Fix
Andrew Gozillon [Mon, 2 Oct 2017 13:32:59 +0000 (13:32 +0000)]
Dependent Address Space Support Test Fix

Modifying a non-type template integer arguement that is causing errors
in some builds as it's too large for 32-bit longs. This hopefully (and
seems to when testing) should fix all of the build bot errors relating
to this test. I also modified the name of the function call to be more
apt.

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

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

7 years ago[CodeGen] Have a special function to get TBAA info for may-alias accesses
Ivan A. Kosarev [Mon, 2 Oct 2017 11:10:04 +0000 (11:10 +0000)]
[CodeGen] Have a special function to get TBAA info for may-alias accesses

This is part of D37826 reworked to be a separate patch to
simplify review.

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

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

7 years ago[CodeGen] Do not refer to complete TBAA info where we actually deal with just TBAA...
Ivan A. Kosarev [Mon, 2 Oct 2017 09:54:47 +0000 (09:54 +0000)]
[CodeGen] Do not refer to complete TBAA info where we actually deal with just TBAA access types

This patch fixes misleading names of entities related to getting,
setting and generation of TBAA access type descriptors.

This is effectively an attempt to provide a review for D37826 by
breaking it into smaller pieces.

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

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

7 years agoDependent Address Space Support Test File
Andrew Gozillon [Mon, 2 Oct 2017 06:31:25 +0000 (06:31 +0000)]
Dependent Address Space Support Test File

Adding regression test for Dependent Address Spaces in relation to
https://reviews.llvm.org/D33666 I forgot to svn add the test file
before commiting the prior changes. I appologies.

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

7 years agoDependent Address Space Support
Andrew Gozillon [Mon, 2 Oct 2017 06:25:51 +0000 (06:25 +0000)]
Dependent Address Space Support

This patch relates to: https://reviews.llvm.org/D33666 This adds support
for template parameters to be passed to the address_space attribute.
The main goal is to add further flexibility to the attribute and allow
for it to be used easily with templates.

The main additions are a new type (DependentAddressSpaceType) alongside
its TypeLoc and its mangling. As well as the logic required to support
dependent address spaces which mainly resides in TreeTransform.h and
SemaType.cpp.

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

7 years agoTest Commit.
Andrew Gozillon [Sun, 1 Oct 2017 12:16:24 +0000 (12:16 +0000)]
Test Commit.

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

7 years ago[Analysis] Remove unused makeLvalueToRValue variant.
Davide Italiano [Sat, 30 Sep 2017 21:49:15 +0000 (21:49 +0000)]
[Analysis] Remove unused makeLvalueToRValue variant.

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

7 years ago[NFC] Add assertion that we assume a valid macro argument index.
Faisal Vali [Sat, 30 Sep 2017 19:34:27 +0000 (19:34 +0000)]
[NFC] Add assertion that we assume a valid macro argument index.

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

7 years ago[NFC] Remove superfluous parameter
Faisal Vali [Sat, 30 Sep 2017 13:58:38 +0000 (13:58 +0000)]
[NFC] Remove superfluous parameter
 - MacroArgs already knows the maximum number of arguments that can be supplied to the macro.  No need to pass MacroInfo (information about the macro definition) to the call to getPreExpArgument (which by the way might benefit from being called getExpandedArgument() ?) for it to compute the number of arguments.

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

7 years agoclang/test/SemaCXX/ms-iunknown-template-function.cpp: Appease for targeting *-win32.
NAKAMURA Takumi [Sat, 30 Sep 2017 09:16:41 +0000 (09:16 +0000)]
clang/test/SemaCXX/ms-iunknown-template-function.cpp: Appease for targeting *-win32.

This expects the warning;

  File clang/test/SemaCXX/ms-iunknown-template-function.cpp Line 19: __declspec attribute 'novtable' is not supported

But for targeting *-win32, the warning is not seen.

  error: 'warning' diagnostics expected but not seen:
    File clang\test\SemaCXX\ms-iunknown-template-function.cpp Line 19 (directive at clang\test\SemaCXX\ms-iunknown-template-function.cpp:18): __declspec attribute 'novtable'

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

7 years ago[ODRHash] Add base classes to hashing CXXRecordDecl.
Richard Trieu [Sat, 30 Sep 2017 02:19:17 +0000 (02:19 +0000)]
[ODRHash] Add base classes to hashing CXXRecordDecl.

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

7 years ago[Analyzer] Add dummy implementation to call_once to avoid linkage warnings in tests.
George Karpenkov [Sat, 30 Sep 2017 01:15:35 +0000 (01:15 +0000)]
[Analyzer] Add dummy implementation to call_once to avoid linkage warnings in tests.

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

7 years ago[Analyzer] Document a gotcha: for C++ -analyze-function requires parameters in functi...
George Karpenkov [Sat, 30 Sep 2017 00:07:22 +0000 (00:07 +0000)]
[Analyzer] Document a gotcha: for C++ -analyze-function requires parameters in function name

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

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

7 years ago[Analyzer] Add nullability to the list of tested checkers in SATestBuild
George Karpenkov [Sat, 30 Sep 2017 00:05:24 +0000 (00:05 +0000)]
[Analyzer] Add nullability to the list of tested checkers in SATestBuild

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

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

7 years ago[Analyzer] Synthesize function body for std::call_once
George Karpenkov [Sat, 30 Sep 2017 00:03:22 +0000 (00:03 +0000)]
[Analyzer] Synthesize function body for std::call_once

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

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

7 years agoAdd a "vexing parse" warning for ambiguity between a variable declaration and a
Richard Smith [Fri, 29 Sep 2017 23:57:25 +0000 (23:57 +0000)]
Add a "vexing parse" warning for ambiguity between a variable declaration and a
function-style cast.

This fires for cases such as

  T(x);

... where 'x' was previously declared and T is a type. This construct declares
a variable named 'x' rather than the (probably expected) interpretation of a
function-style cast of 'x' to T.

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

7 years ago[PS4] Tidy up some debug-tuning v. triple decision-making.
Paul Robinson [Fri, 29 Sep 2017 21:25:07 +0000 (21:25 +0000)]
[PS4] Tidy up some debug-tuning v. triple decision-making.

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

7 years ago[Sema] Correct IUnknown to support Unknwnbase.h Header.
Erich Keane [Fri, 29 Sep 2017 21:06:00 +0000 (21:06 +0000)]
[Sema] Correct IUnknown to support Unknwnbase.h Header.

Apparently, the MSVC SDK has a strange implementation that
causes a number of implicit functions as well as a template member
function of the IUnknown type. This patch allows these as InterfaceLike
types as well.

Additionally, it corrects the behavior where extern-C++ wrapped around an
Interface-Like type would permit an interface-like type to exist in a namespace.

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

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

7 years agofixup, post rL314493
Coby Tayree [Fri, 29 Sep 2017 16:04:16 +0000 (16:04 +0000)]
fixup, post rL314493
'InlineAsmIdentifierInfo' is now a struct - notify Sema.h it isn't a class anymore

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

7 years ago[test] Disable leak checking on a clang crash test on Darwin
Francis Ricci [Fri, 29 Sep 2017 15:46:27 +0000 (15:46 +0000)]
[test] Disable leak checking on a clang crash test on Darwin

Suspected failure due to LSan's atexit and exit interception behavior.

Reviewers: kcc, kubamracek, bogner, hfinkel, alekseyshl, Hahnfeld, gtbercea

Subscribers: llvm-commits

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

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

7 years agoFix Modules/{builtin-import.mm,umbrella-header-include-builtin.mm} to be able to...
Filipe Cabecinhas [Fri, 29 Sep 2017 15:45:34 +0000 (15:45 +0000)]
Fix Modules/{builtin-import.mm,umbrella-header-include-builtin.mm} to be able to handle non-Darwin targets

Summary: Also makes them pass on Darwin, if the default target triple is a Linux triple.

Reviewers: bruno, rsmith

Subscribers: cfe-commits

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

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

7 years ago[docs][refactor] Add refactoring engine design documentation
Alex Lorenz [Fri, 29 Sep 2017 12:21:38 +0000 (12:21 +0000)]
[docs][refactor] Add refactoring engine design documentation

This commit adds a refactoring engine design document that talks about the
design and provides several example of how the engine can be used.

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

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

7 years ago[Sema] Suppress warnings for C's zero initializer
Daniel Marjamaki [Fri, 29 Sep 2017 09:44:41 +0000 (09:44 +0000)]
[Sema] Suppress warnings for C's zero initializer

Patch by S. Gilles!

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

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

7 years ago[X86][MS-InlineAsm] Extended support for variables / identifiers on memory / immediat...
Coby Tayree [Fri, 29 Sep 2017 07:02:49 +0000 (07:02 +0000)]
[X86][MS-InlineAsm] Extended support for variables / identifiers on memory / immediate expressions

Allow the proper recognition of Enum values and global variables inside ms inline-asm memory / immediate expressions, as they require some additional overhead and treated incorrect if doesn't early recognized.
supersedes D33278, D35774

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

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

7 years ago[NFC] Replace 'arguments' with 'parameters' in comments relating to lexing a macro...
Faisal Vali [Fri, 29 Sep 2017 02:43:22 +0000 (02:43 +0000)]
[NFC] Replace 'arguments' with 'parameters' in comments relating to lexing a macro definition.

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

7 years ago[NFC] Rename variable 'Arguments' to 'Parameters' when lexing the Macro Definition.
Faisal Vali [Fri, 29 Sep 2017 02:17:31 +0000 (02:17 +0000)]
[NFC] Rename variable 'Arguments' to 'Parameters' when lexing the Macro Definition.

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