]> granicus.if.org Git - clang/log
clang
9 years ago[opaque pointer type] Pass the explicit call type when creating calls from LazyRuntim...
David Blaikie [Tue, 19 May 2015 21:31:34 +0000 (21:31 +0000)]
[opaque pointer type] Pass the explicit call type when creating calls from LazyRuntimeFunctions

The implicit conversion was causing issues for a helper being added that
would take an llvm::Function rather than an llvm::Value to make the
CallInst. Since we'll eventually need to specify the type of the call
explicitly anyway, fix these up to avoid the future ambiguity.

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

9 years agoRevert r237609 for now.
Richard Smith [Tue, 19 May 2015 19:58:11 +0000 (19:58 +0000)]
Revert r237609 for now.

glibc's headers use __need_* macros to selectively export parts of themselves
to each other. This requires us to enter those files repeatedly when building
a glibc module.

This can be unreverted once we have a better mechanism to deal with that
non-modular aspect of glibc (possibly some way to mark a header as "textual if
this macro is defined").

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

9 years agoFix 'CFG graph' typo. NFC
Jonathan Roelofs [Tue, 19 May 2015 18:51:56 +0000 (18:51 +0000)]
Fix 'CFG graph' typo. NFC

Patch by Jon Eyolfson!

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

9 years agoclang-format: Add space in function pointers with SpaceBeforeParens=Always
Anders Waldenborg [Tue, 19 May 2015 16:54:26 +0000 (16:54 +0000)]
clang-format: Add space in function pointers with SpaceBeforeParens=Always

"void (*my_function)(void)" should become "void (*my_function) (void)" when
SpaceBeforeParens is set to 'Always'

Differential Revision: http://reviews.llvm.org/D9835

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

9 years ago[X86] Add _mm_broadcastsd_pd intrinsic
Michael Kuperstein [Tue, 19 May 2015 14:49:14 +0000 (14:49 +0000)]
[X86] Add _mm_broadcastsd_pd intrinsic

_mm_broadcastsd_pd is basically an alias for _mm_movedup_pd, however the alias is only available from AVX2 forward.

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

9 years ago[X86] Added _mm256_bslli_epi128 and _mm256_bsrli_epi128.
Michael Kuperstein [Tue, 19 May 2015 13:05:46 +0000 (13:05 +0000)]
[X86] Added _mm256_bslli_epi128 and _mm256_bsrli_epi128.

These two intrinsics are alternative names for _mm256_slli_si256 and _mm256_srli_si256, respectively.

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

9 years ago[OPENMP] Fixed codegen for copying/initialization of array variables/parameters.
Alexey Bataev [Tue, 19 May 2015 12:31:28 +0000 (12:31 +0000)]
[OPENMP] Fixed codegen for copying/initialization of array variables/parameters.
This modification generates proper copyin/initialization sequences for array variables/parameters. Before they were considered as pointers, not arrays.

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

9 years agoclang-format: Improve *-detection.
Daniel Jasper [Tue, 19 May 2015 12:29:27 +0000 (12:29 +0000)]
clang-format: Improve *-detection.

Before:
  S << a *(10);

After:
  S << a * (10);

This fixes llvm.org/PR16500.

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

9 years agoclang-format: Improve for-loop formatting.
Daniel Jasper [Tue, 19 May 2015 11:51:39 +0000 (11:51 +0000)]
clang-format: Improve for-loop formatting.

Before:
  for (SmallVectorImpl<TemplateIdAnnotationn *>::iterator I =
           Container.begin(),
                                                          E = Container.end();
       I != E; ++I)

After:
  for (SmallVectorImpl<TemplateIdAnnotationn *>::iterator
           I = Container.begin(),
           E = Container.end();
       I != E; ++I)

This fixes llvm.org/PR23544.

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

9 years agoclang-format: Support #include_next
Daniel Jasper [Tue, 19 May 2015 11:22:29 +0000 (11:22 +0000)]
clang-format: Support #include_next

Before:
  #include_next < test.h >

After:
  #include_next <test.h>

This fixes llvm.org/PR23500

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

9 years agoclang-format: Correctly detect casts to qualified types.
Daniel Jasper [Tue, 19 May 2015 11:18:39 +0000 (11:18 +0000)]
clang-format: Correctly detect casts to qualified types.

Before:
  ns::E f() { return (ns::E) - 1; }

After:
  ns::E f() { return (ns::E)-1; }

This fixes llvm.org/PR23503.

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

9 years agoclang-format: Fix regression caused by r237244.
Daniel Jasper [Tue, 19 May 2015 11:06:33 +0000 (11:06 +0000)]
clang-format: Fix regression caused by r237244.

Before:
  [call aaaaaaaa.aaaaaaaa.aaaaaaaa.aaaaaaaa.aaaaaaaa.aaaaaaaa.aaaaaaaa.aaaaaaaa.
          aaaaaaaa];

After:
  [call aaaaaaaa.aaaaaaaa.aaaaaaaa.aaaaaaaa.aaaaaaaa.aaaaaaaa.aaaaaaaa.aaaaaaaa
          .aaaaaaaa];

This merely papers over the fact that we aren't parsing ObjC method calls
correctly. Also, the indentation is weird.

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

9 years ago[OPENMP] Prohibit VLAs in 'private/firstprivate' clauses of 'task' directive.
Alexey Bataev [Tue, 19 May 2015 08:44:56 +0000 (08:44 +0000)]
[OPENMP] Prohibit VLAs in 'private/firstprivate' clauses of 'task' directive.
Currently runtime does not allow to support variably modified types for 'private' and 'firstprivate' clauses in 'task' directives.

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

9 years ago[OPENMP] Prohibit variably modified types in 'copyprivate' clause.
Alexey Bataev [Tue, 19 May 2015 08:19:24 +0000 (08:19 +0000)]
[OPENMP] Prohibit variably modified types in 'copyprivate' clause.
Runtime does not allow to work with VLAs in copyprivate clause.

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

9 years ago[OPENMP] Fixed analysis of function arguments and their data sharing attributes.
Alexey Bataev [Tue, 19 May 2015 07:46:42 +0000 (07:46 +0000)]
[OPENMP] Fixed analysis of function arguments and their data sharing attributes.
Added proper analysis for types of function arguments.

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

9 years agoSemaExprCXX.cpp: Try to fix \param in r237608. [-Wdocumentation]
NAKAMURA Takumi [Tue, 19 May 2015 06:47:23 +0000 (06:47 +0000)]
SemaExprCXX.cpp: Try to fix \param in r237608. [-Wdocumentation]

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

9 years agoPR20073: promote "dereference of 'void*'" from Extension to ExtWarn.
Richard Smith [Tue, 19 May 2015 01:41:12 +0000 (01:41 +0000)]
PR20073: promote "dereference of 'void*'" from Extension to ExtWarn.

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

9 years ago[AST] Put VarDeclBitfields on a diet
David Majnemer [Tue, 19 May 2015 00:57:16 +0000 (00:57 +0000)]
[AST] Put VarDeclBitfields on a diet

VarDeclBitfields contained bits which are never present in parameters.
Split these out so that ParmVarDeclBitfields wouldn't grow past 32-bits
if another field was added.

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

9 years ago[modules] Support for merging a parsed definition of a static data member of a class...
Richard Smith [Tue, 19 May 2015 00:49:29 +0000 (00:49 +0000)]
[modules] Support for merging a parsed definition of a static data member of a class template into an imported but hidden definition.

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

9 years agoFix indentation
David Blaikie [Mon, 18 May 2015 22:51:39 +0000 (22:51 +0000)]
Fix indentation

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

9 years agoRevert changes to DefaultABIInfo accidentally introduced in r208733
Reid Kleckner [Mon, 18 May 2015 22:46:30 +0000 (22:46 +0000)]
Revert changes to DefaultABIInfo accidentally introduced in r208733

Also add trivial handling of transparent unions.

PPC32, MSP430, and XCore apparently all rely on DefaultABIInfo. This
should worry you, because DefaultABIInfo is not implementing the rules
of any particular ABI.

Fixes PR23097, patch by Andy Gibbs.

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

9 years agoAPI update for streamlining of IRBuilder::CreateCall to just use ArrayRef/initializer...
David Blaikie [Mon, 18 May 2015 22:14:03 +0000 (22:14 +0000)]
API update for streamlining of IRBuilder::CreateCall to just use ArrayRef/initializer_list+braced init

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

9 years agoAdded missing 'override' to `ReadMismatchingDeleteExpressions`
Ismail Pazarbasi [Mon, 18 May 2015 20:46:12 +0000 (20:46 +0000)]
Added missing 'override' to `ReadMismatchingDeleteExpressions`

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

9 years ago[modules] Support for merging a parsed class template specialization definition into...
Richard Smith [Mon, 18 May 2015 20:36:47 +0000 (20:36 +0000)]
[modules] Support for merging a parsed class template specialization definition into an imported but hidden definition.

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

9 years agoCreate new diagnostic group -Wmove
Richard Trieu [Mon, 18 May 2015 20:25:44 +0000 (20:25 +0000)]
Create new diagnostic group -Wmove

-Wmove includes the three existing warnings for std::move calls, self move,
reduntant move, and pessimizing move.  -Wmove is included in -Wmost, so that
it can be discoverable to people using that or -Wall.

Differential Revision: http://reviews.llvm.org/D9493

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

9 years ago[modules] When a file is listed as a non-textual header in a module map, don't
Richard Smith [Mon, 18 May 2015 20:02:41 +0000 (20:02 +0000)]
[modules] When a file is listed as a non-textual header in a module map, don't
enter it more than once, even if it doesn't have #include guards -- we already
know that it is intended to have the same effect every time it's included, and
it's already had that effect. This particularly helps with local submodule
visibility builds, where the include guard macro may not be visible in the
includer, but will become visible the moment we enter the included file.

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

9 years agoDetect uses of mismatching forms of 'new' and 'delete'
Ismail Pazarbasi [Mon, 18 May 2015 19:59:11 +0000 (19:59 +0000)]
Detect uses of mismatching forms of 'new' and 'delete'

Emit warning when operand to `delete` is allocated with `new[]` or
operand to `delete[]` is allocated with `new`.

rev 2 update:
`getNewExprFromInitListOrExpr` should return `dyn_cast_or_null`
instead of `dyn_cast`, since `E` might be null.

Reviewers: rtrieu, jordan_rose, rsmith

Subscribers: majnemer, cfe-commits

Differential Revision: http://reviews.llvm.org/D4661

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

9 years agoHave -Wredundant-move ignore reference types.
Richard Trieu [Mon, 18 May 2015 19:54:08 +0000 (19:54 +0000)]
Have -Wredundant-move ignore reference types.

Don't give a warning when the type being moved is a reference type.  Also
uncomment two lines in the test case.

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

9 years agoclang-format: Fix another regression caused by r237565.
Daniel Jasper [Mon, 18 May 2015 14:49:19 +0000 (14:49 +0000)]
clang-format: Fix another regression caused by r237565.

Before:
  class C : test {
    class D : test{void f(){int i{2};
  }
  }
  ;
  }
  ;

After:
  class C : test {
    class D : test {
      void f() { int i{2}; }
    };
  };

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

9 years agoclang-format: Fix regression introduced by r237565.
Daniel Jasper [Mon, 18 May 2015 14:12:24 +0000 (14:12 +0000)]
clang-format: Fix regression introduced by r237565.

Before:
  class C : public D {
    SomeClass SC { 2 };
  };

After:
  class C : public D {
    SomeClass SC{2};
  };

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

9 years agoclang-format: Improve detection of macros annotating functions.
Daniel Jasper [Mon, 18 May 2015 13:47:23 +0000 (13:47 +0000)]
clang-format: Improve detection of macros annotating functions.

Before:
  ASSERT("aaaaaaaaaaaaaaa")
      << aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
      << bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;

After:
  ASSERT("aaaaaaaaaaaaaaa") << aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
                            << bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;

Also cleanup implementation a bit and only mark closing parenthesis of
these annotations.

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

9 years agoclang-format: Allow braced initializers in template arguments of class
Daniel Jasper [Mon, 18 May 2015 12:52:00 +0000 (12:52 +0000)]
clang-format: Allow braced initializers in template arguments of class
specializations.

Before:
  template <class T>
      struct S < std::is_arithmetic<T> {
  } > {};

After:
  template <class T> struct S<std::is_arithmetic<T>{}> {};

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

9 years agoclang-format: Support function annotations in macros.
Daniel Jasper [Mon, 18 May 2015 09:47:22 +0000 (09:47 +0000)]
clang-format: Support function annotations in macros.

Before:
  DEPRECATED("Use NewClass::NewFunction instead.") string
      OldFunction(const string &parameter) {}

After:
  DEPRECATED("Use NewClass::NewFunction instead.")
  string OldFunction(const string &parameter) {}

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

9 years ago[OPENMP] Fix for '#pragma omp task' codegen.
Alexey Bataev [Mon, 18 May 2015 07:54:53 +0000 (07:54 +0000)]
[OPENMP] Fix for '#pragma omp task' codegen.

Internal task structure must be generated like
typedef struct kmp_task {
  void *              shareds;
  kmp_routine_entry_t routine;
  kmp_int32           part_id;
  kmp_routine_entry_t destructors;
} kmp_task_t;

struct kmp_task_t_with_privates {
  kmp_task_t task_data;
  .kmp_private. privates;
};
to avoid possible additional alignment bytes in first fields (shareds, routine, part_id and destructors). Runtime library is not aware of such kind additional alignment bytes.

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

9 years ago[modules] Move implicit creation of ImportDecls for #includes transformed into module...
Richard Smith [Mon, 18 May 2015 05:35:52 +0000 (05:35 +0000)]
[modules] Move implicit creation of ImportDecls for #includes transformed into module imports from the frontend into Sema where it belongs.

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

9 years ago[clang-cl] Enable C++14 when targeting 2015 compatibility
David Majnemer [Mon, 18 May 2015 04:49:30 +0000 (04:49 +0000)]
[clang-cl] Enable C++14 when targeting 2015 compatibility

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

9 years ago[modules] Refactor and simplify #include handling.
Richard Smith [Mon, 18 May 2015 04:45:41 +0000 (04:45 +0000)]
[modules] Refactor and simplify #include handling.

Fix a tiny bug where we'd try to load a module file for the module we're in
the middle of building.

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

9 years agoclang/test/CodeGenOpenCL/opencl_types.cl: Tweak expressions according to r237548.
NAKAMURA Takumi [Mon, 18 May 2015 03:58:27 +0000 (03:58 +0000)]
clang/test/CodeGenOpenCL/opencl_types.cl: Tweak expressions according to r237548.

With MS mangler, the signature is:

  x86: define void @"\01?bad1@@$$J0YAXPAPAUocl_image1d@@PAPAUocl_image2d@@1@Z"  (%opencl.image1d_t** %b, %opencl.image2d_t** %c, %opencl.image2d_t** %d) nounwind
  x64: define void @"\01?bad1@@$$J0YAXPEAPAUocl_image1d@@PEAPAUocl_image2d@@1@Z"(%opencl.image1d_t** %b, %opencl.image2d_t** %c, %opencl.image2d_t** %d) nounwind

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

9 years ago[modules] If we see a #include that maps to a module, but use of precompiled modules...
Richard Smith [Mon, 18 May 2015 03:52:30 +0000 (03:52 +0000)]
[modules] If we see a #include that maps to a module, but use of precompiled modules is disabled, track submodule visibility anyway if -fmodules-local-submodule-visibility is enabled. This, in effect, gives modules semantics but without precompilation.

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

9 years agoWrap to 80 columns. No behavior change.
Nico Weber [Mon, 18 May 2015 02:41:17 +0000 (02:41 +0000)]
Wrap to 80 columns. No behavior change.

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

9 years ago[MS ABI] Give __attribute__((overloadable)) functions pretty names
David Majnemer [Mon, 18 May 2015 00:05:29 +0000 (00:05 +0000)]
[MS ABI] Give __attribute__((overloadable)) functions pretty names

It turns out that there is a mangling for 'extern "C"', it's only used
by MSVC in /clr mode.  Co-opt this mangling so that extern "C" functions
marked overloadable get demangled nicely.

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

9 years ago[MS ABI] Function encodings are always encoded in template arguments
David Majnemer [Mon, 18 May 2015 00:05:25 +0000 (00:05 +0000)]
[MS ABI] Function encodings are always encoded in template arguments

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

9 years agoFix confusing indent. No behavior change.
Nico Weber [Mon, 18 May 2015 00:00:29 +0000 (00:00 +0000)]
Fix confusing indent. No behavior change.

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

9 years agoclang-format: Properly align ObjC string literals.
Daniel Jasper [Sun, 17 May 2015 08:13:23 +0000 (08:13 +0000)]
clang-format: Properly align ObjC string literals.

Before:
  NSString s = @"a"
               "b"
               "c";
  NSString s = @"a"
               @"b"
                @"c";

After:
  NSString s = @"a"
                "b"
                "c";
  NSString s = @"a"
               @"b"
               @"c";

This fixes llvm.org/PR23536.

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

9 years agoclang-format: Improve line wrapping around << operators.
Daniel Jasper [Sun, 17 May 2015 07:27:09 +0000 (07:27 +0000)]
clang-format: Improve line wrapping around << operators.

Generally, clang-format tries to keep label-value pairs on a single
line for stream operators. However, we should not do that if there is
just a single such pair, as that doesn't help much.

Before:
  llvm::errs() << "aaaaaaaaaaaa: " << aaaaaaa(aaaaaaaaa,
                                              aaaaaaaaa);

After:
  llvm::errs() << "aaaaaaaaaaaa: "
               << aaaaaaa(aaaaaaaaaaaaaaaaaa);

Also remove old test case that was testing actual behavior any more.

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

9 years ago[Sema] Improve llvm_unreachable() message.
Davide Italiano [Sun, 17 May 2015 02:27:10 +0000 (02:27 +0000)]
[Sema] Improve llvm_unreachable() message.

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

9 years agoDon't leak TemplateIds when a plugin parses late-parsed templates at TU end.
Nico Weber [Sun, 17 May 2015 01:07:16 +0000 (01:07 +0000)]
Don't leak TemplateIds when a plugin parses late-parsed templates at TU end.

In -fdelayed-template-parsing mode, templates that aren't used are not parsed
at all.  For some diagnostic plugins, this is a problem since they want to
analyse the contents of the template function body.  What has been suggested
on cfe-dev [1] is to explicitly parse interesting templates in
HandleTranslationUnit(); IWYU does this for example [2].

This is workable, but since the delayed parsing doesn't run below a call to
ParseTopLevelDecl(), no DestroyTemplateIdAnnotationsRAIIObj object is on the
stack to clean up TemplateIds that are created during parsing.  To fix this,
let ~Parser() clean them up in delayed template parsing mode instead of
leaking (or asserting in +Assert builds).

(r219810, relanded in r220400, fixed the same problem in incremental processing
mode; the review thread of r219810 has a good discussion of the problem.)

To test this, give the PrintFunctionNames plugin a flag to force parsing
of a template and add a test that uses it in -fdelayed-template-parsing mode.
Without the Parser.cpp change, that test asserts.

1: http://lists.cs.uiuc.edu/pipermail/cfe-dev/2014-August/038415.html
2: https://code.google.com/p/include-what-you-use/source/detail?r=566

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

9 years agoWrap a few comments to 80 columns.
Nico Weber [Sat, 16 May 2015 23:49:53 +0000 (23:49 +0000)]
Wrap a few comments to 80 columns.

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

9 years ago[Sema] Fold array into for-range loop. No functional change intended.
Benjamin Kramer [Sat, 16 May 2015 16:16:31 +0000 (16:16 +0000)]
[Sema] Fold array into for-range loop. No functional change intended.

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

9 years ago[modules] Retain the name as written for umbrella headers and directories, rather...
Richard Smith [Sat, 16 May 2015 02:28:53 +0000 (02:28 +0000)]
[modules] Retain the name as written for umbrella headers and directories, rather than converting to an absolute path. No observable change expected, but this allows us to correctly compute the module for an umbrella header, which later changes will require.

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

9 years agoFix typo from r237482. "to reference of type" --> "to reference to type"
Richard Trieu [Sat, 16 May 2015 01:39:39 +0000 (01:39 +0000)]
Fix typo from r237482.  "to reference of type" --> "to reference to type"

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

9 years agoWhen emitting a dropped qualifier error, show which qualifiers are dropped.
Richard Trieu [Sat, 16 May 2015 01:27:03 +0000 (01:27 +0000)]
When emitting a dropped qualifier error, show which qualifiers are dropped.

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

9 years ago[PPC64] Add vector pack/unpack support from ISA 2.07
Bill Schmidt [Sat, 16 May 2015 01:02:25 +0000 (01:02 +0000)]
[PPC64] Add vector pack/unpack support from ISA 2.07

This patch adds support for the following new instructions in the
Power ISA 2.07:

  vpksdss
  vpksdus
  vpkudus
  vpkudum
  vupkhsw
  vupklsw

These instructions are available through the vec_packs, vec_packsu,
vec_unpackh, and vec_unpackl built-in interfaces.  These are
lane-sensitive instructions, so the built-ins have different
implementations for big- and little-endian, and the instructions must
be marked as killing the vector swap optimization for now.

The first three instructions perform saturating pack operations.  The
fourth performs a modulo pack operation, which means it can be
represented with a vector shuffle, and conversely the appropriate
vector shuffles may cause this instruction to be generated.  The other
instructions are only generated via built-in support for now.

I noticed during patch preparation that the macro __VSX__ was not
previously predefined when the power8-vector or direct-move features
are requested.  This is an error, and I've corrected that here as
well.

Appropriate tests have been added.

There is a companion patch to llvm for the rest of this support.

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

9 years agoclang/test/SemaCXX/attr-no-sanitize.cpp: Don't mix stdout and stderr for FileCheck.
NAKAMURA Takumi [Sat, 16 May 2015 00:09:39 +0000 (00:09 +0000)]
clang/test/SemaCXX/attr-no-sanitize.cpp: Don't mix stdout and stderr for FileCheck.

MSVCRT's stdio doesn't do line buffering.

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

9 years agoReverse the order of types in the reference dropping qualifiers error.
Richard Trieu [Fri, 15 May 2015 22:07:49 +0000 (22:07 +0000)]
Reverse the order of types in the reference dropping qualifiers error.

The error has the form ... 'int' ... 'const int' ... dropped qualifiers.  At
first glance, it appears that the const qualifier is added.  Reverse the types
so that the second type is less qualified than the first.

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

9 years agoUse llvm::StringSwitch<std::string> to take advantage of implicit asserting conversio...
Peter Collingbourne [Fri, 15 May 2015 20:11:18 +0000 (20:11 +0000)]
Use llvm::StringSwitch<std::string> to take advantage of implicit asserting conversion to std::string.

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

9 years ago[modules] Add local submodule visibility support for declarations.
Richard Smith [Fri, 15 May 2015 20:05:43 +0000 (20:05 +0000)]
[modules] Add local submodule visibility support for declarations.

With this change, enabling -fmodules-local-submodule-visibility results in name
visibility rules being applied to submodules of the current module in addition
to imported modules (that is, names no longer "leak" between submodules of the
same top-level module). This also makes it much safer to textually include a
non-modular library into a module: each submodule that textually includes that
library will get its own "copy" of that library, and so the library becomes
visible no matter which including submodule you import.

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

9 years agoImplement no_sanitize attribute.
Peter Collingbourne [Fri, 15 May 2015 18:33:32 +0000 (18:33 +0000)]
Implement no_sanitize attribute.

Differential Revision: http://reviews.llvm.org/D9631

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

9 years agoCGAtomic.cpp: Fix bogus \brief(s). Did you mean "\param"? [-Wdocumentation]
NAKAMURA Takumi [Fri, 15 May 2015 13:47:52 +0000 (13:47 +0000)]
CGAtomic.cpp: Fix bogus \brief(s). Did you mean "\param"? [-Wdocumentation]

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

9 years agoLimit set of types instantiated in FindInstantiatedDecl.
Serge Pavlov [Fri, 15 May 2015 10:10:28 +0000 (10:10 +0000)]
Limit set of types instantiated in FindInstantiatedDecl.

Starting from r236426 FindInstantiatedDecl may instantiate types that
are referenced before definition. This change limit the set of types
that can be instantiated by this function.

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

9 years agoclang-format: Slightly change format decisions around macro annotations.
Daniel Jasper [Fri, 15 May 2015 09:58:11 +0000 (09:58 +0000)]
clang-format: Slightly change format decisions around macro annotations.

Before:
  bool aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
      GUARDED_BY(aaaaaaaaaaaa) = aaaaaaaaaaaaaaaaaaaaaaaaa;

After:
  bool aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa GUARDED_BY(aaaaaaaaaaaa) =
      aaaaaaaaaaaaaaaaaaaaaaaaa;

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

9 years agoclang-format: Don't use column layout in lists that have separating
Daniel Jasper [Fri, 15 May 2015 09:41:59 +0000 (09:41 +0000)]
clang-format: Don't use column layout in lists that have separating
comments. At some point, we might to want to a layout with a different
number of columns instead, but at the moment, this causes more
confusion than it's worth.

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

9 years agoclang-format: Add missing space before ObjC selector.
Daniel Jasper [Fri, 15 May 2015 09:05:31 +0000 (09:05 +0000)]
clang-format: Add missing space before ObjC selector.

Before:
  [self aaaaa:(1 + 2)bbbbb:3];

After:
  [self aaaaa:(1 + 2) bbbbb:3];

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

9 years ago[OPENMP] Fixed bug in atomic update/capture/write constructs.
Alexey Bataev [Fri, 15 May 2015 08:36:34 +0000 (08:36 +0000)]
[OPENMP] Fixed bug in atomic update/capture/write constructs.

Fixed a bug with codegen for destination atomic l-value with padding and junk in this padding bytes.

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

9 years agoRevert r237385, "[CodeGen] Reuse stack space from unused function results"
NAKAMURA Takumi [Fri, 15 May 2015 03:49:05 +0000 (03:49 +0000)]
Revert r237385, "[CodeGen] Reuse stack space from unused function results"

It broke clang stage2, at least tblgen.

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

9 years agoRefactor: when exposing a definition in some module, provide listeners with the
Richard Smith [Fri, 15 May 2015 02:34:32 +0000 (02:34 +0000)]
Refactor: when exposing a definition in some module, provide listeners with the
module rather than requiring them to work it out themselves.

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

9 years agoAdd flag to enable native half type
Pirama Arumuga Nainar [Thu, 14 May 2015 23:44:18 +0000 (23:44 +0000)]
Add flag to enable native half type

Summary:
r235215 enables support in LLVM for legalizing f16 type in the IR.  AArch64
already had support for this.  r235215 and some backend patches brought support
for ARM, X86, X86-64, Mips and Mips64.

This change exposes the LangOption 'NativeHalfType' in the command line, so the
backend legalization can be used if desired.  NativeHalfType is enabled for
OpenCL (current behavior) or if '-fnative-half-type' is set.

Reviewers: olista01, steven_wu, ab

Subscribers: cfe-commits, srhines, aemerson

Differential Revision: http://reviews.llvm.org/D9781

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

9 years agoFix Clang -Wsequence-point
David Blaikie [Thu, 14 May 2015 22:47:19 +0000 (22:47 +0000)]
Fix Clang -Wsequence-point

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

9 years agoInstrProf: Only disable coverage in built-in macros, not all system macros
Justin Bogner [Thu, 14 May 2015 22:14:10 +0000 (22:14 +0000)]
InstrProf: Only disable coverage in built-in macros, not all system macros

The issue I was trying to solve in r236547 was about built-in macros,
but I disabled coverage in all system macros. This is actually a bit
of overkill, and makes the display of coverage around system macros
degrade unnecessarily. Instead, limit this to builtins specifically.

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

9 years agoTweak availability checking to look through typedef declarations.
Ted Kremenek [Thu, 14 May 2015 22:07:25 +0000 (22:07 +0000)]
Tweak availability checking to look through typedef declarations.

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

9 years agoRevert "Detect uses of mismatching forms of 'new' and 'delete'"
Diego Novillo [Thu, 14 May 2015 20:57:48 +0000 (20:57 +0000)]
Revert "Detect uses of mismatching forms of 'new' and 'delete'"

This reverts commit 742dc9b6c9686ab52860b7da39c3a126d8a97fbc.

This is generating multiple segfaults in our internal builds.
Test case coming up shortly.

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

9 years agoTesting for the fix for bug 23429.
Nemanja Ivanovic [Thu, 14 May 2015 20:02:24 +0000 (20:02 +0000)]
Testing for the fix for bug 23429.

Follow-up to commit for revision 236848.
Just a test case for the macro definition under the right CPU/Arch.
One combination was actually missed in the initial fix:
  - powerpc64-unknown-unknown -mcpu=pwr8 (rather than -mcpu=power8).

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

9 years ago[CodeGen] Reuse stack space from unused function results
Sergey Dmitrouk [Thu, 14 May 2015 19:58:03 +0000 (19:58 +0000)]
[CodeGen] Reuse stack space from unused function results

Summary:
Space on stack allocated for unused structures returned by functions was unused
even when it's lifetime didn't intersect with lifetime of any other objects that
could use the same space.

The test added also checks for named and auto objects.  It seems to make sense
to have this all in one place.

Reviewers: aadg, rsmith, rjmccall, rnk

Reviewed By: rnk

Subscribers: asl, cfe-commits

Differential Revision: http://reviews.llvm.org/D9743

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

9 years agoDR295: cv-qualifiers on function types are ignored in C++.
Richard Smith [Thu, 14 May 2015 19:10:42 +0000 (19:10 +0000)]
DR295: cv-qualifiers on function types are ignored in C++.

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

9 years agoUpdate cxx_dr_status to latest issues list.
Richard Smith [Thu, 14 May 2015 19:07:47 +0000 (19:07 +0000)]
Update cxx_dr_status to latest issues list.

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

9 years agoRemove unused function HasPICArg().
Ikhlas Ajbar [Thu, 14 May 2015 17:42:20 +0000 (17:42 +0000)]
Remove unused function HasPICArg().

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

9 years ago[ARM] Fix of architecture naming typo
Vladimir Sukharev [Thu, 14 May 2015 16:39:01 +0000 (16:39 +0000)]
[ARM] Fix of architecture naming typo

Inspired by James Greenhalgh's catch

Subscribers: cfe-commits

Relates to: http://reviews.llvm.org/rL237349

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

9 years agoDetect uses of mismatching forms of 'new' and 'delete'
Ismail Pazarbasi [Thu, 14 May 2015 16:14:57 +0000 (16:14 +0000)]
Detect uses of mismatching forms of 'new' and 'delete'

Emit warning when operand to `delete` is allocated with `new[]` or
operand to `delete[]` is allocated with `new`.

Reviewers: rtrieu, jordan_rose, rsmith

Subscribers: majnemer, cfe-commits

Differential Revision: http://reviews.llvm.org/D4661

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

9 years agoFactor out SmallDataThreshold
Ikhlas Ajbar [Thu, 14 May 2015 13:52:08 +0000 (13:52 +0000)]
Factor out SmallDataThreshold

This patch factors out SmallDataThreshold code.

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

9 years ago[ARM] Add v8.1a architecture
Vladimir Sukharev [Thu, 14 May 2015 08:25:18 +0000 (08:25 +0000)]
[ARM] Add v8.1a architecture

Add support for ARMv8.1a architecture.

Briefly it is described on http://community.arm.com/groups/processors/blog/2014/12/02/the-armv8-a-architecture-and-its-ongoing-development

Reviewers:  jmolloy, rengolin

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D8799

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

9 years ago[AArch64 ACLE] Allow to define poly64_t as 'unsigned long long' on LLP64 system.
Kevin Qin [Thu, 14 May 2015 08:18:05 +0000 (08:18 +0000)]
[AArch64 ACLE] Allow to define poly64_t as 'unsigned long long' on LLP64 system.

This fixes PR23414 as well.

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

9 years agoclang/test/Frontend/dependency-gen-escaping.c: Appease win32 hosts. Investigating.
NAKAMURA Takumi [Thu, 14 May 2015 07:37:35 +0000 (07:37 +0000)]
clang/test/Frontend/dependency-gen-escaping.c: Appease win32 hosts. Investigating.

FIXME: Do we really emit single \ or escaped \\ along the context with -fms-compatibility -MG?

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

9 years agoRevert r237339 as sanitizer-ppc64-linux1 does not like it.
Yaron Keren [Thu, 14 May 2015 06:53:31 +0000 (06:53 +0000)]
Revert r237339 as sanitizer-ppc64-linux1 does not like it.
Complains:

/home/buildbots/sanitizerslave1/sanitizer-ppc64-1/build/llvm/tools/clang/tools/c-index-test/c-index-test.c:829:30: error: format specifies type 'long' but the argument has type 'long long' [-Werror,-Wformat]
                     I, TAK, clang_Cursor_getTemplateArgumentValue(Cursor, I));
                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

I'm not sure now how this should be fixed. %lld is non-standard
and not accepted by mingw on Windows while PRId64 is bad for this bot.

Is long long longer than 64 bits here? if not, why is PRId64
incompatible with it? something seems wrong.

Probably all the datatypes should be replaced to unsigned or uint64_t
depending upin requirements instead of the non standard long long.

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

9 years ago[MS ABI] Add support for /Zc:sizedDealloc
David Majnemer [Thu, 14 May 2015 05:55:00 +0000 (05:55 +0000)]
[MS ABI] Add support for /Zc:sizedDealloc

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

9 years agoReplace non-standard %lld printf usage with PRId64.
Yaron Keren [Thu, 14 May 2015 05:40:50 +0000 (05:40 +0000)]
Replace non-standard %lld printf usage with PRId64.

See also r180024.

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

9 years agoFix buildbots
David Majnemer [Thu, 14 May 2015 05:24:59 +0000 (05:24 +0000)]
Fix buildbots

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

9 years ago[MS ABI] __declspec(thread) behaves like thread_local in MSVC 2015
David Majnemer [Thu, 14 May 2015 05:19:23 +0000 (05:19 +0000)]
[MS ABI] __declspec(thread) behaves like thread_local in MSVC 2015

MSVC 2015 changed __declspec(thread) to make it behave like C++11's
thread_local keyword instead of acting similarly to __thread.

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

9 years ago[AST] hasAttr followed by getAttr isn't efficient
David Majnemer [Thu, 14 May 2015 05:19:20 +0000 (05:19 +0000)]
[AST] hasAttr followed by getAttr isn't efficient

Just use getAttr because we are interested in the attribute's contents.

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

9 years ago[clang-cl] Add /Qvec and /Qvec- to control vectorization
David Majnemer [Thu, 14 May 2015 05:19:17 +0000 (05:19 +0000)]
[clang-cl] Add /Qvec and /Qvec- to control vectorization

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

9 years agoclang/test/Frontend/dependency-gen-escaping.c: Tweak r237296, to let '/' and '\\...
NAKAMURA Takumi [Thu, 14 May 2015 04:25:54 +0000 (04:25 +0000)]
clang/test/Frontend/dependency-gen-escaping.c: Tweak r237296, to let '/' and '\\' distinguishd, to unbreak "--host=linux --target=msvc".

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

9 years agoGeneralize future keyword compat diagnostics.
Richard Smith [Thu, 14 May 2015 04:00:59 +0000 (04:00 +0000)]
Generalize future keyword compat diagnostics.

This, in preparation for the introduction of more new keywords in the
implementation of the C++ language, generalizes the support for future keyword
compat diagnostics (e.g., diag::warn_cxx11_keyword) by extending the
applicability of the relevant property in IdentifierTable with appropriate
renaming.

Patch by Hubert Tong!

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

9 years ago[modules] Rearrange preprocessor module visibility handling, no observable change...
Richard Smith [Thu, 14 May 2015 02:25:44 +0000 (02:25 +0000)]
[modules] Rearrange preprocessor module visibility handling, no observable change intended.

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

9 years agoAdd missing #include, found by modules build.
Richard Smith [Thu, 14 May 2015 01:08:58 +0000 (01:08 +0000)]
Add missing #include, found by modules build.

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

9 years ago[modules] Work around PR23521 to fix -O0 modules bootstrap.
Richard Smith [Thu, 14 May 2015 01:08:08 +0000 (01:08 +0000)]
[modules] Work around PR23521 to fix -O0 modules bootstrap.

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

9 years ago[modules] Fix a #include cycle when building a module for our builtin headers.
Richard Smith [Thu, 14 May 2015 00:45:20 +0000 (00:45 +0000)]
[modules] Fix a #include cycle when building a module for our builtin headers.

xmmintrin.h includes emmintrin.h and vice versa if SSE2 is enabled. We break
this cycle for a modules build, and instead make the xmmintrin.h module
re-export the immintrin.h module. Also included is a fix for an assert in the
serialization code if a module exports another module that was declared later
in the same module map.

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

9 years agoFix a #include cycle in the libclang headers. "Eventually" is now.
Richard Smith [Thu, 14 May 2015 00:22:12 +0000 (00:22 +0000)]
Fix a #include cycle in the libclang headers. "Eventually" is now.

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

9 years agoBreak \# in a depfile the same way as gcc.
Paul Robinson [Wed, 13 May 2015 22:33:50 +0000 (22:33 +0000)]
Break \# in a depfile the same way as gcc.

Backslash followed by # in a filename should have both characters
escaped, if you do it the way GNU Make wants.  GCC doesn't, so we do
it the way GCC does rather than the way GNU Make wants.

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

9 years agoMake GNUInline consistent with whether we use traditional GNU inline semantics.
Peter Collingbourne [Wed, 13 May 2015 22:07:22 +0000 (22:07 +0000)]
Make GNUInline consistent with whether we use traditional GNU inline semantics.

Previously we were setting LangOptions::GNUInline (which controls whether we
use traditional GNU inline semantics) if the language did not have the C99
feature flag set. The trouble with this is that C++ family languages also
do not have that flag set, so we ended up setting this flag in C++ modes
(and working around it in a few places downstream by also checking CPlusPlus).

The fix is to check whether the C89 flag is set for the target language,
rather than whether the C99 flag is cleared. This also lets us remove most
CPlusPlus checks. We continue to test CPlusPlus when deciding whether to
pre-define the __GNUC_GNU_INLINE__ macro for consistency with GCC.

There is a change in semantics in two other places
where we weren't checking both CPlusPlus and GNUInline
(FunctionDecl::doesDeclarationForceExternallyVisibleDefinition and
FunctionDecl::isInlineDefinitionExternallyVisible), but this change seems to
put us back into line with GCC's semantics (test case: test/CodeGen/inline.c).

While at it, forbid -fgnu89-inline in C++ modes, as GCC doesn't support it,
it didn't have any effect before, and supporting it just makes things more
complicated.

Differential Revision: http://reviews.llvm.org/D9333

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

9 years agoFix dependency file escaping.
Paul Robinson [Wed, 13 May 2015 21:18:15 +0000 (21:18 +0000)]
Fix dependency file escaping.

When writing a dependency (.d) file, if space or # is immediately
preceded by one or more backslashes, escape the backslashes as well as
the space or # character. Otherwise leave backslash alone.
This straddles the fence between BSD Make (which does no escaping at
all, and does not support space or # in filespecs) and GNU Make (which
does support escaping, but will fall back to the filespec as-written
if the escaping doesn't match an existing file).

Differential Revision: http://reviews.llvm.org/D9208

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

9 years agoMade considerable updates to the documentation explaining how to add a new attribute...
Aaron Ballman [Wed, 13 May 2015 18:06:48 +0000 (18:06 +0000)]
Made considerable updates to the documentation explaining how to add a new attribute to clang. Cleans up some of the existing wording, as well as adding new information and better explanations.

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