Commit Graph

53194 Commits

Author SHA1 Message Date
Saleem Abdulrasool f7062b2313 Driver: correct behaviour of -fmsc-version=MAJOR
Ensure that we properly handle the case where just the major version component
is provided by the user.

Thanks to Alp Toker for pointing out that this was not handled correctly!

llvm-svn: 211506
2014-06-23 17:36:36 +00:00
David Majnemer dd6ab8221e MS ABI: Add an additional test for typeid
This tests typeid with polymorphic arguments which have an extendable
virtual function table.

llvm-svn: 211505
2014-06-23 17:30:27 +00:00
Ben Langmuir 2cc485b6a9 Stop sharing the FileManager in ASTUnit::Parse
We were using old stat values for any files that had previously been
looked up, leading to badness. There might be a more elegant solution in
invalidating the cache for those file (since we already know which ones
they are), but it seems too likely there are existing references to
them hiding somewhere.

llvm-svn: 211504
2014-06-23 16:36:40 +00:00
Alexey Bataev cefffaeeca [OPENMP] Reformatting and code improvement.
llvm-svn: 211489
2014-06-23 08:21:53 +00:00
Daniel Jasper 9c2820c4e3 clang-format: [proto] Add required space before absolute references.
llvm-svn: 211488
2014-06-23 07:36:25 +00:00
Daniel Jasper 32ccb03871 clang-format: Fix corner case in pointer/reference detection.
llvm-svn: 211487
2014-06-23 07:36:18 +00:00
David Majnemer 05c69866a8 Parse: Simplify construction of the clobber list
This avoids going over the clobber list twice.

No functionality change.

llvm-svn: 211485
2014-06-23 02:16:41 +00:00
David Majnemer fa1d3e35e1 StaticAnalyzer: Switch a loop to a range-based for
Merely a code simplification, no functionality change.

llvm-svn: 211484
2014-06-23 02:16:38 +00:00
David Majnemer 5f24e7d548 AST: Add ranges for AsmStmt's inputs and outputs
No functionality change.

llvm-svn: 211483
2014-06-23 02:16:34 +00:00
Alp Toker 1a923b42cb cindex.py: remove obsolete workaround and FIXME
clang_getCursorSpelling() doesn't assert on non-declarations any more and the
behaviour is covered by c-index tests.

Passes nosetests.

llvm-svn: 211482
2014-06-22 23:28:54 +00:00
Alp Toker ac4e8e5fca DiagnosticIDs: use diagnostic severities to simplify extension handling
llvm-svn: 211479
2014-06-22 21:58:33 +00:00
Alp Toker 65428c6877 Fix the category name for hash-warnings and hash-errors
llvm-svn: 211475
2014-06-22 21:16:50 +00:00
Justin Bogner 61c0e43ef6 Driver: Skip the -ivfsoverlay argument in driver crash diags
llvm-svn: 211474
2014-06-22 20:35:10 +00:00
David Majnemer 1162d25c1b Revert "Revert r211402 (and r211408,r211410), "CodeGen: Refactor dynamic_cast and typeid" It crashes msvc codegen in clang/test/SemaCXX/undefined-internal.cpp."
This reverts commit r211467 which reverted r211408,r211410, it caused
crashes in test/SemaCXX/undefined-internal.cpp for i686-win32 targets.

llvm-svn: 211473
2014-06-22 19:05:33 +00:00
Richard Smith 707e3ba37c [cxx_status] Minor wording tweaks.
llvm-svn: 211471
2014-06-22 16:00:05 +00:00
Richard Smith e114c3a3ba [cxx_status] Be a bit more precise.
llvm-svn: 211470
2014-06-22 15:56:23 +00:00
Richard Smith 7cebe465ef Fix dead link.
llvm-svn: 211469
2014-06-22 15:54:54 +00:00
NAKAMURA Takumi 0a6c5e2fb5 Revert r211402 (and r211408,r211410), "CodeGen: Refactor dynamic_cast and typeid" It crashes msvc codegen in clang/test/SemaCXX/undefined-internal.cpp.
It is reproducible with:

  $ clang -cc1 -triple i686-win32 -emit-llvm-only clang/test/SemaCXX/undefined-internal.cpp

llvm-svn: 211467
2014-06-22 12:42:29 +00:00
Benjamin Kramer c5f3963bcb Remove unused diagnostic and diagnostic group.
llvm-svn: 211464
2014-06-22 12:16:35 +00:00
Alp Toker 2724ec37f3 TextDiagnosticPrinter: use the mapped level for remark flag computation
Custom diagnostics don't have a builtin class so this wouldn't have worked.
Reduces surface area of remark-related changes.

No test coverage.

llvm-svn: 211462
2014-06-22 10:08:06 +00:00
Alp Toker f1ffc84f10 Enable WindowsToolChain on all native Windows builds
Make binaries built by MSVC, mingw and clang functionally equivalent. The
checks are trivially performed at runtime to eliminate functional differences
between supported configurations that used to be hard-coded.

llvm-svn: 211461
2014-06-22 04:31:15 +00:00
Alp Toker a2074404de WindowsToolChain: decouple build environment from the toolchain
Don't try to find the MSVC version that the binaries were built with. Doing so
defeats testing by causing invalid test passes on the build servers.

Whichever Visual Studio (or clang-cl.exe) edition was used to build the clang
package, it's strictly orthogonal and has no relation to software versions
available on the user's PC.

llvm-svn: 211459
2014-06-22 03:27:52 +00:00
Alp Toker fcce183a38 Make WindowsToolChain portable
De-conditionalize as much as possible so we can start to fix this code.

No change in functionality.

llvm-svn: 211458
2014-06-22 03:27:45 +00:00
Jordan Rose e3f310f3bd [analyzer] Check for NULL passed to CFAutorelease.
Patch by Sean McBride, tests adjusted by me.

llvm-svn: 211453
2014-06-21 23:50:40 +00:00
Alp Toker e492fae27d Make MS i128 suffix test from r211446 more robust
We want to catch both negative and positive failure conditions.

llvm-svn: 211449
2014-06-21 23:32:05 +00:00
Alp Toker 4db87abf0f DiagnosticRenderer: emit basic notes as real diagnostics
Fixes terminal column wrapping and vestigial 'note:' prefixes that would appear
when using emitBasicNote().

llvm-svn: 211448
2014-06-21 23:31:59 +00:00
Alp Toker a68ad10a90 TextDiagnostic: print remark level diagnostics in bold too
The purpose of bolding these is to make them visually distinct from
continuations (supplemental note diagnostics). Therefore, the bolding applies
to all severities _including_ remarks -- it's not in any way an indicator of
priority. Also simplify and comment.

No tests.

llvm-svn: 211447
2014-06-21 23:31:52 +00:00
David Majnemer 355597e99e The i128 suffix isn't always available.
This Lexer test unconditionally used the i128 integer literal suffix.
This suffix is only available to targets that have 128-bit arithmetic
support.

llvm-svn: 211446
2014-06-21 22:49:50 +00:00
David Majnemer 65a407c2ce Lex: Use the correct types for MS integer suffixes
Something went wrong with r211426, it is an older version of this code
and should not have been committed.  It was reverted with r211434.

Original commit message:
We didn't properly implement support for the sized integer suffixes.
Suffixes like i16 were essentially ignored instead of mapping them to
the appropriately sized integer type.

This fixes PR20008.

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

llvm-svn: 211441
2014-06-21 18:46:07 +00:00
Argyrios Kyrtzidis 4f1560242a [test] Add '-target' option to fix bot failure.
llvm-svn: 211439
2014-06-21 18:28:44 +00:00
Argyrios Kyrtzidis d886f1a370 [PCH] Remove the BackingIvarReferencedInAccessor field from DECL_OBJC_IVAR abbreviation record.
Patch by Yiding Jia!

llvm-svn: 211438
2014-06-21 18:16:40 +00:00
Rafael Espindola d46e4a2303 Revert "Lex: Use the correct types for MS integer suffixes"
This reverts commit r211426.

This broke the arm bots. The crash can be reproduced on X86 by running.
./bin/clang -cc1  -fsyntax-only -verify -fms-extensions ~/llvm/clang/test/Lexer/ms-extensions.c -triple arm-linux

llvm-svn: 211434
2014-06-21 12:39:25 +00:00
David Majnemer 252cbe25cb Lex: Use the correct types for MS integer suffixes
We didn't properly implement support for the sized integer suffixes.
Suffixes like i16 were essentially ignored instead of mapping them to
the appropriately sized integer type.

This fixes PR20008.

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

llvm-svn: 211426
2014-06-21 00:51:59 +00:00
Justin Bogner a88f0122e3 Driver: In crashdumps with -fmodule, dump the module dependencies
llvm-svn: 211421
2014-06-20 22:59:50 +00:00
Saleem Abdulrasool 9d45e77dca Driver: enhance MSC version compatibility
The version information for Visual Studio is spread over multiple variables.
The newer Windows SDK has started making use of some of the extended versioning
variables that were previously undefined.  Enhance our compatibility definitions
for these cases.

_MSC_VER is defined to be the Major * 100 + Minor.  _MSC_FULL_VER is defined to
be Major * 10000000 + Minor * 100000 + Build.  And _MSC_BUILD is the build
revision of the compiler.

Extend the -fmsc-version option in a compatible manner.  If the value is the
previous form of MMmm, then we assume that the build number is 0.  Otherwise, a
specific build number may be passed by using the form MMmmbbbbb.  Due to
bitwidth limitations of the option, it is currently not possible to define a
revision value.

The version information can be passed as either the decimal encoded value
(_MSC_FULL_VER or _MSC_VER) or as a dot-delimited value.

The change to the TextDiagnostic is to deal with the updated encoding of the
version information.

llvm-svn: 211420
2014-06-20 22:58:35 +00:00
Justin Bogner 332a5e526e Driver: Record that we're in crashdump and push flags to ConstructJob
It's more flexible and arguably better layering to set flags to modify
compiling for diagnostics in the CC1 job themselves, rather than
tweaking the driver flags and letting them propagate.

There is one visible change this causes: crash report files will now
get preprocessed names (.i and friends).

llvm-svn: 211411
2014-06-20 22:16:00 +00:00
David Majnemer 0dc1e80a32 CodeGen: Fix test to work with assertions as well
llvm-svn: 211410
2014-06-20 22:08:59 +00:00
David Majnemer 160000c64c CodeGen: typeid/dynamic_cast tests don't need asserts
These tests relied on information that was only available for clang
builds that included asserts.  Fix these tests to lift that restriction.

llvm-svn: 211408
2014-06-20 21:44:39 +00:00
Justin Bogner 5443ad5772 Driver: Remove some superfluous calls to Arg->claim()
Args.getLastArg() claims the Arg it returns, so calling claim on these
results is unnecessary.

llvm-svn: 211403
2014-06-20 21:12:53 +00:00
David Majnemer f1c9cbc2a2 CodeGen: Refactor dynamic_cast and typeid
This refactors the emission of dynamic_cast and typeid expressions so
that ABI specific knowledge lives in appropriate places.  There are
quite a few benefits for having the two implementations share a common
core like sharing logic for optimization opportunities.

While we are at it, clean up the tests.

llvm-svn: 211402
2014-06-20 21:11:00 +00:00
Richard Smith 4a4b357c90 C++ status page: restore the convention of saying "SVN" until we reach a release.
llvm-svn: 211398
2014-06-20 20:35:42 +00:00
Richard Smith a32124a231 Be less bold.
llvm-svn: 211397
2014-06-20 20:34:03 +00:00
Richard Smith cf31c6b6f2 [C++1z] Add C++1z to the C++ status page.
llvm-svn: 211396
2014-06-20 20:33:10 +00:00
Richard Smith cf519ff519 Fix typo in r211394.
llvm-svn: 211395
2014-06-20 19:58:05 +00:00
Richard Smith 085a64ffc5 [C++1z] Implement N3928: message in static_assert is optional.
llvm-svn: 211394
2014-06-20 19:57:12 +00:00
Richard Smith 4676203011 [C++1z] Implement N3981: Disable trigraphs by default in C++1z mode.
llvm-svn: 211392
2014-06-20 19:23:57 +00:00
Richard Smith f3076ff2fd Don't crash when emitting a glvalue conditional where one arm is a
throw-expression. Based on a patch by Marius Wachtler!

llvm-svn: 211388
2014-06-20 18:43:47 +00:00
Serge Pavlov eb57aa65dc Fix crash caused by unnamed union or struct when doing ast-print
llvm-svn: 211380
2014-06-20 17:08:28 +00:00
Ulrich Weigand bebc55b13b [PowerPC] Fix small argument stack slot offset for LE
When small arguments (structures < 8 bytes or "float") are passed in a
stack slot in the ppc64 SVR4 ABI, they must reside in the least
significant part of that slot.  On BE, this means that an offset needs
to be added to the stack address of the parameter, but on LE, the least
significant part of the slot has the same address as the slot itself.

For the most part, this is handled in the LLVM back-end, where I just
fixed the LE case in commit r211368.

However, there is one piece of the clang front-end that is also aware of
these stack-slot offsets: PPC64_SVR4_ABIInfo::EmitVAArg.  This patch
updates that routine to take endianness into account.

llvm-svn: 211370
2014-06-20 16:37:40 +00:00
NAKAMURA Takumi 5e3d1414a4 Disable Modules/dependency-dump-dependent-module.m on win32 for now.
FIXME: This fails on win32 due to ERROR_FILENAME_EXCED_RANGE if the working directory is too deep.

We should make Win32/Path.inc capable of long pathnames with '\\?\'.

llvm-svn: 211363
2014-06-20 15:04:25 +00:00