| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
Sorry, I have no idea how grep failed to find this.
llvm-svn: 240133
|
|
|
|
|
|
|
|
|
| |
This patch adds initial support for the -fsanitize=kernel-address flag to Clang.
Right now it's quite restricted: only out-of-line instrumentation is supported, globals are not instrumented, some GCC kasan flags are not supported.
Using this patch I am able to build and boot the KASan tree with LLVMLinux patches from github.com/ramosian-glider/kasan/tree/kasan_llvmlinux.
To disable KASan instrumentation for a certain function attribute((no_sanitize("kernel-address"))) can be used.
llvm-svn: 240131
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
What this does is make all symbols that would otherwise start with a .L
(or L on MachO) unnamed.
Some of these symbols still show up in the symbol table, but we can just
make them unnamed.
In order to make sure we produce identical results when going thought assembly,
all .L (not just the compiler produced ones), are now unnamed.
Running llc on llvm-as.opt.bc, the peak memory usage goes from 208.24MB to
205.57MB.
llvm-svn: 240130
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently, we canonicalize shuffles that produce a result larger than
their operands with:
shuffle(concat(v1, undef), concat(v2, undef))
->
shuffle(concat(v1, v2), undef)
because we can access quad vectors (see PerformVECTOR_SHUFFLECombine).
This is useful in the general case, but there are special cases where
native shuffles produce larger results: the two-result ops.
We can look through the concat when lowering them:
shuffle(concat(v1, v2), undef)
->
concat(VZIP(v1, v2):0, :1)
This lets us generate the native shuffles instead of scalarizing to
dozens of VMOVs.
Differential Revision: http://reviews.llvm.org/D10424
llvm-svn: 240118
|
|
|
|
|
|
|
| |
In preparation for a future patch: makes it easier to do the same
matching to generate different nodes, without duplication.
llvm-svn: 240116
|
|
|
|
| |
llvm-svn: 240113
|
|
|
|
| |
llvm-svn: 240112
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In a relocation target can take 3 basic forms
* A r_value in scattered relocations.
* A symbol in external relocations.
* A section is non-external relocations.
Have the dump reflect that. With this change we go from
CHECK-NEXT: Extern: 0
CHECK-NEXT: Type: X86_64_RELOC_SUBTRACTOR (5)
CHECK-NEXT: Symbol: 0x2
CHECK-NEXT: Scattered: 0
To just
// CHECK-NEXT: Type: X86_64_RELOC_SUBTRACTOR (5)
// CHECK-NEXT: Section: __data (2)
Since the relocation is with a section, we print the seciton name and don't
need to say that it is not scattered or external.
Someone motivated can add further special cases for things like
ARM64_RELOC_ADDEND and ARM_RELOC_PAIR.
llvm-svn: 240073
|
|
|
|
| |
llvm-svn: 240072
|
|
|
|
|
|
|
|
| |
To same compile time, the analysis to find dense case-clusters in switches is
not done at -O0. However, when the whole switch is dense enough, it is easy to
turn it into a jump table, resulting in much faster code with no extra effort.
llvm-svn: 240071
|
|
|
|
| |
llvm-svn: 240064
|
|
|
|
| |
llvm-svn: 240055
|
|
|
|
|
|
| |
tests that test packet brackets.
llvm-svn: 240051
|
|
|
|
|
|
| |
specialize how instructions are printed to asm.
llvm-svn: 240050
|
|
|
|
| |
llvm-svn: 240047
|
|
|
|
|
|
|
|
| |
Deduplicates some code and lets us use LEA on atom when adjusting the
stack around callee-cleanup calls. This is the only intended
functionality change.
llvm-svn: 240044
|
|
|
|
|
|
|
| |
While the hash functions are subtly different it shouldn't have an
impact. Instructions are checked with isIdenticalTo later.
llvm-svn: 240040
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Currently intrinsics don't affect the creation of the call graph.
This is not accurate with respect to statepoint and patchpoint
intrinsics -- these do call (or invoke) LLVM level functions.
This change fixes this inconsistency by adding a call to the external
node for call sites that call these non-leaf intrinsics. This coupled
with the fact that these intrinsics also escape the function pointer
they call gives us a conservatively correct call graph.
Reviewers: reames, chandlerc, atrick, pgavlin
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D10526
llvm-svn: 240039
|
|
|
|
|
|
| |
This should fix issues we've been seeing with Darwin.
llvm-svn: 240036
|
|
|
|
|
|
| |
NFC
llvm-svn: 240033
|
|
|
|
|
|
|
| |
While there use hash_combine instead of hand-rolled hashing. No
functionality change intended.
llvm-svn: 240023
|
|
|
|
| |
llvm-svn: 240022
|
|
|
|
|
|
|
|
|
|
| |
They had been getting emitted as a section + offset reference, which
is bogus since the value needs to be the offset within the GOT, not
the actual address of the symbol's object.
Differential Revision: http://reviews.llvm.org/D10441
llvm-svn: 240020
|
|
|
|
|
|
|
| |
failure:
http://lab.llvm.org:8011/builders/lld-x86_64-darwin13/builds/11847/steps/build_Lld/logs/stdio
llvm-svn: 240015
|
|
|
|
|
|
|
|
|
|
| |
add instructions: VPAVGB and VPAVGW
review
http://reviews.llvm.org/D10504
llvm-svn: 240012
|
|
|
|
|
|
|
|
| |
VPERMI2W/D/Q/PS/PD.
Intrinsics and tests for them are comming in the next patch.
llvm-svn: 240003
|
|
|
|
| |
llvm-svn: 240001
|
|
|
|
|
|
|
| |
and VPERMI2W/D/Q/PS/PD.
Intrinsics and tests for them are comming in the next patch.
llvm-svn: 239999
|
|
|
|
| |
llvm-svn: 239984
|
|
|
|
|
|
|
|
|
|
|
|
| |
- zext the value to alloc size first, then check if the value repeats
with zero padding included. If so we can still emit a .space
- Do the checking with APInt.isSplat(8), which handles non-pow2 types
- Also handle large constants (bit width > 64)
- In a ConstantArray all elements have the same type, so it's sufficient
to check the first constant recursively and then just compare if all
following constants are the same by pointer compare
llvm-svn: 239977
|
|
|
|
|
|
|
|
| |
Added explicit sign extension for v4i16/v8i16 to v4i32/v8i32 before conversion to floats. Matches existing support for v4i8/v8i8.
Follow up to D10433
llvm-svn: 239966
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This is done by first adding two additional instructions to convert the
alloca returned address to local and convert it back to generic. Then
replace all uses of alloca instruction with the converted generic
address. Then we can rely NVPTXFavorNonGenericAddrSpace pass to combine
the generic addresscast and the corresponding Load, Store, Bitcast, GEP
Instruction together.
Patched by Xuetian Weng (xweng@google.com).
Test Plan: test/CodeGen/NVPTX/lower-alloca.ll
Reviewers: jholewinski, jingyue
Reviewed By: jingyue
Subscribers: meheff, broune, eliben, jholewinski, llvm-commits
Differential Revision: http://reviews.llvm.org/D10483
llvm-svn: 239964
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
MCFragment didn't really need vtables. The majority of virtual methods were just getters and setters.
This removes the vtables and uses dispatch on the kind to do things like delete which needs to
get the appropriate class.
This reduces memory on the verify use list order test case by about 2MB out of 800MB.
Reviewed by Rafael Espíndola
llvm-svn: 239952
|
|
|
|
|
|
| |
Re-instates r239949 without accidentally flipping the sense of UseLEA.
llvm-svn: 239950
|
|
|
|
|
|
| |
This reverts commit r239948, tests seem to be failing.
llvm-svn: 239949
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There is a one-to-one relationship between X86Subtarget and
X86FrameLowering, but every frame lowering method would previously pull
the subtarget off the MachineFunction and query some subtarget
properties.
Over time, these locals began to grow in complexity and it became
important to keep their names and meaning in sync across all of the
frame lowering methods, leading to duplication. We can eliminate that
duplication by computing them once in the constructor.
llvm-svn: 239948
|
|
|
|
|
|
| |
No functional change intended.
llvm-svn: 239944
|
|
|
|
| |
llvm-svn: 239943
|
|
|
|
| |
llvm-svn: 239942
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The personality routine currently lives in the LandingPadInst.
This isn't desirable because:
- All LandingPadInsts in the same function must have the same
personality routine. This means that each LandingPadInst beyond the
first has an operand which produces no additional information.
- There is ongoing work to introduce EH IR constructs other than
LandingPadInst. Moving the personality routine off of any one
particular Instruction and onto the parent function seems a lot better
than have N different places a personality function can sneak onto an
exceptional function.
Differential Revision: http://reviews.llvm.org/D10429
llvm-svn: 239940
|
|
|
|
|
|
|
|
|
| |
It's been used before to avoid infinite loops caused by separate CGP
optimizations undoing one another. We found one more such issue
caused by r238054. To avoid it, generalize the "InsertedTruncs"
set to any inst, and use it to avoid touching those again.
llvm-svn: 239938
|
|
|
|
|
|
| |
There is a free bit is MCSymbol and MachO needs the same information.
llvm-svn: 239933
|
|
|
|
|
|
|
| |
The restriction on unnamed aliases was removed in r239921. Mostly reverts
r239590, but we keep the test.
llvm-svn: 239923
|
|
|
|
|
|
|
|
|
|
| |
If globals can be unnamed, there is no reason for aliases to be different.
The restriction was there since the original implementation in r36435. I
can only guess it was there because of the old bison parser for the old
alias syntax.
llvm-svn: 239921
|
|
|
|
| |
llvm-svn: 239919
|
|
|
|
| |
llvm-svn: 239916
|
|
|
|
|
|
| |
Tweak test cases and rename headerIndexFor -> getHeaderIndex.
llvm-svn: 239915
|
|
|
|
|
|
|
|
|
|
| |
Directional labels can show up in symbol tables (and we have a llvm-mc test for
that). Given that, we need to make sure they are named.
With that out of the way, use setUseNamesOnTempLabels in llvm-mc so that it
too benefits from the memory saving.
llvm-svn: 239914
|
|
|
|
| |
llvm-svn: 239913
|
|
|
|
|
|
| |
This matches GNU as output.
llvm-svn: 239911
|