Eric Christopher [Fri, 27 Jun 2014 00:18:25 +0000 (00:18 +0000)]
Have HexagonSelectionDAGInfo take a DataLayout rather than a
target machine since that's all it needs.
llvm-svn: 211822
Eric Christopher [Fri, 27 Jun 2014 00:13:52 +0000 (00:13 +0000)]
Make HexagonISelLowering not dependent upon a HexagonTargetMachine,
but a normal TargetMachine and remove a few cached uses.
llvm-svn: 211821
Eric Christopher [Fri, 27 Jun 2014 00:13:49 +0000 (00:13 +0000)]
Reduce indentation.
llvm-svn: 211820
Eric Christopher [Fri, 27 Jun 2014 00:13:47 +0000 (00:13 +0000)]
Remove unnecessary caching of the subtarget for HexagonFrameLowering and remove the unused constructor argument.
llvm-svn: 211819
Eric Christopher [Fri, 27 Jun 2014 00:13:43 +0000 (00:13 +0000)]
InstrItineraryData is already on the subtarget, no reason to
cache it on the target as well.
llvm-svn: 211818
Juergen Ributzka [Thu, 26 Jun 2014 23:39:52 +0000 (23:39 +0000)]
[StackMaps] Enable patchpoint liveness analysis per default.
llvm-svn: 211817
Juergen Ributzka [Thu, 26 Jun 2014 23:39:44 +0000 (23:39 +0000)]
[Stackmaps] Remove the liveness calculation for stackmap intrinsics.
There is no need to calculate the liveness information for stackmaps. The
liveness information is still available for the patchpoint intrinsic and
that is also the intended usage model.
Related to <rdar://problem/
17473725>
llvm-svn: 211816
Lang Hames [Thu, 26 Jun 2014 23:05:44 +0000 (23:05 +0000)]
[RuntimeDyld] Teach MachOObjectImage to deregister itself with the debugger upon
destruction the same way ELFObjectImage does.
llvm-svn: 211815
Alp Toker [Thu, 26 Jun 2014 22:52:05 +0000 (22:52 +0000)]
Revert "Introduce a string_ostream string builder facilty"
Temporarily back out commits r211749, r211752 and r211754.
llvm-svn: 211814
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é!
llvm-svn: 211813
Todd Fiala [Thu, 26 Jun 2014 22:35:36 +0000 (22:35 +0000)]
Fix an incomplete null structure spec in Python readline suppression module.
Now that I'm building Linux with clang, I'm seeing more clang warnings.
This fills in some extra fields missing in the final end-of-structure-array
marker.
llvm-svn: 211812
Eric Christopher [Thu, 26 Jun 2014 22:33:55 +0000 (22:33 +0000)]
Move the various Subtarget dependent members down to the subtarget
for the Sparc port. Use the same initializeSubtargetDependencies
function to handle initialization similar to the other ports to
handle dependencies.
llvm-svn: 211811
Eric Christopher [Thu, 26 Jun 2014 22:33:52 +0000 (22:33 +0000)]
Have SparcSelectionDAGInfo take a DataLayout to initialize since
that's all it needs.
llvm-svn: 211810
Eric Christopher [Thu, 26 Jun 2014 22:33:50 +0000 (22:33 +0000)]
Remove the storage and use of the subtarget out of the sparc frame
lowering code.
llvm-svn: 211809
Sanjay Patel [Thu, 26 Jun 2014 22:18:51 +0000 (22:18 +0000)]
fixed typo
llvm-svn: 211808
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
llvm-svn: 211807
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
llvm-svn: 211806
Justin Bogner [Thu, 26 Jun 2014 20:59:36 +0000 (20:59 +0000)]
Driver: Remove trailing whitespace
llvm-svn: 211805
Tom Roeder [Thu, 26 Jun 2014 20:43:27 +0000 (20:43 +0000)]
Fix the new LTOCodeGenerator setup in gold to parse options before using MAttrs.
This fixes a regression that made clang -flto -Wl,--plugin-opt=-mattr=+aes not
pass the "+aes" option to the LTOCodeGenerator attributes.
llvm-svn: 211804
Johannes Doerfert [Thu, 26 Jun 2014 20:24:17 +0000 (20:24 +0000)]
[Refactor] Make the used dependence types explicit
llvm-svn: 211803
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
llvm-svn: 211802
Arnold Schwaighofer [Thu, 26 Jun 2014 19:51:19 +0000 (19:51 +0000)]
GVN: Preserve invariant.load metadata
If both instructions to be replaced are marked invariant the resulting
instruction is invariant.
rdar://
13358910
Fix by Erik Eckstein!
llvm-svn: 211801
Eric Christopher [Thu, 26 Jun 2014 19:30:05 +0000 (19:30 +0000)]
Remove extraneous includes from the target machines.
llvm-svn: 211800
Eric Christopher [Thu, 26 Jun 2014 19:30:02 +0000 (19:30 +0000)]
Move all of the ARM subtarget features down onto the subtarget
rather than the target machine.
llvm-svn: 211799
Eric Christopher [Thu, 26 Jun 2014 19:29:59 +0000 (19:29 +0000)]
Move the frame lowering constructors out of line to avoid circular
includes.
llvm-svn: 211798
Johannes Doerfert [Thu, 26 Jun 2014 19:29:11 +0000 (19:29 +0000)]
[Fix] Broken tests after r211796.
llvm-svn: 211797
Johannes Doerfert [Thu, 26 Jun 2014 18:47:03 +0000 (18:47 +0000)]
[Refactor] Change memory access dump to preserve space
llvm-svn: 211796
Johannes Doerfert [Thu, 26 Jun 2014 18:44:14 +0000 (18:44 +0000)]
Use wrapped reduction dependences
This change will ease the transision to multiple reductions per statement as
we can now distinguish the effects of multiple reductions in the same
statement.
+ Wrapped reduction dependences are used to compute privatization dependences
+ Modified test cases to account for the change
llvm-svn: 211795
Johannes Doerfert [Thu, 26 Jun 2014 18:38:08 +0000 (18:38 +0000)]
Hybrid dependency analysis
This dependency analysis will keep track of memory accesses if they might be
part of a reduction. If not, the dependences are tracked on a statement level.
The main reason to do this is to reduce the compile time while beeing able to
distinguish the effects of reduction and non-reduction accesses.
+ Adjusted two test cases
llvm-svn: 211794
Sanjay Patel [Thu, 26 Jun 2014 18:12:42 +0000 (18:12 +0000)]
Changed Phab 'CC' to 'subscriber'; fixed typo
llvm-svn: 211793
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
llvm-svn: 211792
Matt Arsenault [Thu, 26 Jun 2014 17:22:30 +0000 (17:22 +0000)]
R600/SI: Add FP mode bits to binary.
The default rounding mode to initialize the mode register needs
to be reported to the runtime. Fill in other bits a kernel
may be interested in setting for future use.
llvm-svn: 211791
Logan Chien [Thu, 26 Jun 2014 16:58:38 +0000 (16:58 +0000)]
Silence unused variable and parameter warnings.
llvm-svn: 211790
Alexander Kornienko [Thu, 26 Jun 2014 16:32:26 +0000 (16:32 +0000)]
Make the clang-tidy-diff.py test conditional on the presence of Python 2.7. Use the python binary from the configuration.
llvm-svn: 211789
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
llvm-svn: 211788
Jeroen Ketema [Thu, 26 Jun 2014 15:26:38 +0000 (15:26 +0000)]
OpenCL 1.1 does not define CL_VERSION_1_2 so use hardcoded number instead
Otherwise the test evaluates to true on OpenCL 1.1 and earlier. Since we
therefore cannot use the CL_VERSION_?_? macros move them to the proper
position in the top-level header.
llvm-svn: 211787
Logan Chien [Thu, 26 Jun 2014 14:38:46 +0000 (14:38 +0000)]
Propset the executables for GetProgramPath().
llvm-svn: 211786
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.
llvm-svn: 211785
Logan Chien [Thu, 26 Jun 2014 13:56:23 +0000 (13:56 +0000)]
Fix linux build.
* Replace strlcpy with snprintf since strlcpy is not available
in glibc.
* Replace __LINUX__ with __linux__.
llvm-svn: 211784
Aaron Ballman [Thu, 26 Jun 2014 13:45:47 +0000 (13:45 +0000)]
Silencing a warning about isZExtFree hiding an inherited virtual function. No functional change intended.
llvm-svn: 211783
Andrea Di Biagio [Thu, 26 Jun 2014 13:41:10 +0000 (13:41 +0000)]
Silence a warning due to a comparison between signed and unsigned.
No functional change intended.
llvm-svn: 211782
Will Schmidt [Thu, 26 Jun 2014 13:37:03 +0000 (13:37 +0000)]
Add support for ppc64/power8 as a host
llvm-svn: 211781
Andreas Simbuerger [Thu, 26 Jun 2014 13:36:52 +0000 (13:36 +0000)]
Use own class for storing the RejectLogs
Use a container class to store the reject logs. Delegating most calls to
the internal std::map and add a few convenient shortcuts (e.g.,
hasErrors()).
llvm-svn: 211780
Will Schmidt [Thu, 26 Jun 2014 13:36:19 +0000 (13:36 +0000)]
add ppc64/pwr8 as target
includes handling DIR_PWR8 where appropriate
The P7Model Itinerary is currently tied in for use under the P8Model, and will be updated later.
llvm-svn: 211779
Will Schmidt [Thu, 26 Jun 2014 13:34:10 +0000 (13:34 +0000)]
Add ppc64/power8 as a target
llvm-svn: 211778
Andreas Simbuerger [Thu, 26 Jun 2014 13:33:35 +0000 (13:33 +0000)]
Add diagnostic remark for ReportVariantBasePtr
llvm-svn: 211777
Renato Golin [Thu, 26 Jun 2014 13:10:53 +0000 (13:10 +0000)]
Added parsing co-processor names starting with "cr"
Additional compliant GAS names for coprocessor register name
are enabled for all instruction with parameter MCK_CoprocReg:
LDC,LDC2,STC,STC2,CDP,CDP2,MCR,MCR2,MCRR,MCRR2,MRC,MRC2,MRRC,MRRC2
Patch by Andrey Kuharev.
llvm-svn: 211776
Logan Chien [Thu, 26 Jun 2014 12:22:38 +0000 (12:22 +0000)]
Add missing header for _LIBUNWIND_LOG().
llvm-svn: 211775
Alexey Bataev [Thu, 26 Jun 2014 12:05:45 +0000 (12:05 +0000)]
[OPENMP] Initial parsing and sema analysis for 'single' directive.
llvm-svn: 211774
Andreas Simbuerger [Thu, 26 Jun 2014 11:09:13 +0000 (11:09 +0000)]
Fix dangling reference
llvm-svn: 211773
Simon Atanasyan [Thu, 26 Jun 2014 10:48:52 +0000 (10:48 +0000)]
[Driver] Improve the `isPathUnderSysroot()` function. Now it returns a
correct result even if checking paths: a) symlinks and/or b) contains relative
parts like /dir1/dir2/../dir2.
llvm-svn: 211772
Andrea Di Biagio [Thu, 26 Jun 2014 10:45:21 +0000 (10:45 +0000)]
[X86] Improve the selection of SSE3/AVX addsub instructions.
This patch teaches the backend how to canonicalize a shuffle vectors
according to the rule:
- (shuffle (FADD A, B), (FSUB A, B), Mask) ->
(shuffle (FSUB A, -B), (FADD A, -B), Mask)
Where 'Mask' is:
<0,5,2,7> ;; for v4f32 and v4f64 shuffles.
<0,3> ;; for v2f64 shuffles.
<0,9,2,11,4,13,6,15> ;; for v8f32 shuffles.
In general, ISel only knows how to pattern-match a canonical
'fadd + fsub + blendi' dag node sequence into an ADDSUB instruction.
This new rule allows to convert a non-canonical dag sequence into a
canonical one that will be matched by a single ADDSUB at ISel stage.
The idea of converting a non-canonical ADDSUB into a canonical one by
swapping the first two operands of the shuffle, and then negating the
second operand of the FADD and FSUB, was originally proposed by Hal Finkel.
llvm-svn: 211771
Andreas Simbuerger [Thu, 26 Jun 2014 10:19:57 +0000 (10:19 +0000)]
Support for LLVM-style RTTI isa<...>, dyn_cast<...> et al.
llvm-svn: 211770
Andreas Simbuerger [Thu, 26 Jun 2014 10:06:40 +0000 (10:06 +0000)]
Support the new DiagnosticRemarks
Add support for generating optimization remarks after completing the
detection of Scops.
The goal is to provide end-users with useful hints about opportunities that
help to increase the size of the detected Scops in their code.
By default the remark is unspecified and the debug location is empty. Future
patches have to expand on the messages generated.
This patch brings a simple test case for ReportFuncCall to demonstrate the
feature.
Reports all missed opportunities to increase the size/number of valid
Scops:
clang <...> -Rpass-missed="polly-detect" <...>
opt <...> -pass-remarks-missed="polly-detect" <...>
Reports beginning and end of all valid Scops:
clang <...> -Rpass="polly-detect" <...>
opt <...> -pass-remarks="polly-detect" <...>
Differential Revision: http://reviews.llvm.org/D4171
llvm-svn: 211769
Dinesh Dwivedi [Thu, 26 Jun 2014 08:57:33 +0000 (08:57 +0000)]
This patch removed duplicate code for matching patterns
which are now handled in SimplifyUsingDistributiveLaws()
(after r211261)
Differential Revision: http://reviews.llvm.org/D4253
llvm-svn: 211768
Alexey Bataev [Thu, 26 Jun 2014 08:21:58 +0000 (08:21 +0000)]
[OPENMP] Initial parsing and sema analysis for 'section' directive.
llvm-svn: 211767
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.
llvm-svn: 211766
Dinesh Dwivedi [Thu, 26 Jun 2014 05:40:22 +0000 (05:40 +0000)]
Added instruction combine to transform few more negative values addition to subtraction (Part 2)
This patch enables transforms for
(x + (~(y | c) + 1) --> x - (y | c) if c is even
Differential Revision: http://reviews.llvm.org/D4209
llvm-svn: 211765
Craig Topper [Thu, 26 Jun 2014 04:58:53 +0000 (04:58 +0000)]
Convert some function arguments to use ArrayRef.
llvm-svn: 211764
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.
llvm-svn: 211763
David Majnemer [Thu, 26 Jun 2014 03:02:19 +0000 (03:02 +0000)]
GlobalOpt: Don't optimize thread_local for initializers
Folding a reference to a thread_local variable into another global
variable's initializer is very problematic, there is no relocation that
exists to represent such an access.
llvm-svn: 211762
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.
llvm-svn: 211761
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.
llvm-svn: 211760
Alp Toker [Thu, 26 Jun 2014 01:42:30 +0000 (01:42 +0000)]
Reformat RAVs to sync up following recent updates
llvm-svn: 211759
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.
llvm-svn: 211758
Matt Arsenault [Thu, 26 Jun 2014 01:28:05 +0000 (01:28 +0000)]
R600: Fix vector FMA
llvm-svn: 211757
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
llvm-svn: 211756
Marshall Clow [Thu, 26 Jun 2014 01:07:56 +0000 (01:07 +0000)]
Patch from Albert J. Wong to make type_traits take advantage of gcc intrinsics in 4.7 and later. No functionality change when using clang.
llvm-svn: 211755
Reid Kleckner [Thu, 26 Jun 2014 01:03:20 +0000 (01:03 +0000)]
Remove forward decl of SmallVectorImpl now that we have the header
Follow up to r211749.
llvm-svn: 211754
Hans Wennborg [Thu, 26 Jun 2014 00:30:52 +0000 (00:30 +0000)]
Don't build switch tables for dllimport and TLS variables in GEPs
This is a follow-up to r211331, which failed to notice that we were
returning early from ValidLookupTableConstant for GEPs.
llvm-svn: 211753
Alp Toker [Thu, 26 Jun 2014 00:25:41 +0000 (00:25 +0000)]
MSVC build fix following r211749
Avoid strndup()
llvm-svn: 211752
Nick Kledzik [Thu, 26 Jun 2014 00:25:33 +0000 (00:25 +0000)]
Fix building for iOS
llvm-svn: 211751
Adam Nemet [Thu, 26 Jun 2014 00:21:12 +0000 (00:21 +0000)]
[X86] AVX512: Fix asm syntax for packed vcmp
The *_alt defs for vcmp are used by the InstParser (the asm string in the main
def is used by the InstPrinter) . The former was accepting vector registers
as destination rather than mask registers.
llvm-svn: 211750
Alp Toker [Thu, 26 Jun 2014 00:00:48 +0000 (00:00 +0000)]
Introduce a string_ostream string builder facilty
string_ostream is a safe and efficient string builder that combines opaque
stack storage with a built-in ostream interface.
small_string_ostream<bytes> additionally permits an explicit stack storage size
other than the default 128 bytes to be provided. Beyond that, storage is
transferred to the heap.
This convenient class can be used in most places an
std::string+raw_string_ostream pair or SmallString<>+raw_svector_ostream pair
would previously have been used, in order to guarantee consistent access
without byte truncation.
The patch also converts much of LLVM to use the new facility. These changes
include several probable bug fixes for truncated output, a programming error
that's no longer possible with the new interface.
llvm-svn: 211749
Nico Weber [Wed, 25 Jun 2014 23:55:37 +0000 (23:55 +0000)]
Minor libc++abi changes to make things build better with gcc.
llvm-svn: 211748
Argyrios Kyrtzidis [Wed, 25 Jun 2014 23:54:50 +0000 (23:54 +0000)]
For CrashRecoveryContext::RunSafelyOnThread, propagate Darwin's PRIO_DARWIN_BG to the new thread if it is
set on the calling thread.
This allows libclang's indexing threads to propagate their priority to the clang module building threads.
rdar://
17459872
llvm-svn: 211747
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.
llvm-svn: 211746
Nico Weber [Wed, 25 Jun 2014 23:52:07 +0000 (23:52 +0000)]
Update libc++abi to use the ARM EHABI unwinder from its libunwind.
llvm-svn: 211745
Michael Liao [Wed, 25 Jun 2014 23:39:08 +0000 (23:39 +0000)]
Fix typo
llvm-svn: 211744
Nico Weber [Wed, 25 Jun 2014 23:39:00 +0000 (23:39 +0000)]
Land support for ARM EHABI unwinding for libunwind.
This was written by:
Albert Wong <ajwong@chromium.org>
Antoine Labour <piman@chromium.org>
Dana Jansen <danakj@chromium.org
Jonathan Roelofs <jonathan@codesourcery.com>
Nico Weber <thakis@chromium.org>
llvm-svn: 211743
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.
llvm-svn: 211742
NAKAMURA Takumi [Wed, 25 Jun 2014 23:13:34 +0000 (23:13 +0000)]
Suppress clang-tidy-diff.py. It is incompatible to py26 due to argparse.
llvm-svn: 211741
Juergen Ributzka [Wed, 25 Jun 2014 22:50:59 +0000 (22:50 +0000)]
[FastISel][X86] More refactoring of select lowering and XALU folding. NFC.
llvm-svn: 211740
Nico Weber [Wed, 25 Jun 2014 22:49:13 +0000 (22:49 +0000)]
Start landing support for ARM EHABI unwinding.
The new code will be behind a LIBCXXABI_ARM_EHABI define (so that platforms
that don't want it can continue using e.g. SJLJ). This commit mostly just
adds the LIBCXXABI_ARM_EHABI define.
llvm-svn: 211739
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.
llvm-svn: 211738
Eric Christopher [Wed, 25 Jun 2014 22:36:37 +0000 (22:36 +0000)]
The includes were sorted. Revert r210578.
llvm-svn: 211737
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
llvm-svn: 211736
Juergen Ributzka [Wed, 25 Jun 2014 22:17:23 +0000 (22:17 +0000)]
[FastISel][X86] Refactor XALU folding. NFC.
llvm-svn: 211735
Sanjay Patel [Wed, 25 Jun 2014 22:15:12 +0000 (22:15 +0000)]
fixed typos in comment
llvm-svn: 211734
Aaron Watry [Wed, 25 Jun 2014 21:08:38 +0000 (21:08 +0000)]
relational: Fix signbit
The vector components were mistakenly using () instead of {}, which caused
all but the last vector component to be dropped on the floor.
Signed-off-by: Aaron Watry <awatry@gmail.com>
Reviewed-by: Jeroen Ketema <j.ketema@imperial.ac.uk>
llvm-svn: 211733
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.
llvm-svn: 211732
Reid Kleckner [Wed, 25 Jun 2014 20:25:21 +0000 (20:25 +0000)]
Mention that Phabricator users should subscribe to *-commits
This probably explains why a lot of messages get lost for first time
Phabricator users.
llvm-svn: 211731
Juergen Ributzka [Wed, 25 Jun 2014 20:06:12 +0000 (20:06 +0000)]
[FastISel][X86] Only fold the cmp into the select when both instructions are in the same basic block.
If the cmp is in a different basic block, then it is possible that not all
operands of that compare have defined registers. This can happen when one of
the operands to the cmp is a load and the load gets folded into the cmp. In
this case FastISel will skip the load instruction and the vreg is never
defined.
llvm-svn: 211730
Zachary Turner [Wed, 25 Jun 2014 18:40:58 +0000 (18:40 +0000)]
Fix silly compilation error.
llvm-svn: 211728
Rafael Espindola [Wed, 25 Jun 2014 18:37:33 +0000 (18:37 +0000)]
Merge the used symbol scanning of MCObjectStreamer and RecordStreamer.
This completes the refactoring of RecordStreamer.
llvm-svn: 211727
Zachary Turner [Wed, 25 Jun 2014 18:37:19 +0000 (18:37 +0000)]
Fix a bug in the IRMemoryMap which generated bogus allocations.
Previously, only the starting locations of the candidate interval
and the existing interval were compared. To correctly detect
range intersections, it is necessary to compare the entire range
of both intervals against each other.
Reviewed by: scallanan
Differential Revision: http://reviews.llvm.org/D4286
llvm-svn: 211726
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
llvm-svn: 211725
David Blaikie [Wed, 25 Jun 2014 18:20:54 +0000 (18:20 +0000)]
Revert "PR20038: DebugInfo: Inlined call sites where the caller has debug info but the call itself has no debug location."
This reverts commit r211723.
Breaks the ASan/compiler-rt build... guess I didn't test very far at all
:/.
llvm-svn: 211724
David Blaikie [Wed, 25 Jun 2014 18:03:10 +0000 (18:03 +0000)]
PR20038: DebugInfo: Inlined call sites where the caller has debug info but the call itself has no debug location.
This situation does bad things when inlined, so I've fixed Clang not to
produce inlinable call sites without locations when the caller has debug
info (in the one case where I could find that this occurred). This
updates the PR20038 test case to be what clang now produces, and readds
the assertion that had to be removed due to this bug.
I've also beefed up the debug info verifier to help diagnose these
issues in the future, and I hope to add checks to the inliner to just
assert-fail if it encounters this situation. If, in the future, we
decide we have to cope with this situation, the right thing to do is
probably to just remove all the DebugLocs from the inlined instructions.
llvm-svn: 211723
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.
llvm-svn: 211722