| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
the address of it. Found by a checking STL implementation used on
a dragonegg builder. Sorry about this one. =/
llvm-svn: 158582
|
| |
|
|
|
|
| |
on controlling diagnostics.
llvm-svn: 158581
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is likely only the tip of the ice berg, but this particular bug
caused any double-free on a glibc system to turn into a deadlock! It is
not generally safe to either allocate or release heap memory from within
the signal handler. The 'pop_back()' in RemoveFilesToRemove was deleting
memory and causing the deadlock. What's worse, eraseFromDisk in PathV1
has lots of allocation and deallocation paths. We even passed 'true' in
a place that would have caused the *signal handler* to try to run the
'system' system call and shell out to 'rm -rf'. That was never going to
work...
This patch switches the file removal to use a vector of strings so that
the exact text needed for the 'unlink' system call can be stored there.
It switches the loop to be a boring indexed loop, and directly calls
unlink without looking at the error. It also works quite hard to ensure
that calling 'c_str()' is safe, by ensuring that the non-signal-handling
code path that manipulates the vector always leaves it in a state where
every element has already had 'c_str()' called at least once.
I dunno exactly how overkill this is, but it fixes the
deadlock-on-double free issue, and seems likely to prevent any other
issues from sneaking up.
Sorry for not having a test case, but I *really* don't know how to test
signal handling code easily....
llvm-svn: 158580
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Specifically, although the bitmap context does not take ownership of the
buffer (unlike CGBitmapContextCreateWithData), the data buffer can be extracted
out of the created CGContextRef. Thus the buffer is not leaked even if its
original pointer goes out of scope, as long as
- the context escapes, or
- it is retrieved via CGBitmapContextGetData and freed.
Actually implementing that logic is beyond the current scope of MallocChecker,
so for now CGBitmapContextCreate goes on our system function exception list.
llvm-svn: 158579
|
| |
|
|
|
|
| |
field has a non-trivial copy constructor. PR13097.
llvm-svn: 158578
|
| |
|
|
|
|
|
| |
We now have a proper machine code verifier pass between register
allocation and rewriting.
llvm-svn: 158577
|
| |
|
|
| |
llvm-svn: 158575
|
| |
|
|
| |
llvm-svn: 158573
|
| |
|
|
| |
llvm-svn: 158572
|
| |
|
|
|
|
|
|
|
|
|
| |
1. Teach Lexer that pragma lexers are like macro expansions at EOF.
2. Treat pragmas like #define/#undef when printing.
3. If we just printed a directive, add a newline before any more tokens.
(4. Miscellaneous cleanup in PrintPreprocessedOutput.cpp)
PR10594 and <rdar://problem/11562490> (two separate related problems)
llvm-svn: 158571
|
| |
|
|
| |
llvm-svn: 158570
|
| |
|
|
| |
llvm-svn: 158569
|
| |
|
|
| |
llvm-svn: 158568
|
| |
|
|
| |
llvm-svn: 158567
|
| |
|
|
| |
llvm-svn: 158566
|
| |
|
|
| |
llvm-svn: 158565
|
| |
|
|
| |
llvm-svn: 158564
|
| |
|
|
|
|
|
| |
Calling checkRegMaskInterference(VirtReg) checks if VirtReg crosses any
regmask operands, regardless of the registers they clobber.
llvm-svn: 158563
|
| |
|
|
|
|
|
|
|
| |
* Escaped "::" and "<" as needed in Doxygen comments;
* Marked up code examples with \code...\endcode;
* Documented a \param that is current, instead of a few that aren't;
* Fixed up some \file and \brief comments.
llvm-svn: 158562
|
| |
|
|
| |
llvm-svn: 158561
|
| |
|
|
|
|
| |
iaspr, espr and xpsr which also needed to have 0b10 in their mask encoding bits.
llvm-svn: 158560
|
| |
|
|
|
|
|
|
| |
* Escaped Objective-C @keywords in Doxygen comments;
* Documented more accurate \params;
* Exposed some more summaries using \brief.
llvm-svn: 158559
|
| |
|
|
| |
llvm-svn: 158558
|
| |
|
|
|
|
|
| |
* Escaped # characters in Doxygen comments;
* Added Doxygen markup (\brief, \code, \file, \namespace).
llvm-svn: 158557
|
| |
|
|
|
|
| |
be null.
llvm-svn: 158556
|
| |
|
|
| |
llvm-svn: 158555
|
| |
|
|
| |
llvm-svn: 158554
|
| |
|
|
|
|
|
|
|
| |
* Escaped the # of #define in Doxygen comments;
* Formatting: Annotated __VA_ARGS__ with \c;
* Converted docs to use \brief to provide summaries;
* Fixed a typo: disbles -> disables.
llvm-svn: 158553
|
| |
|
|
| |
llvm-svn: 158552
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch will optimize abs(x-y)
FROM
sub, movs, rsbmi
TO
subs, rsbmi
For abs, we will use cmp instead of movs. This is necessary because we already
have an existing peephole pass which optimizes away cmp following sub.
rdar: 11633193
llvm-svn: 158551
|
| |
|
|
|
|
| |
broken duplicates of comments that are in the corresponding header files.
llvm-svn: 158550
|
| |
|
|
| |
llvm-svn: 158549
|
| |
|
|
| |
llvm-svn: 158548
|
| |
|
|
|
|
| |
return that fact to the caller for use in constructing an error message, rather that triggering an assertion.
llvm-svn: 158547
|
| |
|
|
|
|
| |
not with another <tt>.
llvm-svn: 158546
|
| |
|
|
| |
llvm-svn: 158545
|
| |
|
|
|
|
| |
warns abot missing return values
llvm-svn: 158544
|
| |
|
|
| |
llvm-svn: 158543
|
| |
|
|
|
|
| |
switch statements
llvm-svn: 158542
|
| |
|
|
| |
llvm-svn: 158541
|
| |
|
|
|
|
|
|
|
| |
For non-address users, Base and Scaled registers are not specially
associated to fit an address mode, so SCEVExpander should apply normal
expansion rules. Otherwise we may sink computation into inner loops
that have already been optimized.
llvm-svn: 158537
|
| |
|
|
| |
llvm-svn: 158536
|
| |
|
|
| |
llvm-svn: 158535
|
| |
|
|
| |
llvm-svn: 158534
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Specifically, @[] and @{} didn't have a type associated with them; we now
use "NSArray *" and "NSDictionary *", respectively. @"" has the type
"NSString *". @(), unfortunately, has type "id", since it (currently) may
be either an NSNumber or an NSString.
Add a test for all the Objective-C at-expression completions.
<rdar://problem/11507708&11507668&11507711>
llvm-svn: 158533
|
| |
|
|
|
|
|
|
|
| |
We already didn't track objects that have delegates or callbacks or
objects that are passed through void * "context pointers". It's a
not-uncommon pattern to release the object in its callback, and so
the leak message we give is not very helpful.
llvm-svn: 158532
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This is explicitly forbidden in C99 6.7.4p3. This is /not/ forbidden in C++,
probably because by default file-scope const/constexpr variables have internal
linkage, while functions have external linkage. There's also the issue of
anonymous namespaces to consider. Nevertheless, there should probably be a
similar warning, since the semantics of inlining a function that references
a variable with internal linkage do not seem well-defined.
<rdar://problem/11577619>
llvm-svn: 158531
|
| |
|
|
|
|
|
| |
There was already a test that it did not fire in type-dependent contexts.
This was already behaving correctly.
llvm-svn: 158530
|
| |
|
|
|
|
| |
the vectors are dynamically indexed
llvm-svn: 158529
|
| |
|
|
|
|
|
|
| |
linkonce linkage. For example, it is not valid to add unnamed_addr.
This also fixes a crash in g++.dg/opt/static5.C.
llvm-svn: 158528
|