| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The old code used to lower FRAMEADDR tried to replicate the logic in the real
frame-lowering code that determines whether or not the frame pointer (r31) will
be used. When it seemed as through the frame pointer would not be used, the
stack pointer (r1) was used instead. Unfortunately, because the stack size is
not yet known, this does not work. Instead, this change introduces new
always-reserved pseudo-registers (FP and FP8) that are replaced during prologue
insertion with the real frame-pointer register (either r1 or r31).
It is important that this intrinsic always return a valid frame address because
it is used by Clang to store the frame address as part of code generation for
__builtin_setjmp.
llvm-svn: 177653
|
| |
|
|
|
|
|
|
|
|
| |
NEON is not IEEE 754 compliant, so we should avoid lowering single-precision
floating point operations with NEON unless unsafe-math is turned on. The
equivalent VFP instructions are IEEE 754 compliant, but in some cores they're
much slower, so some archs/OSs might still request it to be on by default,
such as Swift and Darwin.
llvm-svn: 177651
|
| |
|
|
|
|
|
| |
The landingpad instruction needs to be the first non-PHI instruction in the
unwind destination block.
llvm-svn: 177650
|
| |
|
|
|
|
| |
Debug utility only, no functionality change.
llvm-svn: 177649
|
| |
|
|
|
|
|
| |
1. do not report running threads as leaks
2. aggregate leaked threads by creation stack
llvm-svn: 177647
|
| |
|
|
| |
llvm-svn: 177646
|
| |
|
|
| |
llvm-svn: 177645
|
| |
|
|
|
|
|
| |
Scev code generation can now handle scops with non canonical induction
variables. Hence there is no need to introduce canonical ones any more.
llvm-svn: 177644
|
| |
|
|
|
|
|
|
| |
We now detect scops without a canonical induction variable and can generate a
polyhedral representation for them. There was no modification necessary to
code generate these scops.
llvm-svn: 177643
|
| |
|
|
| |
llvm-svn: 177642
|
| |
|
|
|
|
| |
explicitly say "ctor/dtor vs virtual call"
llvm-svn: 177640
|
| |
|
|
| |
llvm-svn: 177638
|
| |
|
|
| |
llvm-svn: 177637
|
| |
|
|
|
|
| |
Asynchronous signal (e.g. SIGABRT) can be received with any value of in_rtl.
llvm-svn: 177636
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
1. When splitting one-line block comment, use indentation and *s.
2. Remove trailing whitespace from all lines of a comment, not only the ones being splitted.
3. Add backslashes for all lines if a comment is used insed a preprocessor directive.
Reviewers: djasper
Reviewed By: djasper
CC: cfe-commits, klimek
Differential Revision: http://llvm-reviews.chandlerc.com/D557
llvm-svn: 177635
|
| |
|
|
|
|
| |
ASan-specific AsanThreadRegistry.
llvm-svn: 177634
|
| |
|
|
|
|
| |
targeting the iOS simulator.
llvm-svn: 177633
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
header.
This method is called in the hot path for *many* passes, SROA is what
caught my interest. A common pattern is that which branch of the switch
should be taken is known in the callsite and so it is a very good
candidate for inlining and simplification. Moving it into the header
allows the optimizer to fold a lot of boring, repeatitive code in
callers of this routine.
I'm seeing pretty significant speedups in parts of SROA and I suspect
other passes will see similar speedups if they end up working with type
sizes frequently. I've not seen any significant growth of the binaries
as a consequence, but let me know if you see anything suspicious here.
llvm-svn: 177632
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The key part of this is ensuring that name prefixes remain in a Twine
form until we get to a point where we can nuke them under NDEBUG. This
is tricky using the old APIs as they played fast and loose with Twine,
which is prone to serious error. The inserter is much cleaner as it is
actually in the call stack leading to the setName call, and so has
a good opportunity to prepend the prefix.
This matters more than you might imagine because most runs over an
alloca find a single partition, and rewrite 3 or 4 instructions
referring to it. As a consequence doing this lazily and exclusively with
Twine allows the optimizer to delete more of it and shaves another 2% to
3% off of the release build's SROA run time for PR15412. I also think
the APIs are cleaner, and the use of Twine is more reliable, so
I consider it a win-win despite the churn required to reach this state.
llvm-svn: 177631
|
| |
|
|
| |
llvm-svn: 177630
|
| |
|
|
| |
llvm-svn: 177629
|
| |
|
|
| |
llvm-svn: 177628
|
| |
|
|
|
|
| |
(and later for symbolizer flush)
llvm-svn: 177627
|
| |
|
|
| |
llvm-svn: 177626
|
| |
|
|
| |
llvm-svn: 177625
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This returns a vector of <file address, size> entries for all of
the functions in the module that have an eh_frame FDE.
Update ObjectFileMachO to use the eh_frame FDE function addresses if
the LC_FUNCTION_STARTS section is missing, to fill in the start
addresses of any symbols that have been stripped from the binary.
Generally speaking, lldb works best if it knows the actual start
address of every function in a module - it's especially important
for unwinding, where lldb inspects the instructions in the prologue
of the function. In a stripped binary, it is deprived of this
information and it reduces the quality of our unwinds and saved
register retrieval.
Other ObjectFile users may want to use the function addresses from
DWARFCallFrameInfo to fill in any stripped symbols like ObjectFileMachO
does already.
<rdar://problem/13365659>
llvm-svn: 177624
|
| |
|
|
| |
llvm-svn: 177623
|
| |
|
|
|
|
|
| |
The 'Modified' variable should have been removed from SimplifyLibCalls
in r177619, but was missed. This commit removes it.
llvm-svn: 177622
|
| |
|
|
|
|
| |
of their subdirectory in the include path.
llvm-svn: 177621
|
| |
|
|
| |
llvm-svn: 177620
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The simplify-libcalls pass implemented a doInitialization hook to infer
function prototype attributes for well-known functions. Given that the
simplify-libcalls pass is going away *and* that the functionattrs pass
is already in place to deduce function attributes, I am moving this logic
to the functionattrs pass. This approach was discussed during patch
review:
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20121126/157465.html.
llvm-svn: 177619
|
| |
|
|
|
|
|
| |
comparing type_info names, since the latter have better uniqueness guarantees
in practice.
llvm-svn: 177618
|
| |
|
|
|
|
|
|
| |
debugging clang with LLDB.
This test case will measure memory usage and expression timings in frame zero and at higher frames.
llvm-svn: 177617
|
| |
|
|
|
|
| |
DataExtractor::BytesLeft() to return the correct value.
llvm-svn: 177616
|
| |
|
|
|
|
| |
DNBDataRef::ValidOffset() functions.
llvm-svn: 177615
|
| |
|
|
| |
llvm-svn: 177614
|
| |
|
|
|
|
|
|
|
| |
enum return type to be converted to blocks with any integer type
of the same size.
rdar://13463504
llvm-svn: 177613
|
| |
|
|
|
|
| |
Testing cases for structs of structs and unions of structs.
llvm-svn: 177612
|
| |
|
|
| |
llvm-svn: 177611
|
| |
|
|
|
|
|
|
| |
file/directory pair
This removes the DICompileUnit special case from DIScope.
llvm-svn: 177610
|
| |
|
|
|
|
|
|
| |
This isn't necessary & with the next change to LLVM the DW_TAG_file_type entry
won't be emitted at all - only the raw filename/directory pair, so match on
that directly instead.
llvm-svn: 177609
|
| |
|
|
|
|
| |
They are generally faster (at least not slower) than post-inc, post-dec.
llvm-svn: 177608
|
| |
|
|
| |
llvm-svn: 177607
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* libclang_rt-san-* is sanitizer_common, and is linked in only if no other
sanitizer runtime is present.
* libclang_rt-ubsan-* is the piece of the runtime which doesn't depend on
a C++ ABI library, and is always linked in.
* libclang_rt-ubsan_cxx-* is the piece of the runtime which depends on a
C++ ABI library, and is only linked in when linking a C++ binary.
The Darwin ubsan runtime is unchanged.
For more details, see Clang change r177605.
llvm-svn: 177606
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* libclang_rt-san-* is sanitizer_common, and is linked in only if no other
sanitizer runtime is present.
* libclang_rt-ubsan-* is the piece of the runtime which doesn't depend on
a C++ ABI library, and is always linked in.
* libclang_rt-ubsan_cxx-* is the piece of the runtime which depends on a
C++ ABI library, and is only linked in when linking a C++ binary.
This change also switches us to using -whole-archive for the ubsan runtime
(which is made possible by the above split), and switches us to only linking
the sanitizer runtime into the main binary and not into DSOs (which is made
possible by using -whole-archive).
The motivation for this is to only link a single copy of sanitizer_common
into any binary. This is becoming important now because we want to share
more state between multiple sanitizers in the same process (for instance,
we want a single shared output mutex).
The Darwin ubsan runtime is unchanged; because we use a DSO there, we don't
need this complexity.
llvm-svn: 177605
|
| |
|
|
| |
llvm-svn: 177604
|
| |
|
|
|
|
| |
dynamic libraries
llvm-svn: 177603
|
| |
|
|
|
|
|
|
| |
Native Windows Python will do line ending translation by default, which
we don't want in bash scripts. If we're not native Windows Python, then
'b' is ignored.
llvm-svn: 177602
|
| |
|
|
| |
llvm-svn: 177601
|
| |
|
|
|
|
| |
SDNodeOrdering
llvm-svn: 177600
|