Artem Belevich
f3d3db65de
Remove .CUDAIsDevice flags from CodeGenOpts as it's already
...
available in LangOpts.
Differential Revision: http://reviews.llvm.org/D8385
llvm-svn: 232749
2015-03-19 18:58:18 +00:00
Reid Kleckner
461c0c6934
Fix -ast-dump of dependent new and delete exprs
...
llvm-svn: 232748
2015-03-19 18:47:47 +00:00
Artem Belevich
5196fe7c19
Ignore device-side asm constraint errors while compiling CUDA code for host and vice versa.
...
Differential Revision: http://reviews.llvm.org/D8392
llvm-svn: 232747
2015-03-19 18:40:25 +00:00
Peter Collingbourne
152b936683
gold: Make powerpc support optional for the tests.
...
Differential Revision: http://reviews.llvm.org/D8400
llvm-svn: 232744
2015-03-19 18:23:31 +00:00
Peter Collingbourne
0dbc7088da
GlobalDCE: Improve performance for large modules containing comdats.
...
When we encounter a global with a comdat, rather than iterating over
every global in the module to find globals in the same comdat, store the
members in a multimap. This effectively lowers the complexity to O(N log N),
improving performance significantly for large modules such as might be
encountered during LTO.
It looks like we used to do something like this until r219191.
No functional change.
Differential Revision: http://reviews.llvm.org/D8431
llvm-svn: 232743
2015-03-19 18:23:29 +00:00
Justin Bogner
7bf61d3139
docs: Update llvm-cov docs for the -use-color flag
...
llvm-svn: 232742
2015-03-19 18:22:46 +00:00
Artem Belevich
52210aee10
Added missing case for IK_PreprocessedCuda.
...
llvm-svn: 232741
2015-03-19 18:12:26 +00:00
Reid Kleckner
5c682bc4b8
Add -ast-dump support for new and delete expressions to help figure out which operator got selected
...
llvm-svn: 232740
2015-03-19 18:09:25 +00:00
Reid Kleckner
e4f77deaeb
Fix incremental linking with ninja and CMake 3.2+, see LLVM r232662 for details
...
llvm-svn: 232739
2015-03-19 17:45:12 +00:00
Ilia K
bb7002d751
Remove IDE_MI_APP_EXIT_OK msg on exit (MI)
...
Summary: Remove IDE_MI_APP_EXIT_OK msg on exit (MI)
Reviewers: abidh
Reviewed By: abidh
Subscribers: lldb-commits, abidh
Differential Revision: http://reviews.llvm.org/D8446
llvm-svn: 232738
2015-03-19 17:40:15 +00:00
Artem Belevich
83a6dcc470
Ensure that we still parse preprocessed CUDA files as CUDA when we use
...
-save-temps option.
Summary: Fixes PR22926.
Review: http://reviews.llvm.org/D8383
llvm-svn: 232737
2015-03-19 17:32:06 +00:00
Ilia K
7690fc5428
expose 64 bit addresses through MI
...
Summary:
This changes all reporting of addresses from lldb-mi to be 64 bit capable. There could have been cases where a 64 bit address was getting truncated to 32 bit format.
Patch from chuckr@microsoft.com
Reviewers: abidh, ChuckR
Reviewed By: abidh
Subscribers: paulmaybee, ki.stfu, zturner, lldb-commits
Differential Revision: http://reviews.llvm.org/D8238
llvm-svn: 232736
2015-03-19 17:27:23 +00:00
Ilia K
4c5a0b40de
Fix memory allocating inside signal handler (MI)
...
Summary:
This patch fixes a memory allocating inside signal handler.
This bug was found by @vharron:
> Hi all,
>
> I noticed these thread sanitizer warnings while running lldb-mi tests on
> Linux.
>
> WARNING: ThreadSanitizer: signal-unsafe call inside of a signal (pid=39721)
>
> #0 operator new(unsigned long) <null>:0 (lldb-mi-3.7.0+0x000000092b9d)
>
> #1 std::string::_Rep::_S_create(unsigned long, unsigned long,
> std::allocator<char> const&) <null>:0 (libstdc++.so.6+0x0000000ba3b8)
>
> #2 CMICmnResources::GetStringFromResource(unsigned int, CMIUtilString&)
> const
> /usr/local/google/home/vharron/ll/tot/llvm/tools/lldb/tools/lldb-mi/MICmnResources.cpp:434
> (lldb-mi-3.7.0+0x00000014ddd8)
>
> #3 CMICmnResources::GetString(unsigned int) const
> /usr/local/google/home/vharron/ll/tot/llvm/tools/lldb/tools/lldb-mi/MICmnResources.cpp:371
> (lldb-mi-3.7.0+0x00000014db81)
>
> #4 sigwinch_handler(int)
> /usr/local/google/home/vharron/ll/tot/llvm/tools/lldb/tools/lldb-mi/MIDriverMain.cpp:99
> (lldb-mi-3.7.0+0x0000001589ff)
>
> #5 __tsan::CallUserSignalHandler(__tsan::ThreadState*, bool, bool, int,
> my_siginfo_t*, void*) tsan_interceptors.o:0 (lldb-mi-3.7.0+0x00000009f25f)
>
> #6 void std::this_thread::sleep_for<long, std::ratio<1l, 1000l>
> >(std::chrono::duration<long, std::ratio<1l, 1000l> > const&)
> /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/thread:279
> (lldb-mi-3.7.0+0x00000013243e)
>
> #7 CMIDriver::ReadStdinLineQueue()
> /usr/local/google/home/vharron/ll/tot/llvm/tools/lldb/tools/lldb-mi/MIDriver.cpp:710
> (lldb-mi-3.7.0+0x000000155e62)
>
> #8 CMIDriver::DoMainLoop()
> /usr/local/google/home/vharron/ll/tot/llvm/tools/lldb/tools/lldb-mi/MIDriver.cpp:631
> (lldb-mi-3.7.0+0x000000155d37)
>
> #9 non-virtual thunk to CMIDriver::DoMainLoop()
> /usr/local/google/home/vharron/ll/tot/llvm/tools/lldb/tools/lldb-mi/MIDriver.cpp:648
> (lldb-mi-3.7.0+0x000000155fbd)
>
> #10 CMIDriverMgr::DriverMainLoop()
> /usr/local/google/home/vharron/ll/tot/llvm/tools/lldb/tools/lldb-mi/MIDriverMgr.cpp:340
> (lldb-mi-3.7.0+0x000000159ee6)
>
> #11 main
> /usr/local/google/home/vharron/ll/tot/llvm/tools/lldb/tools/lldb-mi/MIDriverMain.cpp:364
> (lldb-mi-3.7.0+0x000000158f60)
Reviewers: vharron, abidh
Reviewed By: abidh
Subscribers: lldb-commits, abidh, vharron
Differential Revision: http://reviews.llvm.org/D8256
llvm-svn: 232735
2015-03-19 17:17:26 +00:00
Ilia K
641f027d82
Fix -break-insert for system functions (MI)
...
Summary:
# Fix -break-insert for system functions
# Fix MiExecTestCase to use -break-insert instead of CLI "b"
# Improve MiBreakTestCase: now it uses printf() instead of in-house function
All tests pass on OS X.
Test Plan:
```
$ bin/lldb-mi --interpreter
(gdb)
-file-exec-and-symbols ~/p/hello
^done
(gdb)
=shlibs-added,shlib-info=[num="1",name="hello",dyld-addr="-",reason="dyld",path="/Users/IliaK/p/hello",loaded_addr="-",dsym-objpath="/Users/IliaK/p/hello.dSYM/Contents/Resources/DWARF/hello"]
-break-insert -f printf
^done,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0xffffffff",func="??",file="??",fullname="??/??",line="0",pending=["printf"],times="0",original-location="printf"}
(gdb)
=breakpoint-modified,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0xffffffff",func="??",file="??",fullname="??/??",line="0",pending=["printf"],times="0",original-location="printf"}
-exec-run
^running
...
*stopped,reason="breakpoint-hit",disp="del",bkptno="1",frame={addr="0x7fff8a476910",func="printf",args=[],file="??",fullname="??",line="-1"},thread-id="1",stopped-threads="all"
(gdb)
```
Reviewers: abidh, clayborg
Reviewed By: clayborg
Subscribers: lldb-commits, clayborg, abidh
Differential Revision: http://reviews.llvm.org/D8412
llvm-svn: 232734
2015-03-19 17:13:20 +00:00
Marshall Clow
8fa8e5fc74
Add code to honor the match_not_bol and match_not_eol regex flats. Fixes PR#22651. Thanks to Jim Porter for the report and suggested fix.
...
llvm-svn: 232733
2015-03-19 17:05:59 +00:00
Artem Belevich
9e8a039318
Add support for __nvvm_reflect changes in libdevice in CUDA-7.0
...
Summary:
CUDA 7.0's libdevice uses slightly different IR to call __nvvm_reflect
and that triggers an assertion in nvvm_reflect optimization pass. This
change allows nvvm_reflect pass to deal with both old and new ways to
pass an argument to __nvvm_reflect.
Test Plan: ninja check-all
Reviewers: eliben, echristo
Subscribers: jholewinski, llvm-commits
Differential Revision: http://reviews.llvm.org/D8399
llvm-svn: 232732
2015-03-19 17:05:35 +00:00
Reid Kleckner
7270ef5705
Revert "Improvement on sized deallocation from r230160"
...
This reverts commit r230580.
extern_weak functions don't appear to work on Darwin (PR22951), so we'll
need to come up with a new approach.
llvm-svn: 232731
2015-03-19 17:03:58 +00:00
Chris Bieneman
ca4f699cc2
Fixing dependencies for native tablegen.
...
The dependencies for cross-built tablegen were a bit confused. This fixes that. The following dependencies are now enforced:
(1) Tablegen tasks depend on the native tablegen
(2) Native tablegen depends on the cross-compiled tablegen
Although the native tablegen doesn't actually require the cross tablegen, having this dependency forces the native tablegen to rebuild whenever the cross tablegen changes.
llvm-svn: 232730
2015-03-19 16:49:44 +00:00
Hans Wennborg
783254386e
Switch lowering: remove unnecessary ConstantInt casts. NFC.
...
llvm-svn: 232729
2015-03-19 16:42:21 +00:00
Krzysztof Parzyszek
421133470f
[Hexagon] Add support for vector instructions
...
llvm-svn: 232728
2015-03-19 16:33:08 +00:00
Greg Bedwell
8aa3000d24
[CMake] Don't pass in MSVC warning flags as definitions.
...
NFC currently but required as a prerequisite for using
the Microsoft resource compiler in conjunction with
CMake's ninja generator, which knows how to filter flags
appropriately, but not definitions.
Differential Revision: http://reviews.llvm.org/D8188
llvm-svn: 232727
2015-03-19 16:32:47 +00:00
Benjamin Kramer
845e32cd4d
Devirtualize Attr and all subclasses.
...
We know all subclasses in tblgen so just generate a giant switch for
the few virtual methods or turn them into a member variable using spare
bits. The giant jump tables aren't pretty but still much smaller than
a vtable for every attribute, shrinking Release+Asserts clang by ~400k.
Also halves the size of the Attr base class. No functional change
intended.
llvm-svn: 232726
2015-03-19 16:06:49 +00:00
Krzysztof Parzyszek
c6f19333cf
[Hexagon] ENDLOOP is a non-reversible conditional branch
...
llvm-svn: 232725
2015-03-19 15:18:57 +00:00
Tamas Berghammer
00bdca6839
Don't close pseudo terminal master file descriptor on EOF
...
Some application on Linux an all application on android close stdout and
stderr during the libc exit stage. Previously the master file descriptor
of the pseudo terminal used to communicate with the inferior was closed
on an EOF causing a race condition and a possible SIGHUP on process
exit. After this change the master file descriptor will be closed by the
destructor of the GDBRemoteCommunicationServerLLGS class.
Differential revision: http://reviews.llvm.org/D8436
llvm-svn: 232724
2015-03-19 14:58:36 +00:00
Benjamin Kramer
539803c9e1
Move ThreadSafetyReporter into an anonymous namespace. NFC.
...
llvm-svn: 232723
2015-03-19 14:23:45 +00:00
Benjamin Kramer
717e973a51
Internalize PEI. NFC.
...
llvm-svn: 232722
2015-03-19 14:09:20 +00:00
Manuel Klimek
c68aa16d46
Add option to switch off putting header modules into the dependency file.
...
llvm-svn: 232721
2015-03-19 12:00:22 +00:00
Daniel Sanders
b1fbacab5f
[sparc] Small fix to r232719 to make 2007-12-17-InvokeAsm.ll pass on the buildbot.
...
llvm-svn: 232720
2015-03-19 11:27:23 +00:00
Daniel Sanders
f5d1110075
[sparc] Only support the 'm' inline assembly memory constraint. NFC.
...
Summary:
SPARC doesn't seem to support any additional constraints. Therefore remove
the target hook.
No functional change intended.
Reviewers: venkatra
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D8214
llvm-svn: 232719
2015-03-19 11:26:05 +00:00
Daniel Jasper
5add63f21e
[InstCombine] Don't fold a GEP into itself through a PHI node
...
This can only occur (I think) through the back-edge of the loop.
However, folding a GEP into itself means that the value of the previous
iteration needs to be stored in the meantime, thus requiring an
additional register variable to be live, but not actually achieving
anything (the gep still needs to be executed once per loop iteration).
The attached test case is derived from:
typedef unsigned uint32;
typedef unsigned char uint8;
inline uint8 *f(uint32 value, uint8 *target) {
while (value >= 0x80) {
value >>= 7;
++target;
}
++target;
return target;
}
uint8 *g(uint32 b, uint8 *target) {
target = f(b, f(42, target));
return target;
}
What happens is that the GEP stored in incptr2 is folded into itself
through the loop's back-edge and the phi-node stored in loopptr,
effectively incrementing the ptr by "2" in each iteration instead of "1".
In this case, it is actually increasing the number of GEPs required as
the GEP before the loop can't be folded away anymore. For comparison:
With this patch:
define i8* @test4(i32 %value, i8* %buffer) {
entry:
%cmp = icmp ugt i32 %value, 127
br i1 %cmp, label %loop.header, label %exit
loop.header: ; preds = %entry
br label %loop.body
loop.body: ; preds = %loop.body, %loop.header
%buffer.pn = phi i8* [ %buffer, %loop.header ], [ %loopptr, %loop.body ]
%newval = phi i32 [ %value, %loop.header ], [ %shr, %loop.body ]
%loopptr = getelementptr inbounds i8, i8* %buffer.pn, i64 1
%shr = lshr i32 %newval, 7
%cmp2 = icmp ugt i32 %newval, 16383
br i1 %cmp2, label %loop.body, label %loop.exit
loop.exit: ; preds = %loop.body
br label %exit
exit: ; preds = %loop.exit, %entry
%0 = phi i8* [ %loopptr, %loop.exit ], [ %buffer, %entry ]
%incptr3 = getelementptr inbounds i8, i8* %0, i64 2
ret i8* %incptr3
}
Without this patch:
define i8* @test4(i32 %value, i8* %buffer) {
entry:
%incptr = getelementptr inbounds i8, i8* %buffer, i64 1
%cmp = icmp ugt i32 %value, 127
br i1 %cmp, label %loop.header, label %exit
loop.header: ; preds = %entry
br label %loop.body
loop.body: ; preds = %loop.body, %loop.header
%0 = phi i8* [ %buffer, %loop.header ], [ %loopptr, %loop.body ]
%loopptr = phi i8* [ %incptr, %loop.header ], [ %incptr2, %loop.body ]
%newval = phi i32 [ %value, %loop.header ], [ %shr, %loop.body ]
%shr = lshr i32 %newval, 7
%incptr2 = getelementptr inbounds i8, i8* %0, i64 2
%cmp2 = icmp ugt i32 %newval, 16383
br i1 %cmp2, label %loop.body, label %loop.exit
loop.exit: ; preds = %loop.body
br label %exit
exit: ; preds = %loop.exit, %entry
%ptr2 = phi i8* [ %incptr2, %loop.exit ], [ %incptr, %entry ]
%incptr3 = getelementptr inbounds i8, i8* %ptr2, i64 1
ret i8* %incptr3
}
Review: http://reviews.llvm.org/D8245
llvm-svn: 232718
2015-03-19 11:05:08 +00:00
Daniel Jasper
414c9c6fb0
clang-format: Fix another bug in wrapping around "*".
...
Before:
void aaaaa(
aaaaaaaaaaaa* aaaaaaaaaaaaaa) {} // even violation the column limit
After:
void aaaaa(aaaaaaaaaaaa*
aaaaaaaaaaaaaa) {}
llvm-svn: 232717
2015-03-19 09:40:16 +00:00
Ed Schouten
d0c480b04c
Don't print debugging messages to stdout.
...
There is some debugging code in cxa_demangle.cpp that prints messages on
stdout. In general this is not safe, as the program itself may use
stdout to write its output. Change this code to write to stderr.
Differential Revision: http://reviews.llvm.org/D8167
llvm-svn: 232716
2015-03-19 09:17:21 +00:00
Ilia K
aa27aadb14
Fix double (gdb) prompt when command doesn't exist
...
llvm-svn: 232715
2015-03-19 09:17:06 +00:00
Sylvestre Ledru
2a5c0e8ec2
Add support for kfreebsd. Thanks to Jan Henke
...
Reported on the Debian BTS:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=780106
llvm-svn: 232714
2015-03-19 09:03:58 +00:00
Ilia K
30a4ba1721
Fix error handling in CMIDriver::DoMainLoop after r215223 (MI)
...
llvm-svn: 232713
2015-03-19 08:54:17 +00:00
Alexey Bataev
87b1302a84
[OPENMP] Fixed bug in codegen of 'atomic write'.
...
Fixed codegen for exit/continue order after success/failed atomic cmpxchg instruction for 'atomic write' construct.
llvm-svn: 232712
2015-03-19 08:44:10 +00:00
Tobias Grosser
442c6ccb8c
Add some missing __isl_give/__isl_keep annotations
...
llvm-svn: 232711
2015-03-19 07:43:35 +00:00
Tobias Grosser
9715b7c592
Add forgotten 'FileCheck' to tiling test cases
...
These test cases did not verify the CHECK lines at all. We add the FileCheck
and also fix some broken CHECK lines. Being here, we extend the checks to
cover the whole loop structure.
llvm-svn: 232710
2015-03-19 07:39:34 +00:00
Tobias Grosser
1de4e381ca
Update isl to 94d707d
...
The major improvements are:
- Extended schedule tree support
- AST generation from schedule trees
llvm-svn: 232709
2015-03-19 07:27:29 +00:00
Denis Protivensky
91141e87b1
[ARM] Implement static (initial exec) TLS model
...
This includes handling of R_ARM_TLS_IE32 and R_ARM_TLS_LE32 relocs.
Differential Revision: http://reviews.llvm.org/D8353
llvm-svn: 232708
2015-03-19 06:47:44 +00:00
Simon Atanasyan
14afb83952
[Mips] Implement R_MIPS_PC21_S2 relocation handling
...
llvm-svn: 232707
2015-03-19 05:44:22 +00:00
Simon Atanasyan
14b5217cc6
[Mips] Recognize and check compatibility MIPS32R6 / MIPS64R6 ISA's
...
llvm-svn: 232706
2015-03-19 05:44:13 +00:00
Simon Atanasyan
8343c2c9ec
[Mips] Replace "hand-made" function by the `llvm::SignExtend32()` routine
...
No functional changes.
llvm-svn: 232705
2015-03-19 05:44:04 +00:00
Justin Bogner
9deb1d406f
llvm-cov: Rename -color={always|never} to -use-color[=0]
...
This is an ugly hack to fix the configure --enable-shared build. It
turns out that *every cl::opt in LLVM* shows up in *every tool* in
that configuration, which is hopelessly broken. This skirts around the
issue by not colliding with another option's name, for now.
I've also simplified the option implementation - the other "color"
option used cl::boolOrDefault and was much nicer than what I'd written
before.
llvm-svn: 232704
2015-03-19 04:45:16 +00:00
Eric Fiselier
61bff61926
Fix use after free and calls to operator comma in debug mode
...
llvm-svn: 232703
2015-03-19 03:20:02 +00:00
Ed Maste
0ddc6160ec
Add NameMatches.h header to fix FreeBSD build after r232673
...
llvm-svn: 232702
2015-03-19 02:47:36 +00:00
Rafael Espindola
7f45440bd9
Note that we don't support COFF on PPC.
...
Should bring back the windows bots.
llvm-svn: 232701
2015-03-19 02:40:56 +00:00
Justin Bogner
efa427823e
llvm-cov: Continue trying to appease a bot
...
This bot doesn't like me. I don't know why:
http://lab.llvm.org:8011/builders/clang-hexagon-elf/builds/24425
Move the color option enum's definition out of the function that
creates the cl::opt.
llvm-svn: 232700
2015-03-19 02:00:54 +00:00
Rafael Espindola
cd584a809d
Split the object streamer callback in one per file format.
...
There are two main advantages to doing this
* Targets that only need to handle one of the formats specially don't have
to worry about the others. For example, x86 now only registers a
constructor for the COFF streamer.
* Changes to the arguments passed to one format constructor will not impact
the other formats.
llvm-svn: 232699
2015-03-19 01:50:16 +00:00
Justin Bogner
58e2492f93
llvm-cov: Try to appease a bot
...
The clang-hexagon elf bot was complaining that "Option 'color'
registered more than once!":
http://lab.llvm.org:8011/builders/clang-hexagon-elf/builds/24425
I don't understand why this error is happening, and I don't see it on
any other bots or on my own machine, so I'm kind of grasping at
straws. Try using an unscoped enum and specifying a cl::init to see if
they help.
llvm-svn: 232698
2015-03-19 01:07:22 +00:00