| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
| |
This is actually needed, otherwise libc won't be added at all. For
instance when building libclang.so all the libc symbols won't be
found, with ld warning about libc being an "implicit dependency".
Patch by Xan López!
llvm-svn: 247603
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D12818
llvm-svn: 247598
|
| |
|
|
|
|
|
|
|
| |
it escaped notice because it's only used for heterogeneous
initialization.
rdar://21397946
llvm-svn: 247597
|
| |
|
|
| |
llvm-svn: 247595
|
| |
|
|
|
|
|
|
|
|
| |
of uses of types already available elsewhere
These are a few cleanups I happened to have from trying to go in a
different direction recently, so just flushing them out while I have
them.
llvm-svn: 247593
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D12852
llvm-svn: 247590
|
| |
|
|
|
|
|
|
|
|
| |
This was the wrong direction to take anyway (because ultimately the
GlobalValue needed the pointee type again and /it/ used
PointerType::getElementType eventually anyway)... let's go a different way.
This reverts commit r236161.
llvm-svn: 247586
|
| |
|
|
|
|
| |
This was causing an error in Power8 targets.
llvm-svn: 247584
|
| |
|
|
|
|
| |
Remove some trailing whitespace
llvm-svn: 247560
|
| |
|
|
| |
llvm-svn: 247554
|
| |
|
|
| |
llvm-svn: 247553
|
| |
|
|
|
|
| |
Follow up to r247546. The test case reproduces the problem fixed by this commit.
llvm-svn: 247548
|
| |
|
|
|
|
|
|
|
| |
T in the expression T() must be a non-array complete object type or
the void type. Function types are neither.
This fixes PR24798.
llvm-svn: 247535
|
| |
|
|
| |
llvm-svn: 247533
|
| |
|
|
|
|
|
|
| |
Propagation checker.
Differential Revision: http://reviews.llvm.org/D12381
llvm-svn: 247532
|
| |
|
|
|
|
|
|
| |
Patch by beltex!
Differential Revision: http://reviews.llvm.org/D12684
llvm-svn: 247530
|
| |
|
|
|
|
| |
(http://reviews.llvm.org/D12827).
llvm-svn: 247510
|
| |
|
|
| |
llvm-svn: 247503
|
| |
|
|
|
|
| |
always_inline functions without a wrapper don't need to be in a COMDAT.
llvm-svn: 247500
|
| |
|
|
| |
llvm-svn: 247498
|
| |
|
|
|
|
| |
GCC driver, for example cygwin, both "-mstackrealign" "-mno-stackrealign" are passed.
llvm-svn: 247496
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Current implementation may end up emitting an undefined reference for
an "inline __attribute__((always_inline))" function by generating an
"available_externally alwaysinline" IR function for it and then failing to
inline all the calls. This happens when a call to such function is in dead
code. As the inliner is an SCC pass, it does not process dead code.
Libc++ relies on the compiler never emitting such undefined reference.
With this patch, we emit a pair of
1. internal alwaysinline definition (called F.alwaysinline)
2a. A stub F() { musttail call F.alwaysinline }
-- or, depending on the linkage --
2b. A declaration of F.
The frontend ensures that F.inlinefunction is only used for direct
calls, and the stub is used for everything else (taking the address of
the function, really). Declaration (2b) is emitted in the case when
"inline" is meant for inlining only (like __gnu_inline__ and some
other cases).
This approach, among other nice properties, ensures that alwaysinline
functions are always internal, making it impossible for a direct call
to such function to produce an undefined symbol reference.
This patch is based on ideas by Chandler Carruth and Richard Smith.
llvm-svn: 247494
|
| |
|
|
|
|
|
|
|
| |
Revert "Always_inline codegen rewrite."
Breaks gdb & lldb tests.
Breaks on Fedora 22 x86_64.
llvm-svn: 247491
|
| |
|
|
| |
llvm-svn: 247488
|
| |
|
|
|
|
|
|
| |
it's not sufficient to prefer the declaration with more default arguments, or
the one that's visible; they might both be visible, but one of them might have
a visible default argument where the other has a hidden default argument.
llvm-svn: 247486
|
| |
|
|
|
|
|
|
| |
if they have the same alignment and one was 'this'.
Fixes PR24780.
llvm-svn: 247482
|
| |
|
|
|
|
|
| |
I accidentally introduced a bug locally, and noticed that none of the tests
caught it. No longer!
llvm-svn: 247477
|
| |
|
|
| |
llvm-svn: 247476
|
| |
|
|
| |
llvm-svn: 247474
|
| |
|
|
|
|
| |
This should fix the tests on Windows (failing due to mangling differencies).
llvm-svn: 247473
|
| |
|
|
| |
llvm-svn: 247472
|
| |
|
|
|
|
| |
command.
llvm-svn: 247468
|
| |
|
|
|
|
| |
When building with LTO the bootstrap builds need to depend on libLTO, llvm-ar, and llvm-ranlib, which all need to be passed into the bootstrap build. This functionality only works on Darwin.
llvm-svn: 247467
|
| |
|
|
|
|
|
| |
- Eliminate 'No such file or directory at scan-build line ...' error if '$RealBin/bin/clang' or '$RealBin/clang' directory does not exist.
- Eliminate 'Use of uninitialized value $Clang in concatenation (.) or string at scan-build line ...' error if help is displayed while $Clang was not found.
llvm-svn: 247466
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Current implementation may end up emitting an undefined reference for
an "inline __attribute__((always_inline))" function by generating an
"available_externally alwaysinline" IR function for it and then failing to
inline all the calls. This happens when a call to such function is in dead
code. As the inliner is an SCC pass, it does not process dead code.
Libc++ relies on the compiler never emitting such undefined reference.
With this patch, we emit a pair of
1. internal alwaysinline definition (called F.alwaysinline)
2a. A stub F() { musttail call F.alwaysinline }
-- or, depending on the linkage --
2b. A declaration of F.
The frontend ensures that F.inlinefunction is only used for direct
calls, and the stub is used for everything else (taking the address of
the function, really). Declaration (2b) is emitted in the case when
"inline" is meant for inlining only (like __gnu_inline__ and some
other cases).
This approach, among other nice properties, ensures that alwaysinline
functions are always internal, making it impossible for a direct call
to such function to produce an undefined symbol reference.
This patch is based on ideas by Chandler Carruth and Richard Smith.
llvm-svn: 247465
|
| |
|
|
|
|
|
|
|
|
|
|
| |
We used to only select an inheritance model if the pointer to member was
nullptr. Instead, select a model regardless of the member pointer's
value.
N.B. This bug was exposed by making member pointers report true for
isIncompleteType but has been latent since the member pointer scheme's
inception.
llvm-svn: 247464
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
considers as large
Add an option (-analyzer-config min-blocks-for-inline-large=14) to control the function
size the inliner considers as large, in relation to "max-times-inline-large". The option
defaults to the original hard coded behaviour, which I believe should be adjustable with
the other inlining settings.
The analyzer-config test has been modified so that the analyzer will reach the
getMinBlocksForInlineLarge() method and store the result in the ConfigTable, to ensure it
is dumped by the debug checker.
A patch by Sean Eveson!
Differential Revision: http://reviews.llvm.org/D12406
llvm-svn: 247463
|
| |
|
|
|
|
| |
This was not working correctly, leading to erroneously rejecting valid edits.
llvm-svn: 247462
|
| |
|
|
|
|
|
|
|
|
|
|
| |
-force-align-stack.
Also, make changes to the driver so that -mno-stack-realign is no longer
an option exposed to the end-user that disallows stack realignment in
the backend.
Differential Revision: http://reviews.llvm.org/D11815
llvm-svn: 247451
|
| |
|
|
| |
llvm-svn: 247449
|
| |
|
|
| |
llvm-svn: 247448
|
| |
|
|
| |
llvm-svn: 247447
|
| |
|
|
|
|
| |
in CGDebugInfo.cpp: MDString::get() copies its arguments.
llvm-svn: 247445
|
| |
|
|
| |
llvm-svn: 247444
|
| |
|
|
|
|
|
|
| |
tok::identifier tokens.
Patch by Mike Spertus.
llvm-svn: 247442
|
| |
|
|
| |
llvm-svn: 247438
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Replace:
'try { throw 0; } catch (...)'
with
'try { throw 0; } catch (int e)'
in two test cases.
Differential Revision: http://reviews.llvm.org/D12743
llvm-svn: 247437
|
| |
|
|
|
|
| |
directories.
llvm-svn: 247436
|
| |
|
|
| |
llvm-svn: 247434
|
| |
|
|
|
|
|
|
|
| |
clang modules, if -dwarf-ext-refs (DebugTypesExtRefs) is specified.
This reimplements r247369 in about a third of the amount of code.
Thanks to David Blaikie pointing this out in post-commit review!
llvm-svn: 247432
|