Saleem Abdulrasool [Sat, 28 Jun 2014 23:34:11 +0000 (23:34 +0000)]
Basic: fix handling for Windows Itanium environment
This corrects the handling for i686-windows-itanium. This environment is nearly
identical to Windows MSVC, except it uses the itanium ABI for C++.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211991
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Sat, 28 Jun 2014 23:34:07 +0000 (23:34 +0000)]
Basic: whitespace cleanup
Remove unnecessary separation of anonymous namespace. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211990
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Trieu [Sat, 28 Jun 2014 23:25:37 +0000 (23:25 +0000)]
Extend -Wtautological-undefined-compare and -Wundefined-bool-conversion to
trigger on taking the address of a reference that is returned from a function
call.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211989
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 28 Jun 2014 23:22:33 +0000 (23:22 +0000)]
Import MutableArrayRef into clang namespace.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211988
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 28 Jun 2014 23:22:23 +0000 (23:22 +0000)]
Remove llvm:: from uses of ArrayRef.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211987
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Sat, 28 Jun 2014 15:56:08 +0000 (15:56 +0000)]
[Driver][Mips] Fix else-after-return.
No functional changes.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211984
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Sat, 28 Jun 2014 15:56:03 +0000 (15:56 +0000)]
[Driver][Mips] Remove redundant brackets.
No functional changes.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211983
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Sat, 28 Jun 2014 15:55:55 +0000 (15:55 +0000)]
[Driver][Mips] Remove redundant abstract/override function.
No functional changes.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211982
91177308-0d34-0410-b5e6-
96231b3b80d8
Alp Toker [Sat, 28 Jun 2014 06:51:27 +0000 (06:51 +0000)]
Get arm_acle tests from r211962 working
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211979
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Fri, 27 Jun 2014 23:58:21 +0000 (23:58 +0000)]
Extend -Wdynamic-class-memaccess to records containing dynamic classes
Reviewers: rtrieu
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D4325
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211972
91177308-0d34-0410-b5e6-
96231b3b80d8
Yi Kong [Fri, 27 Jun 2014 21:25:42 +0000 (21:25 +0000)]
Introduce arm_acle.h supporting existing LLVM builtin intrinsics
Summary: This patch introduces ACLE header file, implementing extensions that can be directly mapped to existing Clang intrinsics. It implements for both AArch32 and AArch64.
Reviewers: t.p.northover, compnerd, rengolin
Reviewed By: compnerd, rengolin
Subscribers: rnk, echristo, compnerd, aemerson, mroth, cfe-commits
Differential Revision: http://reviews.llvm.org/D4296
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211962
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Fri, 27 Jun 2014 17:40:03 +0000 (17:40 +0000)]
Remove 'const' from MemoryBuffers used through the SourceManager
This removes a const_cast added in r211884 that occurred due to an
inconsistency in how MemoryBuffers are handled between some parts of
clang and LLVM.
MemoryBuffers are immutable and the general convention in the LLVM
project is to omit const from immutable types as it's simply
redundant/verbose (see llvm::Type, for example). While this change
doesn't remove "const" from /every/ MemoryBuffer, it at least makes this
chain of ownership/usage consistent.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211915
91177308-0d34-0410-b5e6-
96231b3b80d8
Ben Langmuir [Fri, 27 Jun 2014 17:04:26 +0000 (17:04 +0000)]
Add reparse test for libclang
Adapted from a reproducer by Dan Schmidt, thanks!
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211910
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Fri, 27 Jun 2014 17:02:02 +0000 (17:02 +0000)]
clang-cl: Map /EHs- to -fno-exceptions
This isn't 100% compatible with MSVC, but it's close enough. MSVC's /EH
flag doesn't really control exceptions so much as how to clean up after
an exception is thrown. The upshot is that cl.exe /EHs- will compile
try, throw, and catch statements with a warning, but clang-cl will
reject such constructs with a hard error. We can't compile such EH
constructs anyway, but this may matter to consumers of the AST.
Reviewers: hans
Differential Revision: http://reviews.llvm.org/D4317
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211909
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Fri, 27 Jun 2014 16:56:27 +0000 (16:56 +0000)]
CodeGen: Fix a typo in getThreadLocalWrapperLinkage
The description had a misspelling. No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211908
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Fri, 27 Jun 2014 16:37:27 +0000 (16:37 +0000)]
Fix a bug in my previous patch by restoring the behavior that the fatal
error handler is only registered once.
To avoid the use of std::call_once (the obvious way to do this) I've
wrapped everything up into a managed static and done the work in
a constructor. Silly, but it should be effective.
Some out-of-tree libclang users reported this to me, and I've asked them
to put together a test case which exhibits this behavior, but I wanted
to fix things ASAP since the nature of the fix is straight forward.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211905
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Fri, 27 Jun 2014 15:14:39 +0000 (15:14 +0000)]
This fixes libclang to cope with the now compile-time multithreaded
selection re-enabled in r211900 in LLVM.
The approach (unlike r211121) doesn't rely on std::mutex or
std::call_once to avoid breaknig cygwin bots.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211901
91177308-0d34-0410-b5e6-
96231b3b80d8
Oliver Stannard [Fri, 27 Jun 2014 13:59:27 +0000 (13:59 +0000)]
[ARM] Fix AAPCS non-compliance caused by very large structs
This is a fix to the code in clang which inserts padding arguments to
ensure that the ARM backend can emit AAPCS-VFP compliant code. This code
needs to track the number of registers which have been allocated in order
to do this. When passing a very large struct (>64 bytes) by value, clang
emits IR which takes a pointer to the struct, but the backend converts this
back to passing the struct in registers and on the stack. The bug was that
this was being considered by clang to only use one register, meaning that
there were situations in which padding arguments were incorrectly emitted
by clang.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211898
91177308-0d34-0410-b5e6-
96231b3b80d8
Logan Chien [Fri, 27 Jun 2014 12:37:36 +0000 (12:37 +0000)]
Replace GetProgramPath("ld") with GetLinkerPath().
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211895
91177308-0d34-0410-b5e6-
96231b3b80d8
James Molloy [Fri, 27 Jun 2014 11:53:35 +0000 (11:53 +0000)]
[ARM-BE] Generate correct NEON intrinsics for big endian systems.
The NEON intrinsics in arm_neon.h are designed to work on vectors
"as-if" loaded by (V)LDR. We load vectors "as-if" (V)LD1, so the
intrinsics are currently incorrect.
This patch adds big-endian versions of the intrinsics that does the
"obvious but dumb" thing of reversing all vector inputs and all
vector outputs. This will produce extra REVs, but we trust the
optimizer to remove them.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211893
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexander Kornienko [Fri, 27 Jun 2014 11:18:13 +0000 (11:18 +0000)]
Don't check clang binary name, as it can be different in some test setups.
Summary: This unbreaks our internal build after these tests were turned on in r211738.
Reviewers: chandlerc
Reviewed By: chandlerc
Subscribers: benlangmuir, cfe-commits
Differential Revision: http://reviews.llvm.org/D4311
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211887
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Bataev [Fri, 27 Jun 2014 10:37:06 +0000 (10:37 +0000)]
[OPENMP] Parsing and sema analysis for 'copyprivate' clause.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211886
91177308-0d34-0410-b5e6-
96231b3b80d8
Alp Toker [Fri, 27 Jun 2014 09:24:27 +0000 (09:24 +0000)]
const_cast the memory MemoryBuffer following LLVM r211883
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211884
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Fri, 27 Jun 2014 06:35:05 +0000 (06:35 +0000)]
Driver: Pass -ivfsoverlay to module crashdumps
When we create a crashdump involving modules, we build a VFS to
reproduce the problem with. This updates the reproduction script to
use that VFS.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211876
91177308-0d34-0410-b5e6-
96231b3b80d8
Alp Toker [Fri, 27 Jun 2014 06:02:00 +0000 (06:02 +0000)]
Add a FIXME for an unfortunate issue in ConvertBackendLocation()
This function is copying the entire file contents into memory repeatedly and
allocating new file IDs *each time* a source location is processed.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211874
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Fri, 27 Jun 2014 05:06:41 +0000 (05:06 +0000)]
Driver: use GNU::Link for the Generic_GCC toolchain
This changes the behaviour of the driver for linking to match that of the
Generic_GCC::Assemble. The default link should use "ld" rather than "gcc" for
the linker as gcc does. This avoids the unnecessary round-tripping through gcc.
It also is much more reasonable behaviour from the user's perspective. This
should have been updated with SVN r195554 which changed the behaviour of
Generic_GCC::Assemble.
The gcc_forward test needs to be updated to mark the fact that -march is a flag
for GCC not ld. This was updated as a typo fix, but added a check for a flag
that is not a link flag.
The bindings test covers the change for testing, and thus no new test was added.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211866
91177308-0d34-0410-b5e6-
96231b3b80d8
Alp Toker [Fri, 27 Jun 2014 04:34:44 +0000 (04:34 +0000)]
CodeGenAction: don't duplicate entire .ll/.bc files into memory
Requires supporting changes from LLVM r211861.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211862
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Bataev [Fri, 27 Jun 2014 03:33:10 +0000 (03:33 +0000)]
[OPENMP] Added several test cases in nesting of OpenMP regions test after review from Samuel F Antao.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211857
91177308-0d34-0410-b5e6-
96231b3b80d8
Alp Toker [Fri, 27 Jun 2014 03:11:38 +0000 (03:11 +0000)]
Account for differences in grep implementations
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211856
91177308-0d34-0410-b5e6-
96231b3b80d8
Alp Toker [Fri, 27 Jun 2014 02:59:39 +0000 (02:59 +0000)]
Restore test from r211844 skipping '.file' directives
At least this answers the question of whether .bc/.ll input processed by the
frontend produces identical output to the original compilation.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211853
91177308-0d34-0410-b5e6-
96231b3b80d8
Alp Toker [Fri, 27 Jun 2014 02:35:57 +0000 (02:35 +0000)]
Partially disable test from r211844
ELF assembly contains .line directives that differ based on the input filename.
Weaken the test while considering options.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211849
91177308-0d34-0410-b5e6-
96231b3b80d8
Alp Toker [Fri, 27 Jun 2014 02:04:28 +0000 (02:04 +0000)]
Add test coverage for .bc input in the frontend
Test that we can consume LLVM bitcode and additionally check that it produces
the same output as a direct compilation.
The feature is crashy and has gone untested until now, but we might as well
provide some coverage as long as it remains in tree.
Also test LL source input in the same way because the existing tests for that
don't look convincing.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211844
91177308-0d34-0410-b5e6-
96231b3b80d8
Alp Toker [Fri, 27 Jun 2014 02:04:21 +0000 (02:04 +0000)]
Remove .bc from test config.suffixes
This was unused. Besides, a binary file can't really contain lit ShTests.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211843
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Fri, 27 Jun 2014 01:32:59 +0000 (01:32 +0000)]
clang/test/Driver/fuse-ld.c: Really fix to match dos path.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211841
91177308-0d34-0410-b5e6-
96231b3b80d8
Anna Zaks [Fri, 27 Jun 2014 01:03:05 +0000 (01:03 +0000)]
Do not inline methods of C++ containers (coming from headers).
This silences false positives (leaks, use of uninitialized value) in simple
code that uses containers such as std::vector and std::list. The analyzer
cannot reason about the internal invariances of those data structures which
leads to false positives. Until we come up with a better solution to that
problem, let's just not inline the methods of the containers and allow objects
to escape whenever such methods are called.
This just extends an already existing flag "c++-container-inlining" and applies
the heuristic not only to constructors and destructors of the containers, but
to all of their methods.
We have a bunch of distinct user reports all related to this issue
(radar://
16058651, radar://
16580751, radar://
16384286, radar://
16795491
[PR19637]).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211832
91177308-0d34-0410-b5e6-
96231b3b80d8
Logan Chien [Fri, 27 Jun 2014 00:19:33 +0000 (00:19 +0000)]
Allow different path separator for windows build.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211823
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Thu, 26 Jun 2014 22:42:18 +0000 (22:42 +0000)]
Avoid extra back reference key lookup in msmangler
Avoid a second key lookup when the back reference key is going to be
inserted in the StringMap. The string lookups in the msmangler are the
main responsible for the huge overhead when compared to the itanium
mangler. This patch makes a small but noticeable improvement.
Reviewed by: rnk
Differential Revision: http://reviews.llvm.org/D4130
Patch by Agustín Bergé!
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211813
91177308-0d34-0410-b5e6-
96231b3b80d8
Fariborz Jahanian [Thu, 26 Jun 2014 21:22:16 +0000 (21:22 +0000)]
Objective-C ARC. Provide diagnostic and fix-it
when casting a retainable object to a objc_bridge_related
CF type with the suggestion of applying the method
specified in the bridging attribute to the object.
// rdar://
15932435
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211807
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Thu, 26 Jun 2014 20:59:39 +0000 (20:59 +0000)]
Driver: Fix a misleading comment and test for what it actually did
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211806
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Thu, 26 Jun 2014 20:59:36 +0000 (20:59 +0000)]
Driver: Remove trailing whitespace
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211805
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Thu, 26 Jun 2014 19:59:02 +0000 (19:59 +0000)]
clang-cl: Don't store the cl compiler Tool on the stack (PR20131)
The Command will refer back to the Tool as its source,
so it has to outlive the Command.
Having the Tool on the stack would cause us to crash
when using "clang-cl -GR -fallback", because if the
Command fails, Driver::ExecuteCompilation tries to
peek at the Command's source.
Differential Revision: http://reviews.llvm.org/D4314
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211802
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Thu, 26 Jun 2014 17:24:16 +0000 (17:24 +0000)]
ARM: Correctly identify cortex-m4 as v7em.
Get the predefined macro for the architecture correct.
cortex-m4: __ARM_ARCH_7EM__
cortex-m3: __ARM_ARCH_7M__
cortex-m0: __ARM_ARCH_6M__
rdar://
17420090
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211792
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Thu, 26 Jun 2014 16:26:42 +0000 (16:26 +0000)]
Add a Visualizer for VarDecl.
Reviewed by: Aaron Ballman
Differential Revision: http://reviews.llvm.org/D4303
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211788
91177308-0d34-0410-b5e6-
96231b3b80d8
Logan Chien [Thu, 26 Jun 2014 14:38:46 +0000 (14:38 +0000)]
Propset the executables for GetProgramPath().
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211786
91177308-0d34-0410-b5e6-
96231b3b80d8
Logan Chien [Thu, 26 Jun 2014 14:23:45 +0000 (14:23 +0000)]
Implement the -fuse-ld= option.
This commit implements the -fuse-ld= option, so that the user
can specify -fuse-ld=bfd to use ld.bfd.
This commit re-applies r194328 with some test case changes.
It seems that r194328 was breaking macosx or mingw build
because clang can't find ld.bfd or ld.gold in the given sysroot.
We should use -B to specify the executable search path instead.
Patch originally by David Chisnall.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211785
91177308-0d34-0410-b5e6-
96231b3b80d8
Will Schmidt [Thu, 26 Jun 2014 13:34:10 +0000 (13:34 +0000)]
Add ppc64/power8 as a target
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211778
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Bataev [Thu, 26 Jun 2014 12:05:45 +0000 (12:05 +0000)]
[OPENMP] Initial parsing and sema analysis for 'single' directive.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211774
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Bataev [Thu, 26 Jun 2014 08:21:58 +0000 (08:21 +0000)]
[OPENMP] Initial parsing and sema analysis for 'section' directive.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211767
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Thu, 26 Jun 2014 07:48:46 +0000 (07:48 +0000)]
Sema: Allow dllimport entities in template args for mingw
Previously dllimport variables inside of template arguments relied on
not using the C++11 codepath when -fms-compatibility was set.
While this allowed us to achieve compatibility with MSVC, it did so at
the expense of MingW.
Instead, try to use the DeclRefExpr we dig out of the template argument.
If it has the dllimport attribute, accept it and skip the C++11
null-pointer check.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211766
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 26 Jun 2014 04:58:53 +0000 (04:58 +0000)]
Convert some function arguments to use ArrayRef.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211764
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 26 Jun 2014 04:58:39 +0000 (04:58 +0000)]
Convert StringLiteralParser constructor to use ArrayRef instead of a pointer and count.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211763
91177308-0d34-0410-b5e6-
96231b3b80d8
Alp Toker [Thu, 26 Jun 2014 02:07:06 +0000 (02:07 +0000)]
Make test from r211758 portable
It turns out the -fblocks option is determined by the default tooling target
and not implied by the other two flags.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211761
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Thu, 26 Jun 2014 01:45:07 +0000 (01:45 +0000)]
CodeGen: Improve warnings about uninstrumented files when profiling
Improve the warning when building with -fprofile-instr-use and a file
appears not to have been profiled at all. This keys on whether a
function is defined in the main file or not to avoid false negatives
when one includes a header with functions that have been profiled.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211760
91177308-0d34-0410-b5e6-
96231b3b80d8
Alp Toker [Thu, 26 Jun 2014 01:42:30 +0000 (01:42 +0000)]
Reformat RAVs to sync up following recent updates
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211759
91177308-0d34-0410-b5e6-
96231b3b80d8
Alp Toker [Thu, 26 Jun 2014 01:42:24 +0000 (01:42 +0000)]
RAV: visit copy expressions of captured variables in blocks (ObjC++11)
Patch by Mathieu Baudet.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211758
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Thu, 26 Jun 2014 01:08:54 +0000 (01:08 +0000)]
Forward -u to the linker on gnutools toolchains
Summary:
The BSDs and Darwin all forward the whole 'u' group, but gcc only
forwards -u so far as I can tell. I only forward -u, since that's a
minimal change, and many people object to magically recognizing and
forwarding linker arguments.
Reviewers: chandlerc, joerg
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D4304
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211756
91177308-0d34-0410-b5e6-
96231b3b80d8
Ben Langmuir [Wed, 25 Jun 2014 23:53:43 +0000 (23:53 +0000)]
Make -Wincomplete-umbrella go through the VFS
By using vfs::recursive_directory_iterator, this warning will now fire
when some or all of a module's headers are from VFS mappings.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211746
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Wed, 25 Jun 2014 23:19:58 +0000 (23:19 +0000)]
Make PR20038.cpp test case portable to non-Itanium ABIs
The only call in this function is to the dtor, so there's no need to
name a non-portable mangled function name to match it.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211742
91177308-0d34-0410-b5e6-
96231b3b80d8
Alp Toker [Wed, 25 Jun 2014 22:46:44 +0000 (22:46 +0000)]
Remove REQUIRES lines from portable tests
These tests are target-independent and shouldn't ever be suppressed.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211738
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Wed, 25 Jun 2014 22:19:48 +0000 (22:19 +0000)]
Don't allow dllimport variables in constant initializers
This is a follow-up to David's r211677. For the following code,
we would end up referring to 'foo' in the initializer for 'arr',
and then fail to link, because 'foo' is dllimport and needs to be
accessed through the __imp_?foo.
__declspec(dllimport) extern const char foo[];
const char* f() {
static const char* const arr[] = { foo };
return arr[0];
}
Differential Revision: http://reviews.llvm.org/D4299
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211736
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 25 Jun 2014 22:15:12 +0000 (22:15 +0000)]
fixed typos in comment
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211734
91177308-0d34-0410-b5e6-
96231b3b80d8
Ben Langmuir [Wed, 25 Jun 2014 20:25:40 +0000 (20:25 +0000)]
Add vfs::recursive_directory_iterator
For now, this is only used by its unit tests. It is similar to the API
in llvm::sys::fs::recursive_directory_iterator, but without some of the
more complex features like requesting that the iterator not recurse into
the next directory, for example.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211732
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Wed, 25 Jun 2014 18:25:57 +0000 (18:25 +0000)]
MS ABI: Propagate class-level DLL attributes to class template specialization bases (PR11170)
Consider the following code:
template <typename T> class Base {};
class __declspec(dllexport) class Derived : public Base<int> {}
When the base of an exported or imported class is a class template
specialization, MSVC will propagate the dll attribute to the base.
In the example code, Base<int> becomes a dllexported class.
This commit makes Clang do the proopagation when the base hasn't been
instantiated yet, and warns about it being unsupported otherwise.
This is different from MSVC, which allows changing a specialization
back and forth between dllimport and dllexport and seems to let the
last one win. Changing the dll attribute after instantiation would be
hard for us, and doesn't seem to come up in practice, so I think this
is a reasonable limitation to have.
MinGW doesn't do this kind of propagation.
Differential Revision: http://reviews.llvm.org/D4264
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211725
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Wed, 25 Jun 2014 17:57:34 +0000 (17:57 +0000)]
PR20038: DebugInfo: Call sites without DebugLocs for temporary dtors after a conditional
With && at the top level of an expression, the last thing done when
emitting the expression was an unconditional jump to the cleanup block.
To reduce the amount of stepping, the DebugLoc is omitted from the
unconditional jump. This is done by clearing the IRBuilder's
"CurrentDebugLocation"*. If this is not set to some non-empty value
before the cleanup block is emitted, the cleanups don't get a location
either. If a call without a location is emitted in a function with debug
info, and that call is then inlined - bad things happen. (without a
location for the call site, the inliner would just leave the inlined
DebugLocs as they were - pointing to roots in the original function, not
inlined into the current function)
Follow up commit to LLVM will ensure that breaking the invariants of the
DebugLoc chains by having chains that don't lead to the current function
will fail assertions, so we shouldn't accidentally slip any of these
cases in anymore. Those assertions may reveal further cases that need to
be fixed in clang, though I've tried to test heavily to avoid that.
* See r128471, r128513 for the code that clears the
CurrentDebugLocation. Simply removing this code or moving the code
into IRBuilder to apply to all unconditional branches would regress
desired behavior, unfortunately.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211722
91177308-0d34-0410-b5e6-
96231b3b80d8
Serge Pavlov [Wed, 25 Jun 2014 17:09:41 +0000 (17:09 +0000)]
Fix treatment of types defined in function prototype
Types defined in function prototype are diagnosed earlier in C++ compilation.
They are put into declaration context where the prototype is introduced. Later on,
when FunctionDecl object is created, these types are moved into the function context.
This patch fixes PR19018 and PR18963.
Differential Revision: http://reviews.llvm.org/D4145
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211718
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Wed, 25 Jun 2014 16:48:40 +0000 (16:48 +0000)]
Headers: be a bit more careful about inline asm
Conditionally include x86intrin.h if we are building for x86 or x86_64.
Conditionalise definition of inline assembly routines which use x86 or x86_64
inline assembly. This is needed as clang can target Windows on ARM where these
definitions may be included into user code.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211716
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Bendersky [Wed, 25 Jun 2014 15:42:16 +0000 (15:42 +0000)]
Rename loop unrolling and loop vectorizer metadata to have a common prefix.
[Clang part]
These patches rename the loop unrolling and loop vectorizer metadata
such that they have a common 'llvm.loop.' prefix. Metadata name
changes:
llvm.vectorizer.* => llvm.loop.vectorizer.*
llvm.loopunroll.* => llvm.loop.unroll.*
This was a suggestion from an earlier review
(http://reviews.llvm.org/D4090) which added the loop unrolling
metadata.
Patch by Mark Heffernan.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211712
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Wed, 25 Jun 2014 12:49:05 +0000 (12:49 +0000)]
Fixing the RST markup for the #pragma loop attribute documentation.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211693
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Wed, 25 Jun 2014 12:48:06 +0000 (12:48 +0000)]
Fixing the position of the supported syntax marker when generating attribute documentation.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211692
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Wed, 25 Jun 2014 12:41:28 +0000 (12:41 +0000)]
Escaping a literal character to fix an RST warning.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211690
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Volkov [Wed, 25 Jun 2014 12:15:36 +0000 (12:15 +0000)]
Align with new GCC options for x86 Android
32-bit: +ssse3
64-bit: +sse4.2 +popcnt
Differential Revision: http://reviews.llvm.org/D4287
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211688
91177308-0d34-0410-b5e6-
96231b3b80d8
James Molloy [Wed, 25 Jun 2014 11:50:56 +0000 (11:50 +0000)]
CHECK-LABEL'ify this test.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211687
91177308-0d34-0410-b5e6-
96231b3b80d8
James Molloy [Wed, 25 Jun 2014 11:46:24 +0000 (11:46 +0000)]
[AArch32] Fix a stupid error in an architectural guard
The < 8 instead of <= 8 meant that a bunch of vreinterprets were not available on v8 AArch32. Simplify the guard to just !defined(aarch64) while we're at it, and enable some v8 AArch32 testing.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211686
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Bataev [Wed, 25 Jun 2014 11:44:49 +0000 (11:44 +0000)]
[OPENMP] Initial support for 'sections' directive.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211685
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Wed, 25 Jun 2014 08:15:07 +0000 (08:15 +0000)]
AST: Initialization with dllimport functions in C
The C++ language requires that the address of a function be the same
across all translation units. To make __declspec(dllimport) useful,
this means that a dllimported function must also obey this rule. MSVC
implements this by dynamically querying the import address table located
in the linked executable. This means that the address of such a
function in C++ is not constant (which violates other rules).
However, the C language has no notion of ODR nor does it permit dynamic
initialization whatsoever. This requires implementations to _not_
dynamically query the import address table and instead utilize a wrapper
function that will be synthesized by the linker which will eventually
query the import address table. The effect this has is, to say the
least, perplexing.
Consider the following C program:
__declspec(dllimport) void f(void);
typedef void (*fp)(void);
static const fp var = &f;
const fp fun() { return &f; }
int main() { return fun() == var; }
MSVC will statically initialize "var" with the address of the wrapper
function and "fun" returns the address of the actual imported function.
This means that "main" will return false!
Note that LLVM's optimizers are strong enough to figure out that "main"
should return true. However, this result is dependent on having
optimizations enabled!
N.B. This change also permits the usage of dllimport declarators inside
of template arguments; they are sufficiently constant for such a
purpose. Add tests to make sure we don't regress here.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211677
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexander Kornienko [Wed, 25 Jun 2014 08:09:35 +0000 (08:09 +0000)]
Added a test to ensure -Wimplicit-fallthrough works with -fblocks correctly.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211676
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Bataev [Wed, 25 Jun 2014 06:52:00 +0000 (06:52 +0000)]
[OPENMP] OMPSimdDirective and OMPForDirective: added initialization for CollapsedNum member.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211672
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Wed, 25 Jun 2014 05:37:25 +0000 (05:37 +0000)]
Don't go through the TypeSourceInfo when getting the SourceRange.
VarDecl provides a method getSourceRange(), which provides a more
robust way of getting the SourceRange since the TypeSourceInfo can
be null in certain cases.
Reviewed by: majnemer
Differential Revision: http://reviews.llvm.org/D4281
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211667
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Wed, 25 Jun 2014 05:00:59 +0000 (05:00 +0000)]
[Driver] Follow-up to r211598, r211663. Do not build a dynamic linker
path using sub-strings concatenation. Return the whole string explicitly.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211665
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Wed, 25 Jun 2014 04:34:20 +0000 (04:34 +0000)]
Tools.cpp: Update getLinuxDynamicLinker() to return Twine instead of StringRef, since r211598 has introduced manipulation of return string.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211663
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Wed, 25 Jun 2014 04:34:10 +0000 (04:34 +0000)]
VirtualFileSystemTest.cpp: Get rid of initializer list on std::vector, to appease msc17.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211662
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Wed, 25 Jun 2014 04:34:00 +0000 (04:34 +0000)]
Reformat.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211661
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Bataev [Wed, 25 Jun 2014 04:09:13 +0000 (04:09 +0000)]
[OPENMP] Improved code and replaced struct by lambda.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211660
91177308-0d34-0410-b5e6-
96231b3b80d8
JF Bastien [Wed, 25 Jun 2014 01:31:33 +0000 (01:31 +0000)]
Implement predefined stdint macros
Add predefined stdint macros that match the given patterns:
U?INT{_,_FAST,_LEAST}{8,16,32,64}_{MAX,TYPE}
U?INT{PTR,MAX}_{MAX,TYPE}
http://reviews.llvm.org/D4141
Author: binji
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211657
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Wed, 25 Jun 2014 00:28:35 +0000 (00:28 +0000)]
Fix parsing nested __if_exists blocks
Rather than having kw___if_exists be a special case of
ParseCompoundStatementBody, we can look for kw___if_exists in the big
switch over for valid statement tokens in ParseStatementOrDeclaration.
Nested __if_exists blocks are used in the DECLARE_REGISTRY_RESOURCEID
macro from atlcom.h.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211654
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Wed, 25 Jun 2014 00:10:50 +0000 (00:10 +0000)]
Add a missing test for the __if_exists extension
MSVC does not create a new scope for the body of an __if_exists compound
statement. Clang already gets this right today, but it was untested.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211650
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Wed, 25 Jun 2014 00:08:10 +0000 (00:08 +0000)]
Split tests for __if_exists out into their own file
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211649
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Tue, 24 Jun 2014 23:57:13 +0000 (23:57 +0000)]
MS ABI: Ignore dll attributes on partial template specializations
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211648
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Tue, 24 Jun 2014 23:57:05 +0000 (23:57 +0000)]
Merge handleDLLImportAttr and handleDLLExportAttr into one function.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211647
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Trieu [Tue, 24 Jun 2014 23:14:24 +0000 (23:14 +0000)]
Provide a better diagnostic when braces are put before the identifier.
When a user types:
int [4] foo;
assume that the user means:
int foo[4];
Update the information for 'foo' to prevent additional errors, and provide
a fix-it hint to move the brackets to the correct location.
Additionally, suggest parens for types that require it, such as:
int [4] *foo;
to:
int (*foo)[4];
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211641
91177308-0d34-0410-b5e6-
96231b3b80d8
Ben Langmuir [Tue, 24 Jun 2014 21:08:13 +0000 (21:08 +0000)]
Fix test issues from r211623 and remove test-only API
1) missing iterator bits needed by libstdc++4.7
Using find_if was convenient, but since operator++ wasn't a good
interface anyway, I just replaced with a range-based for loop and
removed operator++ from the directory_iterator class.
2) stop relying on order of iterating real files
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211633
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Tue, 24 Jun 2014 20:58:46 +0000 (20:58 +0000)]
Forgot to add file in r211631
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211632
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Tue, 24 Jun 2014 20:45:01 +0000 (20:45 +0000)]
Add R600 builtin codegen.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211631
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Tue, 24 Jun 2014 20:32:13 +0000 (20:32 +0000)]
Fix missing C++ mode comment
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211630
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Tue, 24 Jun 2014 20:01:50 +0000 (20:01 +0000)]
Correctly Load Mixed FP-GP Variadic Arguments for x86-64.
According to the x86-64 ABI, structures with both floating point and
integer members are split between floating-point and general purpose
registers, and consecutive 32-bit floats can be packed into a single
floating point register.
In the case of variadic functions these are stored to memory and the position
recorded in the va_list. This was already correctly implemented in
llvm.va_start.
The problem is that the code in clang for implementing va_arg was reading
floating point registers from the wrong location.
Patch by Thomas Jablin.
Fixes PR20018.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211626
91177308-0d34-0410-b5e6-
96231b3b80d8
Ben Langmuir [Tue, 24 Jun 2014 20:00:30 +0000 (20:00 +0000)]
Disable the bits of r211623 that broke the bots
Part of my test seems to rely on iterator bits that I didn't implement,
at least in the gcc bots. Disabling while I investigate.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211625
91177308-0d34-0410-b5e6-
96231b3b80d8
Brad Smith [Tue, 24 Jun 2014 19:51:29 +0000 (19:51 +0000)]
Use appropriate default PIE settings for OpenBSD.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211624
91177308-0d34-0410-b5e6-
96231b3b80d8
Ben Langmuir [Tue, 24 Jun 2014 19:37:16 +0000 (19:37 +0000)]
Add directory_iterator for (non-recursive) iteration of VFS directories
The API is based on sys::fs::directory_iterator, but it allows iterating
over overlays and the yaml-based VFS. For now, it isn't used by
anything (except its tests).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211623
91177308-0d34-0410-b5e6-
96231b3b80d8
Alp Toker [Tue, 24 Jun 2014 19:23:10 +0000 (19:23 +0000)]
Simplify optimization-remark.c test following r211610
With LocTrackingOnly there's no longer a user-facing distinction so the NDEBUG
checks can go away. (Except maybe column info, but -verify only checks line
numbers anyway.)
Also add a RUN line to validate the traditional !LocTrackingOnly case.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211622
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Tue, 24 Jun 2014 19:00:12 +0000 (19:00 +0000)]
[Driver][Mips] Support mips64-linux-gnuabi64 / mips64el-linux-gnuabi64 target triples.
The patch fixes the bug #19869.
http://llvm.org/bugs/show_bug.cgi?id=19869
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211619
91177308-0d34-0410-b5e6-
96231b3b80d8