Shuxin Yang [Wed, 23 Oct 2013 17:28:19 +0000 (17:28 +0000)]
Use address-taken to disambiguate global variable and indirect memops.
Major steps include:
1). introduces a not-addr-taken bit-field in GlobalVariable
2). GlobalOpt pass sets "not-address-taken" if it proves a global varirable
dosen't have its address taken.
3). AA use this info for disambiguation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193251
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Wed, 23 Oct 2013 16:57:34 +0000 (16:57 +0000)]
Mark zero-argument functions explicitly in C headers.
Pacifies GCC's -Wstrict-prototypes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193249
91177308-0d34-0410-b5e6-
96231b3b80d8
Zoran Jovanovic [Wed, 23 Oct 2013 16:14:44 +0000 (16:14 +0000)]
Support for microMIPS relocations 1.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193247
91177308-0d34-0410-b5e6-
96231b3b80d8
Anders Waldenborg [Wed, 23 Oct 2013 15:01:23 +0000 (15:01 +0000)]
Fix cmake dependency on llvm-c-test in test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193243
91177308-0d34-0410-b5e6-
96231b3b80d8
Matheus Almeida [Wed, 23 Oct 2013 13:20:07 +0000 (13:20 +0000)]
[mips][msa] Direct Object Emission support for the LSA instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193240
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Wed, 23 Oct 2013 10:36:52 +0000 (10:36 +0000)]
[mips][msa] Added support for matching fexp2 from normal IR (i.e. not intrinsics)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193239
91177308-0d34-0410-b5e6-
96231b3b80d8
Artyom Skrobov [Wed, 23 Oct 2013 10:14:40 +0000 (10:14 +0000)]
Make ARM hint ranges consistent, and add tests for these ranges
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193238
91177308-0d34-0410-b5e6-
96231b3b80d8
Anders Waldenborg [Wed, 23 Oct 2013 08:47:52 +0000 (08:47 +0000)]
Fix check for supported targets in llvm-c lit.local.cfg
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193235
91177308-0d34-0410-b5e6-
96231b3b80d8
Anders Waldenborg [Wed, 23 Oct 2013 08:10:20 +0000 (08:10 +0000)]
Add llvm-c-test tool for testing llvm-c
This provides rudimentary testing of the llvm-c api.
The following commands are implemented:
* --module-dump
Read bytecode from stdin - print ir
* --module-list-functions
Read bytecode from stdin - list summary of functions
* --module-list-globals
Read bytecode from stdin - list summary of globals
* --targets-list
List available targets
* --object-list-sections
Read object file from stdin - list sections
* --object-list-symbols
Read object file from stdin - list symbols (like nm)
* --disassemble
Read lines of triple, hex ascii machine code from stdin - print disassembly
* --calc
Read lines of name, rpn from stdin - print generated module ir
Differential-Revision: http://llvm-reviews.chandlerc.com/D1776
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193233
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Wed, 23 Oct 2013 03:50:25 +0000 (03:50 +0000)]
R600/SI: Replace ffs(x) - 1 with countTrailingZeros(x)
ffs(x) broke the mingw buildbot.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193225
91177308-0d34-0410-b5e6-
96231b3b80d8
Yuchen Wu [Wed, 23 Oct 2013 03:41:03 +0000 (03:41 +0000)]
Test commit. Added whitespace in GCOV.cpp.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193224
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Wed, 23 Oct 2013 02:53:47 +0000 (02:53 +0000)]
R600/SI: fix MIMG writemask adjustement
This fixes piglit:
- shaders/glsl-fs-texture2d-masked
- shaders/glsl-fs-texture2d-masked-4
Patch by: Marek Olšák
Signed-off-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193222
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Wed, 23 Oct 2013 00:44:32 +0000 (00:44 +0000)]
R600: Fix handling of vector kernel arguments
The SelectionDAGBuilder was promoting vector kernel arguments to legal
types, but this won't work for R600 and SI since kernel arguments are
stored in memory and can't be promoted. In order to handle vector
arguments correctly we need to look at the original types from the LLVM IR
function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193215
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Wed, 23 Oct 2013 00:44:24 +0000 (00:44 +0000)]
SelectionDAG: Pass along the original argument/element type in ISD::InputArg
For some targets, it is useful to be able to look at the original
type of an argument without having to dig through the original IR.
This also fixes a bug in SelectionDAGBuilder where InputArg.PartOffset
was not taking into account the offset of structure elements.
Patch by: Justin Holewinski
Tom Stellard:
- Changed the type of ArgVT to EVT, so it can store non-simple types
like v3i32.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193214
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Wed, 23 Oct 2013 00:44:19 +0000 (00:44 +0000)]
R600/SI: Add support for i64 bitwise or
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193213
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Wed, 23 Oct 2013 00:44:12 +0000 (00:44 +0000)]
R600/SI: Use S_LOAD_DWORD instructions for v8i32 and v16i32
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193212
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Tue, 22 Oct 2013 23:41:52 +0000 (23:41 +0000)]
MC: Support multiple sections with the same name in the same comdat group
Code review by Eric Christopher and Rafael Espindola.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193209
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Tue, 22 Oct 2013 21:29:08 +0000 (21:29 +0000)]
[X86][FastISel] Add a comment to help understanding changes made in r192636.
<rdar://problem/
15192473>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193199
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Tue, 22 Oct 2013 21:11:31 +0000 (21:11 +0000)]
R600/SI: Don't assert on SCC usage
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193198
91177308-0d34-0410-b5e6-
96231b3b80d8
Manman Ren [Tue, 22 Oct 2013 20:59:19 +0000 (20:59 +0000)]
Debug Info: code clean up.
Remove unnecessary creation of LexicalScope in collectDeadVariables.
The created LexicialScope was only used to get isAbstractScope, which
should be false from the creation:
"new LexicalScope(NULL, DIDescriptor(SP), NULL, false);".
We can also remove a DenseMap that holds the created LexicalScopes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193196
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Tue, 22 Oct 2013 20:34:30 +0000 (20:34 +0000)]
Whitespace
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193194
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Tue, 22 Oct 2013 20:28:55 +0000 (20:28 +0000)]
DIEHashing: Provide an assert for unreachable functionality regarding friends.
Since (as of r190716) Clang no longer emits debug info for C++ friend
declarations (and it seems GCC never has/does, which was the motivation
for the Clang change), there's no actual reachable case for implementing
the part of DWARF 4, Section 7.27 part 5 that pertains to friends.
Leave an assert here so that if/when we do have a client producing
friends and using type units, we can fill in the gap and add appropriate
(unit and feature) tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193193
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Wilson [Tue, 22 Oct 2013 20:02:36 +0000 (20:02 +0000)]
llvm-cov: Use uint32_t for loop variables to be more consistent.
The loop bounds here are uint32_t variables, so it makes sense for the
loop variables to have the same type.
Patch by Yuchen Wu!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193192
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Wilson [Tue, 22 Oct 2013 19:54:32 +0000 (19:54 +0000)]
llvm-cov: fix a typo and rename a variable.
Rename Size to EndPos, which makes more sense because the variable
stores the last location of the blocks.
Patch by Yuchen Wu!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193189
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Tue, 22 Oct 2013 19:00:39 +0000 (19:00 +0000)]
ARM: provide diagnostics on more writeback LDM/STM instructions
The set of circumstances where the writeback register is allowed to be in the
list of registers is rather baroque, but I think this implements them all on
the assembly parsing side.
For disassembly, we still warn about an ARM-mode LDM even if the architecture
revision is < v7 (the required architecture information isn't available). It's
a silly instruction anyway, so hopefully no-one will mind.
rdar://problem/
15223374
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193185
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Tue, 22 Oct 2013 18:42:03 +0000 (18:42 +0000)]
R600/SI: Use llvm_unreachable() for an always false assert
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193183
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Tue, 22 Oct 2013 18:31:45 +0000 (18:31 +0000)]
R600/SI: Fix warning on non-asserts build
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193180
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Tue, 22 Oct 2013 18:19:10 +0000 (18:19 +0000)]
R600: Simplify handling of private address space
The AMDGPUIndirectAddressing pass was previously responsible for
lowering private loads and stores to indirect addressing instructions.
However, this pass was buggy and way too complicated. The only
advantage it had over the new simplified code was that it saved one
instruction per direct write to private memory. This optimization
likely has a minimal impact on performance, and we may be able
to duplicate it using some other transformation.
For the private address space, we now:
1. Lower private loads/store to Register(Load|Store) instructions
2. Reserve part of the register file as 'private memory'
3. After regalloc lower the Register(Load|Store) instructions to
MOV instructions that use indirect addressing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193179
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Tue, 22 Oct 2013 18:19:01 +0000 (18:19 +0000)]
R600: Remove unused InstrInfo::getMovImmInstr() function
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193178
91177308-0d34-0410-b5e6-
96231b3b80d8
Manman Ren [Tue, 22 Oct 2013 18:15:50 +0000 (18:15 +0000)]
Simplify testing case (Thanks Rafael for the testing case).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193177
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Tue, 22 Oct 2013 18:14:41 +0000 (18:14 +0000)]
DWARF type hashing: pointers to members
Includes a test case/FIXME demonstrating a bug/limitation in pointer to
member hashing. To be honest I'm not sure why we don't just always use
summary hashing for referenced types... but perhaps I'm missing
something.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193175
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Wilson [Tue, 22 Oct 2013 17:43:47 +0000 (17:43 +0000)]
Fix llvm-cov counts to be 64-bit integers to avoid overflows.
Line counts in llvm-cov are read in as 64-bit integers but were being truncated
to 32-bit in collectLineCounts(), which caused overflow for large counts.
This patch fixes all counts to be uint64_t.
Patch by Yuchen Wu!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193172
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Tue, 22 Oct 2013 15:18:03 +0000 (15:18 +0000)]
Speling fixes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193165
91177308-0d34-0410-b5e6-
96231b3b80d8
Alp Toker [Tue, 22 Oct 2013 12:30:55 +0000 (12:30 +0000)]
Fix the -Werror -Wpedantic clang selfhost build
This is a stopgap fix for cast warnings introduced in r192864.
A proper fix should be investigated by the author when possible.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193160
91177308-0d34-0410-b5e6-
96231b3b80d8
Matheus Almeida [Tue, 22 Oct 2013 09:43:32 +0000 (09:43 +0000)]
[mips][msa] Direct Object Emission support for conditional branches.
These branches have a 16-bit offset (R_MIPS_PC16).
List of conditional branch instructions:
bnz.{b,h,w,d}
bnz.v
bz.{b,h,w,d}
bz.v
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193157
91177308-0d34-0410-b5e6-
96231b3b80d8
Elena Demikhovsky [Tue, 22 Oct 2013 09:19:28 +0000 (09:19 +0000)]
AVX-512: aligned / unaligned load and store for 512-bit integer vectors.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193156
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Tue, 22 Oct 2013 08:23:03 +0000 (08:23 +0000)]
Add testcase for PR3168. It was fixed over time.
PR3168
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193152
91177308-0d34-0410-b5e6-
96231b3b80d8
Wan Xiaofei [Tue, 22 Oct 2013 08:02:02 +0000 (08:02 +0000)]
Using FoldingSet in SelectionDAG::getVTList.
VTList has a long life cycle through the module and getVTList is frequently called. In current getVTList, sequential search over a std::vector is used, this is inefficient in big module.
This patch use FoldingSet to implement hashing mechanism when searching.
Reviewer: Nadav Rotem
Test : Pass unit tests & LNT test suite
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193150
91177308-0d34-0410-b5e6-
96231b3b80d8
Anders Waldenborg [Tue, 22 Oct 2013 06:58:34 +0000 (06:58 +0000)]
llvm-c: Add LLVMPrintTypeToString
Differential Revision: http://llvm-reviews.chandlerc.com/D1963
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193149
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Wilson [Tue, 22 Oct 2013 05:09:41 +0000 (05:09 +0000)]
Change llvm-cov output formatting to be more similar to gcov.
- Replaced tabs with proper padding
- print() takes two arguments, which are the GCNO and GCDA filenames
- Files are listed at the top of output, appended by line 0
- Stripped strings of trailing \0s
- Removed last two lines of whitespace in output
Patch by Yuchen Wu!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193148
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Tue, 22 Oct 2013 05:09:40 +0000 (05:09 +0000)]
Clarify SCEV comments.
We handle for(i=n; i>0; i -= s) by canonicalizing within SCEV to for(i=-n; i<0; i += s).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193147
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 22 Oct 2013 04:35:20 +0000 (04:35 +0000)]
Replace (V)MOVZDI2PDIrr/rm instructions with patterns that select (V)MOVDI2PDIrr/rm.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193146
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Tue, 22 Oct 2013 02:29:37 +0000 (02:29 +0000)]
ARM: Thumb2 copy for GPRPair needs to use thumb instructions.
Use tMOVr instead of plain MOVr.
rdar://
15193017
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193139
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Tue, 22 Oct 2013 02:29:35 +0000 (02:29 +0000)]
ARM: Clean up copyPhysReg() a bit.
No functional change, just cleaning things up for readability.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193138
91177308-0d34-0410-b5e6-
96231b3b80d8
Manman Ren [Tue, 22 Oct 2013 01:40:25 +0000 (01:40 +0000)]
TBAA: fix PR17620.
We can have a struct type with a single field and the field does not start
with 0. In that case, we should correctly update the offset.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193137
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Tue, 22 Oct 2013 00:22:39 +0000 (00:22 +0000)]
Formatting/whitespace.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193135
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Wilson [Tue, 22 Oct 2013 00:09:03 +0000 (00:09 +0000)]
Move the printing of llvm-cov information out from collectLineCounts().
collectLineCounts() should only organize the output data. This is done in
anticipation of subsequent changes which will pass in GCNO and GCDA filenames
into the print function where it is printed similar to the gcov output.
Patch by Yuchen Wu!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193134
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Mon, 21 Oct 2013 23:55:19 +0000 (23:55 +0000)]
fix two typos.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193133
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Kaylor [Mon, 21 Oct 2013 23:27:02 +0000 (23:27 +0000)]
FIXME comment shouldn't have been doxygen style
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193131
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 21 Oct 2013 23:14:06 +0000 (23:14 +0000)]
Fix spelling, grammar, and match naming convention for test files.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193130
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Mon, 21 Oct 2013 23:06:19 +0000 (23:06 +0000)]
DWARF Type Hashing: Include reference and rvalue reference type in the declarable summary hashing path
More support for 7.25 Part 5.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193129
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Mon, 21 Oct 2013 22:36:50 +0000 (22:36 +0000)]
DWARF type hashing: begin implementing Step 5, summary hashing in declarable contexts
There are several other tag types that need similar handling but to
ensure test coverage they'll be coming incrementally.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193126
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Kaylor [Mon, 21 Oct 2013 22:35:06 +0000 (22:35 +0000)]
Removing unnecessary link component for MCJIT unittests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193125
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Mon, 21 Oct 2013 20:28:30 +0000 (20:28 +0000)]
DIEHashTest: Correct the order of operands to the TEST macro
And add the 'Test' suffix so the test case name matches the file name.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193119
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Mon, 21 Oct 2013 20:11:47 +0000 (20:11 +0000)]
[AArch64] Add the constraint to NEON scalar mla/mls instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193117
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Mon, 21 Oct 2013 20:07:30 +0000 (20:07 +0000)]
SimplifyCFG: Don't duplicate calls to functions marked noduplicate v2
v2:
- Use CI->cannotDuplicate()
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193115
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 21 Oct 2013 20:04:01 +0000 (20:04 +0000)]
Remove unused TargetLowering field.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193113
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 21 Oct 2013 20:03:58 +0000 (20:03 +0000)]
Fix CodeGen for vectors of pointers with address spaces.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193112
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 21 Oct 2013 20:03:54 +0000 (20:03 +0000)]
Fix CodeGen for different size address space GEPs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193111
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 21 Oct 2013 19:43:56 +0000 (19:43 +0000)]
Use more type helper functions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193109
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 21 Oct 2013 19:24:15 +0000 (19:24 +0000)]
Reuse variable
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193107
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Mon, 21 Oct 2013 19:18:31 +0000 (19:18 +0000)]
Fix the build in DIE.cpp with MSVC 2010
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193106
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Mon, 21 Oct 2013 18:59:40 +0000 (18:59 +0000)]
DWARF type hashing: Handle multiple (including recursive) references to the same type
This uses a map, keeping the type DIE numbering separate from the DIEs
themselves - alternatively we could do things the way GCC does if we
want to add an integer to the DIE type to record the numbering there.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193105
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 21 Oct 2013 18:55:08 +0000 (18:55 +0000)]
Teach SimplifyCFG about address spaces
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193104
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 21 Oct 2013 18:41:10 +0000 (18:41 +0000)]
Fix creating bitcasts between address spaces in SCEV.
The test before wasn't successfully testing this
since it was missing the datalayout piece to change
the size of the second address space.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193102
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 21 Oct 2013 18:08:09 +0000 (18:08 +0000)]
Remove unused SCEV functions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193097
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Mon, 21 Oct 2013 17:51:24 +0000 (17:51 +0000)]
X86 vector element shift-by-immediate instructions take i8 immediates. Make
the instruction defenitions and ISEL reflect this.
Prior to this patch these instructions took an i32i8imm, and the high bits were
dropped during encoding. This led to incorrect behavior for shifts by
immediates higher than 255. This patch fixes that issue by detecting large
immediate shifts and returning constant zero (for logical shifts) or capping
the shift amount at an encodable value (for arithmetic shifts).
Fixes <rdar://problem/
14968098>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193096
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 21 Oct 2013 17:48:51 +0000 (17:48 +0000)]
Fix up some old review feedback.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193095
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Kaylor [Mon, 21 Oct 2013 17:42:06 +0000 (17:42 +0000)]
Improving MCJIT/RuntimeDyld thread safety
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193094
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Mon, 21 Oct 2013 17:28:37 +0000 (17:28 +0000)]
DebugInfo: Put each kind of constant (form, attribute, tag, etc) into its own enum for ease of use.
This allows various variables to be more self-documenting and easier to
debug by being of specific types without overlapping enum values.
Precommit review by Eric Christopher.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193091
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Mon, 21 Oct 2013 17:14:55 +0000 (17:14 +0000)]
Optimize more linkonce_odr values during LTO.
When a linkonce_odr value that is on the dso list is not unnamed_addr
we can still look to see if anything is actually using its address. If
not, it is safe to hide it.
This patch implements that by moving GlobalStatus to Transforms/Utils
and using it in Internalize.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193090
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Mon, 21 Oct 2013 16:37:22 +0000 (16:37 +0000)]
DebugInfo: Hash DW_FORM_GNU_str_index as a string.
Found while adding type safety to the various DWARF enumerations (form,
attribute, tag, etc) that caused Clang to warn on an incompletely
covered switch. Converting the comment to a default/unreachable
uncovered this case of an unsupported form encoding. Seems we were
skipping fission strings entirely.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193089
91177308-0d34-0410-b5e6-
96231b3b80d8
Elena Demikhovsky [Mon, 21 Oct 2013 13:27:34 +0000 (13:27 +0000)]
AVX-512: MUL operation lowering for v8i64
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193083
91177308-0d34-0410-b5e6-
96231b3b80d8
Matheus Almeida [Mon, 21 Oct 2013 13:07:13 +0000 (13:07 +0000)]
[mips][msa] Direct Object Emission support for LD/ST instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193082
91177308-0d34-0410-b5e6-
96231b3b80d8
Matheus Almeida [Mon, 21 Oct 2013 12:56:20 +0000 (12:56 +0000)]
[mips][msa] Direct Object Emission support for LDI instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193081
91177308-0d34-0410-b5e6-
96231b3b80d8
Matheus Almeida [Mon, 21 Oct 2013 12:43:54 +0000 (12:43 +0000)]
[mips][msa] Direct Object Emission support for MOVE.v.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193080
91177308-0d34-0410-b5e6-
96231b3b80d8
Matheus Almeida [Mon, 21 Oct 2013 12:26:50 +0000 (12:26 +0000)]
[mips][msa] Direct Object Emission support for CTCMSA and CFCMSA.
These instructions are logically related as they allow read/write of MSA control registers.
Currently MSA control registers are emitted by number but hopefully that will change as soon
as GAS starts accepting them by name as that would make the assembly easier to read.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193078
91177308-0d34-0410-b5e6-
96231b3b80d8
Matheus Almeida [Mon, 21 Oct 2013 12:07:26 +0000 (12:07 +0000)]
[mips][msa] Direct Object Emission of SPLAT instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193077
91177308-0d34-0410-b5e6-
96231b3b80d8
Matheus Almeida [Mon, 21 Oct 2013 11:47:56 +0000 (11:47 +0000)]
[mips][msa] Fix definition of SLD instruction.
The second parameter of the SLD intrinsic is the number of columns (GPR) to
slide left the source array.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193076
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Gottesman [Mon, 21 Oct 2013 05:20:11 +0000 (05:20 +0000)]
Fix the predecessor removal logic in r193045.
Additionally some small comment/stylistic fixes are included as well.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193068
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Mon, 21 Oct 2013 04:09:17 +0000 (04:09 +0000)]
Don't eliminate a partially redundant load if it's in a landing pad.
A landing pad can be jumped to only by the unwind edge of an invoke
instruction. If we eliminate a partially redundant load in a landing pad, it
will create a basic block that violates this constraint. It then leads to other
problems down the line if it tries to merge that basic block with the landing
pad. Avoid this by not eliminating the load in a landing pad.
PR17621
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193064
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Mon, 21 Oct 2013 00:46:21 +0000 (00:46 +0000)]
Fix typo in test's XFAIL line. Patch by Dimitry Andric!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193063
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Gottesman [Sun, 20 Oct 2013 07:04:37 +0000 (07:04 +0000)]
Teach simplify-cfg how to correctly create covered lookup tables for switches on iN with N >= 3.
One optimization simplify-cfg performs is the converting of switches to
lookup tables if the switch has > 4 cases. This is done by:
1. Finding the max/min case value and calculating the switch case range.
2. Create a lookup table basic block.
3. Perform a check in the switch's BB to see if the input value is in
the switch's case range. If the input value satisfies said predicate
branch to the lookup table BB, otherwise branch to the switch's default
destination BB using the default value as the result.
The conditional check consists of subtracting the min case value of the
table from any input iN value and then ensuring that said value is
unsigned less than the size of the lookup table represented as an iN
value.
If the lookup table is a covered lookup table, the size of the table will be N
which is 0 as an iN value. Thus the comparison will be an `icmp ult` of an iN
value against 0 which is always false yielding the incorrect result.
This patch fixes this problem by recognizing if we have a covered lookup table
and if we do, unconditionally jumps to the lookup table BB since the covering
property of the lookup table implies no input values could not be handled by
said BB.
rdar://
15268442
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193045
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Sun, 20 Oct 2013 03:19:25 +0000 (03:19 +0000)]
Typo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193043
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Sun, 20 Oct 2013 02:16:21 +0000 (02:16 +0000)]
Emit prefix data after debug and EH directives.
This ensures that the prefix data is treated as part of the function for
the purpose of debug info. This provides a better debugging experience,
among other things by allowing a debug info client to correctly look up
a function in debug info given a function pointer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193042
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Sun, 20 Oct 2013 02:16:18 +0000 (02:16 +0000)]
Emit DWARF line entries for all data in the instruction stream.
r182712 attempted to do this, but it failed to handle data emitted via
EmitBytes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193041
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sat, 19 Oct 2013 16:32:15 +0000 (16:32 +0000)]
Remove unused variable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193038
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Sat, 19 Oct 2013 11:27:12 +0000 (11:27 +0000)]
Perform an intelligent splice of the predecessor with the single successor.
If the predecessor's being spliced into a landing pad, then we need the PHIs to
come first and the rest of the predecessor's code to come *after* the landing
pad instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193035
91177308-0d34-0410-b5e6-
96231b3b80d8
Yaron Keren [Sat, 19 Oct 2013 09:04:26 +0000 (09:04 +0000)]
Avoid duplicate search by reusing the iterator.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193034
91177308-0d34-0410-b5e6-
96231b3b80d8
Yaron Keren [Sat, 19 Oct 2013 09:03:20 +0000 (09:03 +0000)]
Added comments from Andrew Kaylor.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193033
91177308-0d34-0410-b5e6-
96231b3b80d8
Yaron Keren [Sat, 19 Oct 2013 07:30:37 +0000 (07:30 +0000)]
Remove NDBEUG from all release types compile flags.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193031
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Sat, 19 Oct 2013 01:04:47 +0000 (01:04 +0000)]
Reformat.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193024
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Sat, 19 Oct 2013 01:04:42 +0000 (01:04 +0000)]
Fix up a few minor performance problems spotted in code review.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193023
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Sat, 19 Oct 2013 00:14:04 +0000 (00:14 +0000)]
Update PPC loop tests after SCEV non-unit-stride checkin r193015.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193021
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Fri, 18 Oct 2013 23:43:53 +0000 (23:43 +0000)]
SCEV should use NSW to get trip count for positive nonunit stride loops.
SCEV currently fails to compute loop counts for nonunit stride
loops. This comes up frequently. It prevents loop optimization and
forces vectorization to insert extra loop checks.
For example:
void foo(int n, int *x) {
for (int i = 0; i < n; i += 3) {
x[i] = i;
x[i+1] = i+1;
x[i+2] = i+2;
}
}
We need to properly handle the case in which limit > INT_MAX-stride. In
the above case: n > INT_MAX-3. In this case the loop counter will step
beyond the limit and overflow at the same time. However, knowing that
signed integer overlow in undefined, we can assume the loop test
behavior is arbitrary after overflow. This obeys both C undefined
behavior rules, and the more strict LLVM poison value rules.
I'm finally fixing this in response to Hal Finkel's persistence.
The most probable reason that we never optimized this before is that
we were being careful to handle case where the developer expected a
side-effect free infinite loop relying on overflow:
for (int i = 0; i < n; i += s) {
++j;
}
return j;
If INT_MAX+1 is a multiple of s and n > INT_MAX-s, then we might
expect an infinite loop. However there are plenty of ways to achieve
this effect without relying on undefined behavior of signed overflow.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193015
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Fri, 18 Oct 2013 23:41:25 +0000 (23:41 +0000)]
Write a simple description of the 'target triple' directive. This should be expanded. PR8976.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193014
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Fri, 18 Oct 2013 23:38:13 +0000 (23:38 +0000)]
Mark some command line flags as hidden
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193013
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Fri, 18 Oct 2013 23:26:55 +0000 (23:26 +0000)]
Clarify that an alignment of 0 or 1 on a mem* intrinsic means 'no alignment'.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193012
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Fri, 18 Oct 2013 23:25:39 +0000 (23:25 +0000)]
YAMLBench.cpp: Use llvm_move instead of std::move also here.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193011
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Fri, 18 Oct 2013 23:11:25 +0000 (23:11 +0000)]
Remove reference to obsolete arguments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193009
91177308-0d34-0410-b5e6-
96231b3b80d8