| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
revised.
llvm-svn: 227083
|
| |
|
|
|
|
|
|
| |
This reverts commit r227003. Support for addition/subtraction and
various other operations for the i128 data type will be added in a
future commit based on the review D7143.
llvm-svn: 227082
|
| |
|
|
|
|
| |
and raw_fd_ostream constructor expects a StringRef.
llvm-svn: 227081
|
| |
|
|
|
|
|
|
| |
AArch64 ELF assembler was failing with"
It should be split into target-specific location.
llvm-svn: 227080
|
| |
|
|
| |
llvm-svn: 227079
|
| |
|
|
|
|
| |
It is no longer supported.
llvm-svn: 227078
|
| |
|
|
|
|
| |
This fixes PR22306.
llvm-svn: 227077
|
| |
|
|
| |
llvm-svn: 227076
|
| |
|
|
|
|
| |
and 256 bit vectors of dwords and qwords.
llvm-svn: 227075
|
| |
|
|
|
|
|
|
|
| |
-no-exec-stack. This was due to it not deriving from the correct
asm info base class and missing the override for the exec
stack section query. Added another line to the noexec test
line to make sure this doesn't regress.
llvm-svn: 227074
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
clang currently calls MarkVTableUsed() for classes that get their virtual
methods called or that participate in a dynamic_cast. This is unnecessary,
since CodeGen only emits vtables when it generates constructor, destructor, and
vtt code. (*)
Note that Sema::MarkVTableUsed() doesn't cause the emission of a vtable.
Its main user-visible effect is that it instantiates virtual member functions
of template classes, to make sure that if codegen decides to write a vtable
all the entries in the vtable are defined.
While this shouldn't change the behavior of codegen (other than being faster),
it does make clang more permissive: virtual methods of templates (in particular
destructors) end up being instantiated less often. In particular, classes that
have members that are smart pointers to incomplete types will now get their
implicit virtual destructor instantiated less frequently. For example, this
used to not compile but does now compile:
template <typename T> struct OwnPtr {
~OwnPtr() { static_assert((sizeof(T) > 0), "TypeMustBeComplete"); }
};
class ScriptLoader;
struct Base { virtual ~Base(); };
struct Sub : public Base {
virtual void someFun() const {}
OwnPtr<ScriptLoader> m_loader;
};
void f(Sub *s) { s->someFun(); }
The more permissive behavior matches both gcc (where this is not often
observable, since in practice most things with virtual methods have a key
function, and Sema::DefineUsedVTables() skips vtables for classes with key
functions) and cl (which is my motivation for this change) – this fixes
PR20337. See this issue and the review thread for some discussions about
optimizations.
This is similar to r213109 in spirit. r225761 was a prerequisite for this
change.
Various tests relied on "a->f()" marking a's vtable as used (in the sema
sense), switch these to just construct a on the stack. This forces
instantiation of the implicit constructor, which will mark the vtable as used.
(*) The exception is -fapple-kext mode: In this mode, qualified calls to
virtual functions (`a->Base::f()`) still go through the vtable, and since the
vtable pointer off this doesn't point to Base's vtable, this needs to reference
Base's vtable directly. To keep this working, keep referencing the vtable for
virtual calls in apple kext mode.
llvm-svn: 227073
|
| |
|
|
|
|
|
| |
They are referenced from the vtable. (This worked fine, but I couldn't find
an existing test for this. Maybe I didn't look hard enough.)
llvm-svn: 227072
|
| |
|
|
|
|
|
| |
Makes the error output of the test more readable when it fails. Also allows
removing a "not" from the run line.
llvm-svn: 227071
|
| |
|
|
| |
llvm-svn: 227070
|
| |
|
|
| |
llvm-svn: 227069
|
| |
|
|
|
|
|
| |
I broke this locally while working on PR20337 and no test caught that. Now
there's coverage for this, and a comment explaining why this is needed.
llvm-svn: 227068
|
| |
|
|
| |
llvm-svn: 227067
|
| |
|
|
| |
llvm-svn: 227066
|
| |
|
|
|
|
| |
header file usages coming later.
llvm-svn: 227065
|
| |
|
|
|
|
| |
floating point comparisons. The type was already changed in the definitions and was being auto upgraded to the new type.
llvm-svn: 227064
|
| |
|
|
|
|
| |
instructions. This matches floating point equivalents. Includes autoupgrade support to convert old code.
llvm-svn: 227063
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This patch allows clang to have llvm reserve the x18
platform register on AArch64. FreeBSD will use this in the kernel for
per-cpu data but has no need to reserve this register in userland so
will need this flag to reserve it.
This uses llvm r226664 to allow this register to be reserved.
Patch by Andrew Turner.
llvm-svn: 227062
|
| |
|
|
| |
llvm-svn: 227061
|
| |
|
|
|
|
| |
Lots more to follow.
llvm-svn: 227060
|
| |
|
|
|
|
| |
No functional changes.
llvm-svn: 227059
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This is initial patch to support MIPS64 object files linking.
The patch just makes some classes more generalized, and rejects
attempts to interlinking O32 and N64 ABI object files.
I try to reuse the current MIPS target related classes as much as
possible because O32 and N64 MIPS ABI are tightly related and share
almost the same set of relocations, GOT, flags etc.
llvm-svn: 227058
|
| |
|
|
|
|
| |
Also an old option was removed from some new test cases
llvm-svn: 227057
|
| |
|
|
|
|
|
|
|
|
|
| |
physical register that is described in a DBG_VALUE.
In the testcase the DBG_VALUE describing "p5" becomes unavailable
because the register its address is in is clobbered and we (currently)
aren't smart enough to realize that the value is rematerialized immediately
after the DBG_VALUE and/or is actually a stack slot.
llvm-svn: 227056
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It appears we have different behavior with and without -mcpu=pwr8 even
with ppc64le defaulting to POWER8. The failure appears as follows:
/home/bb/cmake-llvm-x86_64-linux/llvm-project/llvm/test/CodeGen/PowerPC/ppc64le-aggregates.ll:268:14: error: expected string not found in input
; CHECK-DAG: lfs 1, 0([[REG]])
^
<stdin>:497:11: note: scanning from here
ld 3, .LC1@toc@l(3)
^
<stdin>:497:11: note: with variable "REG" equal to "3"
ld 3, .LC1@toc@l(3)
^
<stdin>:514:2: note: possible intended match here
lfs 1, 0(4)
^
Reverting this particular test case change. Nemanja, please have a look
at the reason for the failure.
llvm-svn: 227055
|
| |
|
|
|
|
|
|
|
| |
The support is currently limited as we only allow them in the input but do
not emit them in the transformed SCoP due to the possible semantic changes.
Differential Revision: http://reviews.llvm.org/D5225
llvm-svn: 227054
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Test by Nemanja Ivanovic.
Since ppc64le implies POWER8 as a minimum, it makes sense that the
same features are included. Since the pwr8 processor model will likely
be getting new features until the implementation is complete, I
created a new list to add these updates to. This will include them in
both pwr8 and ppc64le.
Furthermore, it seems that it would make sense to compose the feature
lists for other processor models (pwr3 and up). Per discussion in the
review, I will make this change in a subsequent patch.
In order to test the changes, I've added an additional run step to
test cases that specify -march=ppc64le -mcpu=pwr8 to omit the -mcpu
option. Since the feature lists are the same, the behaviour should be
unchanged.
llvm-svn: 227053
|
| |
|
|
| |
llvm-svn: 227052
|
| |
|
|
|
|
| |
No functional changes.
llvm-svn: 227051
|
| |
|
|
| |
llvm-svn: 227050
|
| |
|
|
|
|
| |
No functional changes.
llvm-svn: 227049
|
| |
|
|
|
|
| |
No functional changes.
llvm-svn: 227048
|
| |
|
|
|
|
|
|
| |
the class field declarations.
No functional changes.
llvm-svn: 227047
|
| |
|
|
| |
llvm-svn: 227046
|
| |
|
|
|
|
|
|
|
| |
The `Elf_Rel_Impl::setSymbolAndType` method now has the third argument
`IsMips64EL` (like complement methods `getSymbol` and `getType`). While
we do not support linking of MIPS64 ELF object file just pass `false`
to the `setSymbolAndType`.
llvm-svn: 227045
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
MIPS64 ELF file has a very specific relocation record format. Each
record might specify up to three relocation operations. So the `r_info`
field in fact consists of three relocation type sub-fields and optional
code of "special" symbols.
http://techpubs.sgi.com/library/manuals/4000/007-4658-001/pdf/007-4658-001.pdf
page 40
The patch implements support of the MIPS64 relocation record format in
yaml2obj/obj2yaml tools by introducing new optional Relocation fields:
Type2, Type3, and SpecSym. These fields are recognized only if the
object/YAML file relates to the MIPS64 target.
Differential Revision: http://reviews.llvm.org/D7136
llvm-svn: 227044
|
| |
|
|
|
|
|
|
|
| |
- Added KSHIFTB/D/Q for skx
- Added KORTESTB/D/Q for skx
- Fixed store operation for v8i1 type for KNL
- Store size of v8i1, v4i1 and v2i1 are changed to 8 bits
llvm-svn: 227043
|
| |
|
|
| |
llvm-svn: 227042
|
| |
|
|
| |
llvm-svn: 227041
|
| |
|
|
| |
llvm-svn: 227040
|
| |
|
|
| |
llvm-svn: 227039
|
| |
|
|
| |
llvm-svn: 227038
|
| |
|
|
| |
llvm-svn: 227037
|
| |
|
|
| |
llvm-svn: 227036
|
| |
|
|
| |
llvm-svn: 227035
|
| |
|
|
|
|
|
|
|
| |
non-binary operator overload calls (and ->) to the start of the expression, not the location of the operator
I'll give this some further thought/discussion later, but this is enough
to unbreak the buildbots at least.
llvm-svn: 227034
|