]> granicus.if.org Git - clang/log
clang
10 years agoDriver: Move crash report command mangling into Command::Print
Justin Bogner [Tue, 21 Oct 2014 17:24:44 +0000 (17:24 +0000)]
Driver: Move crash report command mangling into Command::Print

This pushes the logic for generating a crash reproduction script
entirely into Command::Print, instead of Command doing half of the
work and then relying on textual substitution for the rest. This makes
this logic much easier to read and will simplify fixing a couple of
issues in this area.

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

10 years agoThe nodebug attribute has a C++11-style spelling supported by GCC as well. This modif...
Aaron Ballman [Tue, 21 Oct 2014 15:46:57 +0000 (15:46 +0000)]
The nodebug attribute has a C++11-style spelling supported by GCC as well. This modifies it so we support that spelling as well.

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

10 years agoFixing the MSVC build by removing friendship with CodeGenFunction; NFC.
Aaron Ballman [Tue, 21 Oct 2014 13:39:56 +0000 (13:39 +0000)]
Fixing the MSVC build by removing friendship with CodeGenFunction; NFC.

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

10 years ago[analyzer] Move the NewDeleteLeaks checker from CplusplusAlpha to Cplusplus package.
Anton Yartsev [Tue, 21 Oct 2014 12:41:36 +0000 (12:41 +0000)]
[analyzer] Move the NewDeleteLeaks checker from CplusplusAlpha to Cplusplus package.

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

10 years agoclang-format: [Java] Understand string literal concatenation.
Daniel Jasper [Tue, 21 Oct 2014 11:34:53 +0000 (11:34 +0000)]
clang-format: [Java] Understand string literal concatenation.

Before:
  String someString = "abc" + "cde";

After:
  String someString = "abc"
                      + "cde";

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

10 years agoclang-format: [Java] Fix formatting of multiple annotations.
Daniel Jasper [Tue, 21 Oct 2014 11:17:56 +0000 (11:17 +0000)]
clang-format: [Java] Fix formatting of multiple annotations.

Before:
  @SuppressWarnings(value = "unchecked")
  @Author(name = "abc") public void doSomething() {
  }

After:
  @SuppressWarnings(value = "unchecked")
  @Author(name = "abc")
  public void doSomething() {
  }

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

10 years agoclang-format: [Java] Fix space in generic method calls.
Daniel Jasper [Tue, 21 Oct 2014 11:13:31 +0000 (11:13 +0000)]
clang-format: [Java] Fix space in generic method calls.

Before:
  A.<B>doSomething();

After:
  A.<B>doSomething();

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

10 years agoclang-format: [Java] Improve annotation handling.
Daniel Jasper [Tue, 21 Oct 2014 10:58:14 +0000 (10:58 +0000)]
clang-format: [Java] Improve annotation handling.

Before:
@SuppressWarnings(
    value = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") public static int iiiiiiiiiiiiiiiiiiiiiiii;

After:
  @SuppressWarnings(value = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
  public static int iiiiiiiiiiiiiiiiiiiiiiii;

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

10 years agoclang-format: [Java] Make annotation formatting more consistent.
Daniel Jasper [Tue, 21 Oct 2014 10:02:03 +0000 (10:02 +0000)]
clang-format: [Java] Make annotation formatting more consistent.

Before:
  DoSomething(new A() {
    @Override public String toString() {
    }
  });

After:
  DoSomething(new A() {
    @Override
    public String toString() {
    }
  });

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

10 years agoclang-format: [Java] Improve generic support.
Daniel Jasper [Tue, 21 Oct 2014 09:57:09 +0000 (09:57 +0000)]
clang-format: [Java] Improve generic support.

Before:
  Iterable< ? > a;
  Iterable< ? extends SomeObject > a;

After:
  Iterable<?> a;
  Iterable<? extends SomeObject> a;

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

10 years agoclang-format: [Java] Support extending inner classes.
Daniel Jasper [Tue, 21 Oct 2014 09:31:29 +0000 (09:31 +0000)]
clang-format: [Java] Support extending inner classes.

Before:
  class A extends B
  .C {}

After:
  class A extends B.C {}

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

10 years agoclang-format: [Java] Support annotations with parameters.
Daniel Jasper [Tue, 21 Oct 2014 09:25:39 +0000 (09:25 +0000)]
clang-format: [Java] Support annotations with parameters.

Before:
  @SuppressWarnings
  (value = "unchecked") public void doSomething() { .. }

After:
  @SuppressWarnings(value = "unchecked")
  public void doSomething() { .. }

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

10 years agoclang-format: [Java] Wrap after each function annotation.
Daniel Jasper [Tue, 21 Oct 2014 08:24:18 +0000 (08:24 +0000)]
clang-format: [Java] Wrap after each function annotation.

Before:
  @Override public String toString() { .. }

After:
  @Override
  public String toString() { .. }

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

10 years agoTest case B: fixed check rule
Evgeny Astigeevich [Tue, 21 Oct 2014 08:16:42 +0000 (08:16 +0000)]
Test case B: fixed check rule

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

10 years agoTest case B is updated to work for 32-bit and 64-bit platforms
Evgeny Astigeevich [Tue, 21 Oct 2014 08:01:37 +0000 (08:01 +0000)]
Test case B is updated to work for 32-bit and 64-bit platforms

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

10 years agoclang-format: [ObjC] Fix spacing in block variable parameters.
Daniel Jasper [Tue, 21 Oct 2014 07:57:50 +0000 (07:57 +0000)]
clang-format: [ObjC] Fix spacing in block variable parameters.

Before:
  { void (^block)(Object * x); }

After:
  { void (^block)(Object *x); }

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

10 years agoclang-format: Fix space in direct destructor calls.
Daniel Jasper [Tue, 21 Oct 2014 07:51:54 +0000 (07:51 +0000)]
clang-format: Fix space in direct destructor calls.

Before:
  void F(int& i) { i. ~int(); }

After:
  void F(int& i) { i.~int(); }

Also, some cleanups.

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

10 years agoAdd missing qualifier to documentation.
Nick Lewycky [Tue, 21 Oct 2014 06:44:23 +0000 (06:44 +0000)]
Add missing qualifier to documentation.

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

10 years agoUpdate documentation to match API change in r215323.
Nick Lewycky [Tue, 21 Oct 2014 06:43:08 +0000 (06:43 +0000)]
Update documentation to match API change in r215323.

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

10 years agoOpenMPClause.h: Fix a warning. [-Wdocumentation]
NAKAMURA Takumi [Tue, 21 Oct 2014 06:40:57 +0000 (06:40 +0000)]
OpenMPClause.h: Fix a warning. [-Wdocumentation]

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

10 years agoDriver: Tighten up crash report tests
Justin Bogner [Tue, 21 Oct 2014 05:13:09 +0000 (05:13 +0000)]
Driver: Tighten up crash report tests

These tests were a little bit too flexible in terms of filenames.

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

10 years agoRemove unused member variable.
Craig Topper [Tue, 21 Oct 2014 04:19:18 +0000 (04:19 +0000)]
Remove unused member variable.

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

10 years ago[OPENMP] Codegen for 'private' clause in 'parallel' directive.
Alexey Bataev [Tue, 21 Oct 2014 03:16:40 +0000 (03:16 +0000)]
[OPENMP] Codegen for 'private' clause in 'parallel' directive.
This patch generates some helper variables which used as a private copies of the corresponding original variables inside an OpenMP 'parallel' directive. These generated variables are initialized by default (with the default constructor, if any). In outlined function references to original variables are replaced by the references to these private helper variables. At the end of the initialization of the private variables and implicit barier is set by calling __kmpc_barrier(...) runtime function to be sure that all threads were initialized using original values of the variables.
Differential Revision: http://reviews.llvm.org/D4752

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

10 years agoRemove including <complex.h> in test case, and change to use _Complex instead.
Jiangning Liu [Tue, 21 Oct 2014 02:19:58 +0000 (02:19 +0000)]
Remove including <complex.h> in test case, and change to use _Complex instead.

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

10 years agoLower compound assignment for the missing type llvm::Type::FP128TyID.
Jiangning Liu [Tue, 21 Oct 2014 01:34:34 +0000 (01:34 +0000)]
Lower compound assignment for the missing type llvm::Type::FP128TyID.

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

10 years agoSwitch C compilations to C11 by default.
Richard Smith [Mon, 20 Oct 2014 23:26:58 +0000 (23:26 +0000)]
Switch C compilations to C11 by default.

This is long-since overdue, and matches GCC 5.0. This should also be
backwards-compatible, because we already supported all of C11 as an extension
in C99 mode.

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

10 years agoRevert "Improve Windows toolchain support for non-standard environments." (r220226)
Hans Wennborg [Mon, 20 Oct 2014 23:26:03 +0000 (23:26 +0000)]
Revert "Improve Windows toolchain support for non-standard environments." (r220226)

In environments where PATH was set to point to the VS installation, Clang would
override that by looking in the registry and finding the latest VS installation.

If the environment is set up to point to a VS installation, that should take
precedence.

Reverting this until we can fix it.

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

10 years agoDriver: Consolidate the logic for naming the module crashdump cache
Justin Bogner [Mon, 20 Oct 2014 22:47:23 +0000 (22:47 +0000)]
Driver: Consolidate the logic for naming the module crashdump cache

List the module cache we use for crashdumps as a tempfile. This
simplifies how we pick up this directory when generating the actual
crash diagnostic and removes some duplicate logic.

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

10 years agoDriver: Name crashdump scripts after the first temp file
Justin Bogner [Mon, 20 Oct 2014 21:47:56 +0000 (21:47 +0000)]
Driver: Name crashdump scripts after the first temp file

In practice there's only ever one temporary output file when
generating a crashdump, but even if there were many iterating over
each and creating a duplicate run script for each one wouldn't make
very much sense.

This updates the behaviour to only generate the script once, based on
the first filename.

This should make it more reasonable to generate extra output files to
include in the crashdump going forward, so I've also added a FIXME to
look into doing just that with the extra module crashdump files.

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

10 years agoDriver: Use an early return instead of a long if condition (NFC)
Justin Bogner [Mon, 20 Oct 2014 21:20:27 +0000 (21:20 +0000)]
Driver: Use an early return instead of a long if condition (NFC)

This just flattens an if block by returning early on the "else"
condition.

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

10 years agoDriver: Make FailingCommand mandatory for generateCompilationDiagnostics
Justin Bogner [Mon, 20 Oct 2014 21:02:05 +0000 (21:02 +0000)]
Driver: Make FailingCommand mandatory for generateCompilationDiagnostics

We currently use a null FailingCommand when generating crash reports
as an indication that the cause is FORCE_CLANG_DIAGNOSTICS_CRASH, the
environment variable that exists to test crash dumps. This means that
our tests don't actually cover real crashes at all, and adds a more
complicated code path that's only used in the tests.

Instead, we can have the driver synthesize that every command failed
and just call generateCompilationDiagnostics normally.

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

10 years agoFix whitespace introduced in r220221
David Blaikie [Mon, 20 Oct 2014 20:29:35 +0000 (20:29 +0000)]
Fix whitespace introduced in r220221

Post commit review feedback from Yaron Keren.

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

10 years agoImprove Windows toolchain support for non-standard environments.
Zachary Turner [Mon, 20 Oct 2014 20:08:04 +0000 (20:08 +0000)]
Improve Windows toolchain support for non-standard environments.

Typically clang finds Visual Studio by the user explicitly setting
up a Visual Studio environment via vcvarsall.  But we still try to
behave intelligently and fallback to different methods of finding
Visual Studio when this is not done.  This patch improves various
fallback codepaths to make Visual Studio locating more robust.

Specifically, this patch:

* Adds support for searching environment variables for VS 12.0
* Correctly locates include folders for Windows SDK 8.x (this was
  previously broken, and would cause clang to error)
* Prefers locating link.exe in the same location as cl.exe.  This
  is helpful in case another link.exe is in the path earlier than
  Visual Studio (e.g. GnuWin32)
* Minor cleanup in the registry reading code to make it more
  robust in the presence of long pathnames.

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

10 years agoPR21312: Fix a regression in non-type template parameters of function type that are...
David Blaikie [Mon, 20 Oct 2014 18:56:54 +0000 (18:56 +0000)]
PR21312: Fix a regression in non-type template parameters of function type that are static member functions.

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

10 years agoFix indentation.
David Blaikie [Mon, 20 Oct 2014 17:42:23 +0000 (17:42 +0000)]
Fix indentation.

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

10 years agoAdd RestrictQualifierLoc to DeclaratorChunk::FunctionTypeInfo
Hal Finkel [Mon, 20 Oct 2014 17:32:04 +0000 (17:32 +0000)]
Add RestrictQualifierLoc to DeclaratorChunk::FunctionTypeInfo

Clang supports __restrict__ as a function qualifier, but
DeclaratorChunk::FunctionTypeInfo lacked a field to track the qualifier's
source location (as we do with volatile, etc.). This was the subject of a FIXME
in GetFullTypeForDeclarator (in SemaType.cpp). This should also prove useful as
we add more warnings regarding questionable uses of the restrict qualifier.

There is no significant functional change (except for an improved source range
associated with the err_invalid_qualified_function_type diagnostic fixit
generated by GetFullTypeForDeclarator).

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

10 years agoRevert most of r215810, which is no longer needed
Ben Langmuir [Mon, 20 Oct 2014 16:27:32 +0000 (16:27 +0000)]
Revert most of r215810, which is no longer needed

Now that we no longer add mappings when there are no local entities,
there is no need to always bump the size of the tables that correspond
to ContinuousRangeMaps.

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

10 years agoDon't add ID mappings for offsets with no entities in a module
Ben Langmuir [Mon, 20 Oct 2014 16:27:30 +0000 (16:27 +0000)]
Don't add ID mappings for offsets with no entities in a module

This is a better fix for 'duplicate key' problems in module continuous
range maps (vs what I added in r215810) by not adding any mappings at
all when there are no local entities. Now it also covers selectors,
which were not always being bumped because the record SELECTOR_OFFSET is
not always emitted.  I'll back out most of r215810 in a future commit,
since it should no longer be needed.

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

10 years agoclang-format: Fix overloaded operator edge case.
Daniel Jasper [Mon, 20 Oct 2014 13:56:30 +0000 (13:56 +0000)]
clang-format: Fix overloaded operator edge case.

Before:
  template <class F>
  void Call(F f) {
    f.template operator() <int>();
  }

After:
  template <class F>
  void Call(F f) {
    f.template operator()<int>();
  }

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

10 years agoD5823: Fix typo in Clang test arm-cortex-cpus.c; patch by Gabor Ballabas!
Artyom Skrobov [Mon, 20 Oct 2014 13:48:19 +0000 (13:48 +0000)]
D5823: Fix typo in Clang test arm-cortex-cpus.c; patch by Gabor Ballabas!

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

10 years agoclang-format: [ObjC] Fix using selector names as macro arguments.
Daniel Jasper [Mon, 20 Oct 2014 12:01:45 +0000 (12:01 +0000)]
clang-format: [ObjC] Fix using selector names as macro arguments.

Before:
  [self aaaaa:MACRO(a, b :, c :)];

After:
  [self aaaaa:MACRO(a, b:, c:)];

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

10 years agoclang-format: Fix indentation of struct definitions with array init.
Daniel Jasper [Mon, 20 Oct 2014 11:12:51 +0000 (11:12 +0000)]
clang-format: Fix indentation of struct definitions with array init.

Before:
  struct {
    int x;
    int y;
  } points[] = {
        {1, 2}, {2, 3},
  };

After:
  struct {
    int x;
    int y;
  } points[] = {
      {1, 2}, {2, 3},
  };

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

10 years agoCommit to test commit access
Evgeny Astigeevich [Mon, 20 Oct 2014 09:15:05 +0000 (09:15 +0000)]
Commit to test commit access

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

10 years agoCodeGen: Update for LLVM API change
David Majnemer [Mon, 20 Oct 2014 06:13:36 +0000 (06:13 +0000)]
CodeGen: Update for LLVM API change

Callers of DataLayout::RoundUpAlignment should switch to
RoundUpToAlignment.

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

10 years ago[modules] Add support for #include_next.
Richard Smith [Mon, 20 Oct 2014 00:15:49 +0000 (00:15 +0000)]
[modules] Add support for #include_next.

#include_next interacts poorly with modules: it depends on where in the list of
include paths the current file was found. Files covered by module maps are not
found in include search paths when building the module (and are not found in
include search paths when @importing the module either), so this isn't really
meaningful. Instead, we fake up the result that #include_next *should* have
given: find the first path that would have resulted in the given file being
picked, and search from there onwards.

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

10 years agoCodeGen: ConstStructBuilder must verify packed constraints after padding
David Majnemer [Sun, 19 Oct 2014 23:40:06 +0000 (23:40 +0000)]
CodeGen: ConstStructBuilder must verify packed constraints after padding

This reverts commit r220169 which reverted r220153.  However, it also
contains additional changes:
- We may need to add padding *after* we've packed the struct.  This
  occurs when the aligned next field offset is greater than the new
  field's offset.  When this occurs, we make the struct packed.
  *However*, once packed the next field offset might be less than the
  new feild's offset.  It is in this case that we might further pad the
  struct.
- We would pad structs which were perfectly sized!  This behavior is
  immensely old.  This behavior came from blindly subtracting
  NextFieldOffsetInChars from RecordSize.  This doesn't take into
  account the fact that the struct might have a greater overall
  alignment than the last field.

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

10 years agoPreprocessor.h: Suppress a warning in SkipMainFilePreamble. [-Wsign-compare]
NAKAMURA Takumi [Sun, 19 Oct 2014 19:58:33 +0000 (19:58 +0000)]
Preprocessor.h: Suppress a warning in SkipMainFilePreamble. [-Wsign-compare]

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

10 years agoRevert r220153: "CodeGen: ConstStructBuilder must verify packed constraints after...
Chandler Carruth [Sun, 19 Oct 2014 19:41:46 +0000 (19:41 +0000)]
Revert r220153: "CodeGen: ConstStructBuilder must verify packed constraints after padding"

This commit caused two tests in LNT to regress. I'm able to reproduce on
any platform and will send reproduction steps to the original commit
log. This should restore the LNT bots that have been failing.

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

10 years ago[complex] Teach the complex math IR gen to emit direct math and
Chandler Carruth [Sun, 19 Oct 2014 19:13:49 +0000 (19:13 +0000)]
[complex] Teach the complex math IR gen to emit direct math and
a NaN-test prior to the call to the library function.

This should automatically make fastmath (including just non-NaNs) able to avoid
the expensive libcalls and also open the door to more advanced folding in LLVM
based on the rules for complex math.

Two important notes to remember: first is that this isn't yet a proper
limited range mode, it's still just improving the unlimited range mode.
Also, it isn't really perfecet w.r.t. what an unlimited range mode
should be doing because it isn't quite handling the flags produced by
all the operations in the way desirable for that mode, but then neither
is compiler-rt's libcall. When the compiler-rt libcall is improved to
carefully manage flags, the code emitted here should be improved
correspondingly. And it is still a long-term desirable thing to add
a limited range mode to Clang that would be able to use direct math
without library calls here.

Special thanks to Steve Canon for the careful review on this patch and
teaching me about these issues. =D

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

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

10 years agoclang/test/Layout/itanium-union-bitfield.cpp: Appease i686.
NAKAMURA Takumi [Sun, 19 Oct 2014 18:45:13 +0000 (18:45 +0000)]
clang/test/Layout/itanium-union-bitfield.cpp: Appease i686.

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

10 years ago[analyzer] Tweak MallocSizeOfChecker to not warn when using sizeof(void*) to allocate...
Ted Kremenek [Sun, 19 Oct 2014 07:30:55 +0000 (07:30 +0000)]
[analyzer] Tweak MallocSizeOfChecker to not warn when using sizeof(void*) to allocate a bunch of any pointer type.

This suppresses a common false positive when analyzing libc++.

Along the way, introduce some tests to show this checker actually
works with C++ static_cast<>.

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

10 years agoUse the triple's isiOS() method instead of checking the value directly. NFC.
Bob Wilson [Sun, 19 Oct 2014 02:19:27 +0000 (02:19 +0000)]
Use the triple's isiOS() method instead of checking the value directly. NFC.

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

10 years agoCodeGen: ConstStructBuilder must verify packed constraints after padding
David Majnemer [Sun, 19 Oct 2014 00:03:10 +0000 (00:03 +0000)]
CodeGen: ConstStructBuilder must verify packed constraints after padding

Before, ConstStructBuilder::AppendBytes would check packed constraints
prior to padding being added before the field's offset.  However, adding
this padding might force our struct to be packed.  Because we wouldn't
check *after* adding padding, ConstStructBuilder would be in an
inconsistent state leading to a crash.

This fixes PR21300.

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

10 years agoNew round of fixes for "Always compile debuginfo-tests for the host triple"
Filipe Cabecinhas [Sat, 18 Oct 2014 23:36:12 +0000 (23:36 +0000)]
New round of fixes for "Always compile debuginfo-tests for the host triple"

clang tests were breaking, at least when compiling clang only, from an
installed llvm. Make the lit.cfg script deal with the case when we don't
have a host_triple available.

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

10 years agoUse non-member begin/end for a slight readability improvement.
Benjamin Kramer [Sat, 18 Oct 2014 10:43:51 +0000 (10:43 +0000)]
Use non-member begin/end for a slight readability improvement.

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

10 years ago[libclang] If the code-completion point is inside the preamble, adjust the position...
Argyrios Kyrtzidis [Sat, 18 Oct 2014 06:23:50 +0000 (06:23 +0000)]
[libclang] If the code-completion point is inside the preamble, adjust the position at the beginning of the file after the preamble.

Otherwise we will not hit the code-completion point.

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

10 years ago[libclang] Allow code-completion when pointing at the end-of-file.
Argyrios Kyrtzidis [Sat, 18 Oct 2014 06:19:36 +0000 (06:19 +0000)]
[libclang] Allow code-completion when pointing at the end-of-file.

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

10 years agoPR21305: Typedefs in non-type template parameters in member data pointers.
David Blaikie [Sat, 18 Oct 2014 02:21:26 +0000 (02:21 +0000)]
PR21305: Typedefs in non-type template parameters in member data pointers.

Patch by Stephen Crane!

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

10 years agoAppend the %itanium_abi_host_triple substitution unconditionally
Filipe Cabecinhas [Sat, 18 Oct 2014 00:05:26 +0000 (00:05 +0000)]
Append the %itanium_abi_host_triple substitution unconditionally

We will fail if it's not set, even if we don't substitute.

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

10 years agoFix makefile for debuginfo-tests execution.
Filipe Cabecinhas [Fri, 17 Oct 2014 23:50:47 +0000 (23:50 +0000)]
Fix makefile for debuginfo-tests execution.

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

10 years agoSemaDeclCXX.cpp: UninitializedFieldVisitor: Avoid member initializers to appease...
NAKAMURA Takumi [Fri, 17 Oct 2014 23:46:34 +0000 (23:46 +0000)]
SemaDeclCXX.cpp: UninitializedFieldVisitor: Avoid member initializers to appease msc17.

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

10 years agoFix typo in comment.
Nick Lewycky [Fri, 17 Oct 2014 22:45:44 +0000 (22:45 +0000)]
Fix typo in comment.

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

10 years ago[ASan] Improve blacklisting of global variables.
Alexey Samsonov [Fri, 17 Oct 2014 22:37:33 +0000 (22:37 +0000)]
[ASan] Improve blacklisting of global variables.

This commit changes the way we blacklist global variables in ASan.
Now the global is excluded from instrumentation (either regular
bounds checking, or initialization-order checking) if:

1) Global is explicitly blacklisted by its mangled name.
This part is left unchanged.

2) SourceLocation of a global is in blacklisted source file.
This changes the old behavior, where instead of looking at the
SourceLocation of a variable we simply considered llvm::Module
identifier. This was wrong, as identifier may not correspond to
the file name, and we incorrectly disabled instrumentation
for globals coming from #include'd files.

3) Global is blacklisted by type.
Now we build the type of a global variable using Clang machinery
(QualType::getAsString()), instead of llvm::StructType::getName().

After this commit, the active users of ASan blacklist files
may have to revisit them (this is a backwards-incompatible change).

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

10 years agofix -fsanitize-address-field-padding for the cases with virtual base classes
Kostya Serebryany [Fri, 17 Oct 2014 21:02:13 +0000 (21:02 +0000)]
fix -fsanitize-address-field-padding for the cases with virtual base classes

Summary: Correctly compute the non-virtual size of a class.

Test Plan: Build SPEC 2016 with -fsanitize-address-field-padding

Reviewers: rsmith

Reviewed By: rsmith

Subscribers: cfe-commits

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

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

10 years agoFix the rest of PR21289: a pack expansion that we can't expand yet makes a
Richard Smith [Fri, 17 Oct 2014 20:56:14 +0000 (20:56 +0000)]
Fix the rest of PR21289: a pack expansion that we can't expand yet makes a
template specialization type dependent, even if it has no dependent template
arguments. I've filed a corresponding bug against the C++ standard.

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

10 years agoAdd support for initializer lists on field initializers for -Wuninitialized
Richard Trieu [Fri, 17 Oct 2014 20:56:10 +0000 (20:56 +0000)]
Add support for initializer lists on field initializers for -Wuninitialized

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

10 years agoTry to fix parse-progname.c test on Darwin
Hans Wennborg [Fri, 17 Oct 2014 20:55:54 +0000 (20:55 +0000)]
Try to fix parse-progname.c test on Darwin

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

10 years agoDon't forget to substitute into the qualifier when instantiating the definition
Richard Smith [Fri, 17 Oct 2014 20:37:29 +0000 (20:37 +0000)]
Don't forget to substitute into the qualifier when instantiating the definition
of a member function of a class template that is defined outside the template.
This substitution can actually fail in some weird cases.

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

10 years agoMove test/CodeGen/sections.c to CodeGenCXX/sections.cpp
Hans Wennborg [Fri, 17 Oct 2014 18:13:21 +0000 (18:13 +0000)]
Move test/CodeGen/sections.c to CodeGenCXX/sections.cpp

The test was running with -xc++. Seems it wants to be a C++ file.

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

10 years agoRename TemplateArgument::getTypeForDecl to getParamTypeForDecl for clarity
David Blaikie [Fri, 17 Oct 2014 18:00:12 +0000 (18:00 +0000)]
Rename TemplateArgument::getTypeForDecl to getParamTypeForDecl for clarity

Code review feedback from Richard Smith on r219900.

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

10 years agoSema: address post-commit review comment
Saleem Abdulrasool [Fri, 17 Oct 2014 17:20:33 +0000 (17:20 +0000)]
Sema: address post-commit review comment

Hoist the IgnoreParens so that we ignore it around attributes as well in order
to future-proof the code.  Addresses Richard's comments for SVN r219974.

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

10 years agoDriver: support detecting driver mode when clang has a version suffix without dash...
Hans Wennborg [Fri, 17 Oct 2014 17:07:59 +0000 (17:07 +0000)]
Driver: support detecting driver mode when clang has a version suffix without dash (PR21094)

Clang would previously not get into C++ mode when invoked as 'clang++3.6'
(though clang++-3.6 would work).

I found the previous loop logic in this function confusing; hopefully this
makes it a little clearer.

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

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

10 years agoclang-format: Prefer breaking before trailing return arrows.
Daniel Jasper [Fri, 17 Oct 2014 14:37:40 +0000 (14:37 +0000)]
clang-format: Prefer breaking before trailing return arrows.

Before:
  auto SomeFunction(
      A aaaaaaaaaaaaaaaaaaaaa) const -> decltype(f(aaaaaaaaaaaaaaaaaaaaa)) {}

After:
  auto SomeFunction(A aaaaaaaaaaaaaaaaaaaaa) const
      -> decltype(f(aaaaaaaaaaaaaaaaaaaaa)) {}

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

10 years agoclang-format: [Java] Don't break immediately after "throws".
Daniel Jasper [Fri, 17 Oct 2014 13:36:14 +0000 (13:36 +0000)]
clang-format: [Java] Don't break immediately after "throws".

Before:
  public void doSooooooooooooooooooooooooooomething() throws
      LooooooooooooooooooooooooooooongException {}

After:
  public void doSooooooooooooooooooooooooooomething()
      throws LooooooooooooooooooooooooooooongException {}

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

10 years agoRevert r219977, "Re-commit r217995 and follow-up patches (r217997, r218011, r218053...
NAKAMURA Takumi [Fri, 17 Oct 2014 12:48:37 +0000 (12:48 +0000)]
Revert r219977, "Re-commit r217995 and follow-up patches (r217997, r218011, r218053). These were"

It broke some builders. I guess it'd be reproducible with --vg.

  Failing Tests (3):
      Clang :: CXX/except/except.spec/p1.cpp
      Clang :: SemaTemplate/instantiate-exception-spec-cxx11.cpp
      Clang :: SemaTemplate/instantiate-exception-spec.cpp

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

10 years agoAdd explicit triple to clang/test/CodeGen/sanitize-address-field-padding.cpp, for...
NAKAMURA Takumi [Fri, 17 Oct 2014 12:48:01 +0000 (12:48 +0000)]
Add explicit triple to clang/test/CodeGen/sanitize-address-field-padding.cpp, for now. It's incompatible to ms mangling.

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

10 years agocomplex long double support for PowerPC
Joerg Sonnenberger [Fri, 17 Oct 2014 11:51:19 +0000 (11:51 +0000)]
complex long double support for PowerPC

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

10 years agoOptimize Type::isStructureOrClassType() by reusing RT->getDecl().
Yaron Keren [Fri, 17 Oct 2014 11:44:44 +0000 (11:44 +0000)]
Optimize Type::isStructureOrClassType() by reusing RT->getDecl().

RecordType->getDecl() which maps to TagType::getDecl() is not a simple
accessor but a loop on redecls in getInterestingTagDecl.

isStructureOrClassType() was calling getDecl() three times performing
three times the work actually required. It is optimized by calling
RT->getDecl() once and reusing the result three times.

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

10 years agoD5775: The new test case was missing from the preceding commit.
Artyom Skrobov [Fri, 17 Oct 2014 10:25:09 +0000 (10:25 +0000)]
D5775: The new test case was missing from the preceding commit.

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

10 years agoD5775: Fix of assertion failure in case of non-POD unions with bitfields. Patch by...
Artyom Skrobov [Fri, 17 Oct 2014 10:22:03 +0000 (10:22 +0000)]
D5775: Fix of assertion failure in case of non-POD unions with bitfields. Patch by Evgeny Astigeevich!

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

10 years agoUser c-tor name to fix the sanitizer test
Renato Golin [Fri, 17 Oct 2014 10:09:25 +0000 (10:09 +0000)]
User c-tor name to fix the sanitizer test

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

10 years agoTrying to fix failing Clang sanitizer test on ARM bots
Renato Golin [Fri, 17 Oct 2014 09:40:21 +0000 (09:40 +0000)]
Trying to fix failing Clang sanitizer test on ARM bots

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

10 years agoTowards PR21289: don't lose track of unexpanded parameter packs with
Richard Smith [Fri, 17 Oct 2014 02:46:42 +0000 (02:46 +0000)]
Towards PR21289: don't lose track of unexpanded parameter packs with
non-dependent types, in CXXScalarValueInitExprs and in the
nested-name-specifier or template arguments of a DeclRefExpr in particular.

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

10 years agoRemove incorrect usage of JoinedOrSeparate.
Richard Smith [Fri, 17 Oct 2014 01:52:48 +0000 (01:52 +0000)]
Remove incorrect usage of JoinedOrSeparate.

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

10 years agoPR21215: Support -fmodule-map-file being specified multiple times. Support
Richard Smith [Fri, 17 Oct 2014 01:42:53 +0000 (01:42 +0000)]
PR21215: Support -fmodule-map-file being specified multiple times. Support
loading multiple module map files from the same directory.

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

10 years agoSwitch to range-based for loop. No functionality change.
Richard Smith [Fri, 17 Oct 2014 01:26:52 +0000 (01:26 +0000)]
Switch to range-based for loop. No functionality change.

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

10 years agoPer comments on PR12350, move DR244 back from 'done' to 'partial' and add tests showi...
Richard Smith [Fri, 17 Oct 2014 01:03:17 +0000 (01:03 +0000)]
Per comments on PR12350, move DR244 back from 'done' to 'partial' and add tests showing what we get wrong.

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

10 years agoCodeGen: Kill FillInNullDataMemberPointers
David Majnemer [Fri, 17 Oct 2014 01:00:43 +0000 (01:00 +0000)]
CodeGen: Kill FillInNullDataMemberPointers

It exists to handle the case where base subobjects are character arrays.
This never happens.

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

10 years agoAST: Remove dead code from RecordLayoutBuilder
David Majnemer [Fri, 17 Oct 2014 01:00:41 +0000 (01:00 +0000)]
AST: Remove dead code from RecordLayoutBuilder

No functionality change intended.

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

10 years agotrying to fix the new test again, this time for the clang-cmake-armv7-a15 bot
Kostya Serebryany [Fri, 17 Oct 2014 00:47:30 +0000 (00:47 +0000)]
trying to fix the new test again, this time for the clang-cmake-armv7-a15 bot

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

10 years agoSanitizerBlacklist: blacklist functions by their source location.
Alexey Samsonov [Fri, 17 Oct 2014 00:20:19 +0000 (00:20 +0000)]
SanitizerBlacklist: blacklist functions by their source location.

This commit changes the way we blacklist functions in ASan, TSan,
MSan and UBSan. We used to treat function as "blacklisted"
and turned off instrumentation in it in two cases:

1) Function is explicitly blacklisted by its mangled name.
This part is not changed.

2) Function is located in llvm::Module, whose identifier is
contained in the list of blacklisted sources. This is completely
wrong, as llvm::Module may not correspond to the actual source
file function is defined in. Also, function can be defined in
a header, in which case user had to blacklist the .cpp file
this header was #include'd into, not the header itself.
Such functions could cause other problems - for instance, if the
header was included in multiple source files, compiled
separately and linked into a single executable, we could end up
with both instrumented and non-instrumented version of the same
function participating in the same link.

After this change we will make blacklisting decision based on
the SourceLocation of a function definition. If a function is
not explicitly defined in the source file, (for example, the
function is compiler-generated and responsible for
initialization/destruction of a global variable), then it will
be blacklisted if the corresponding global variable is defined
in blacklisted source file, and will be instrumented otherwise.

After this commit, the active users of blacklist files may have
to revisit them. This is a backwards-incompatible change, but
I don't think it's possible or makes sense to support the
old incorrect behavior.

I plan to make similar change for blacklisting GlobalVariables
(which is ASan-specific).

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

10 years agoAppease the buildbots with the special case for non-set variables
Filipe Cabecinhas [Thu, 16 Oct 2014 23:54:26 +0000 (23:54 +0000)]
Appease the buildbots with the special case for non-set variables

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

10 years agoTeach SanitizerBlacklist to blacklist by SourceLocation. NFC.
Alexey Samsonov [Thu, 16 Oct 2014 23:50:26 +0000 (23:50 +0000)]
Teach SanitizerBlacklist to blacklist by SourceLocation. NFC.

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

10 years agoAdded %itanium_abi_host_triple to fix debuginfo-tests when clang is a cross-compiler...
Filipe Cabecinhas [Thu, 16 Oct 2014 23:41:40 +0000 (23:41 +0000)]
Added %itanium_abi_host_triple to fix debuginfo-tests when clang is a cross-compiler by default

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

10 years agoRe-commit r217995 and follow-up patches (r217997, r218011, r218053). These were
Richard Smith [Thu, 16 Oct 2014 23:00:46 +0000 (23:00 +0000)]
Re-commit r217995 and follow-up patches (r217997, r218011, r218053). These were
reverted in r218058 because they triggered a rejects-valid bug in MSVC.

Original commit message from r217995:

Instantiate exception specifications when instantiating function types (other
than the type of a function declaration). We previously didn't instantiate
these at all! This also covers the pathological case where the only mention of
a parameter pack is within the exception specification; this gives us a second
way (other than alias templates) to reach the horrible state where a type
contains an unexpanded pack, but its canonical type does not.

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

10 years agoSema: handle additional case of qualified types
Saleem Abdulrasool [Thu, 16 Oct 2014 22:42:53 +0000 (22:42 +0000)]
Sema: handle additional case of qualified types

A second instance of attributed types escaped the previous change, identified
thanks to Richard Smith!  When deducing the void case, we would also assume that
the type would not be attributed.  Furthermore, properly handle multiple
attributes being applied to a single TypeLoc.

Properly handle this case and future-proof a bit by ignoring parenthesis
further.  The test cases do use the additional parenthesis to ensure that this
case remains properly handled.

Addresses post-commit review comments from Richard Smith to SVN r219851.

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

10 years agotest/CodeGen/sections.c: add triple
Hans Wennborg [Thu, 16 Oct 2014 21:36:23 +0000 (21:36 +0000)]
test/CodeGen/sections.c: add triple

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

10 years agotrying to fix the new test on hexagon-build
Kostya Serebryany [Thu, 16 Oct 2014 21:22:40 +0000 (21:22 +0000)]
trying to fix the new test on hexagon-build

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

10 years agoInsert poisoned paddings between fields in C++ classes so that AddressSanitizer can...
Kostya Serebryany [Thu, 16 Oct 2014 20:54:52 +0000 (20:54 +0000)]
Insert poisoned paddings between fields in C++ classes so that AddressSanitizer can find intra-object-overflow bugs

Summary:
The general approach is to add extra paddings after every field
in AST/RecordLayoutBuilder.cpp, then add code to CTORs/DTORs that poisons the paddings
(CodeGen/CGClass.cpp).

Everything is done under the flag -fsanitize-address-field-padding.
The blacklist file (-fsanitize-blacklist) allows to avoid the transformation
for given classes or source files.

See also https://code.google.com/p/address-sanitizer/wiki/IntraObjectOverflow

Test Plan: run SPEC2006 and some of the Chromium tests with  -fsanitize-address-field-padding

Reviewers: samsonov, rnk, rsmith

Reviewed By: rsmith

Subscribers: majnemer, cfe-commits

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

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

10 years agoMS Compat: mark globals emitted in read-only sections const
Hans Wennborg [Thu, 16 Oct 2014 20:52:46 +0000 (20:52 +0000)]
MS Compat: mark globals emitted in read-only sections const

They cannot be written to, so marking them const makes sense and may improve
optimisation.

As a side-effect, SectionInfos has to be moved from Sema to ASTContext.

It also fixes this problem, that occurs when compiling ATL:

  warning LNK4254: section 'ATL' (C0000040) merged into '.rdata' (40000040) with different attributes

The ATL headers are putting variables in a special section that's marked
read-only. However, Clang currently can't model that read-onlyness in the IR.
But, by making the variables const, the section does become read-only, and
the linker warning is avoided.

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

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