summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
...
* Initialize BasicAAWrapperPass in it's constructorKeno Fischer2015-10-262-1/+5
| | | | | | | | | | | | Summary: This idiom is used elsewhere in LLVM, but was overlooked here. Reviewers: chandlerc Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D13628 llvm-svn: 251348
* Fix build failure on GCC 4.7 (old libstdc++ doesn't have std::map::emplace).Alexey Samsonov2015-10-261-2/+3
| | | | llvm-svn: 251347
* Remove use of std::map<>::emplace which is not supported on some older ↵David Blaikie2015-10-261-1/+1
| | | | | | versions of libstdc++ llvm-svn: 251346
* Remove unused local variable. NFC.Diego Novillo2015-10-261-2/+0
| | | | llvm-svn: 251344
* Fix tests.Peter Collingbourne2015-10-261-1/+1
| | | | llvm-svn: 251343
* ARM/ELF: Restore original (pre-r251322) logic for deciding whether to use GOT.Peter Collingbourne2015-10-262-2/+2
| | | | | | | Unbreaks linking with gold, which cannot resolve direct relocations referring to global symbols. llvm-svn: 251342
* [LLVMSymbolize] Use symbol table only if function linkage name was requested.Alexey Samsonov2015-10-262-3/+5
| | | | | | | Now it's enough to just specify -functions=short without additionally providing -use-symbol-table=false. llvm-svn: 251339
* Fix build error by fully qualifying llvm::make_unique.Alexey Samsonov2015-10-261-1/+1
| | | | llvm-svn: 251338
* Optimize StringTableBuilder.Rui Ueyama2015-10-261-14/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | This is a patch to improve StringTableBuilder's performance. That class' finalize function is very hot particularly in LLD because the function does tail-merge strings in string tables or SHF_MERGE sections. Generic std::sort-style sorter is not efficient for sorting strings. The function implemented in this patch seems to be more efficient. Here's a benchmark of LLD to link Clang with or without this patch. The numbers are medians of 50 runs. -O0 real 0m0.455s real 0m0.430s (5.5% faster) -O3 real 0m0.487s real 0m0.452s (7.2% faster) Since that is a benchmark of the whole linker, the speedup of StringTableBuilder itself is much more than that. http://reviews.llvm.org/D14053 llvm-svn: 251337
* [LLVMSymbolize] Use std::unique_ptr more extensively to clarify ownership.Alexey Samsonov2015-10-262-14/+14
| | | | llvm-svn: 251336
* [RS4GC] Strip noalias attribute after statepoint rewriteIgor Laevsky2015-10-266-3/+92
| | | | | | | | | We should remove noalias along with dereference and dereference_or_null attributes because statepoint could potentially touch the entire heap including noalias objects. Differential Revision: http://reviews.llvm.org/D14032 llvm-svn: 251333
* SamplePGO - Add optimization reports.Diego Novillo2015-10-263-6/+222
| | | | | | | | | | | | | | | | | | | | | | | This adds a couple of optimization remarks to the SamplePGO transformation. When it decides to inline a hot function (to mimic the inline stack and repeat useful inline decisions in the original build). It will also report branch destinations. For instance, given the code fragment: 6 if (i < 1000) 7 sum -= i; 8 else 9 sum += -i * rand(); If the 'else' branch is taken most of the time, building this code with -Rpass=sample-profile will produce: a.cc:9:14: remark: most popular destination for conditional branches at small.cc:6:9 [-Rpass=sample-profile] sum += -i * rand(); ^ llvm-svn: 251330
* Remove assert(false) in favor of asserting the if conditional it is ↵David Blaikie2015-10-261-8/+5
| | | | | | | | contained within. Also adjust the code to avoid 3 redundant map lookups. llvm-svn: 251327
* Move the canonical header to the top of its matching cpp file as per coding ↵David Blaikie2015-10-261-1/+2
| | | | | | | | | convention This ensures that the header will be verified to be standalone (and avoid mistakes like the one fixed in r251178) llvm-svn: 251326
* Add an (optional) identification block in the bitcodeMehdi Amini2015-10-265-27/+151
| | | | | | | | | | | | | | | | | | | | | | | | Processing bitcode from a different LLVM version can lead to unexpected behavior. The LLVM project guarantees autoupdating bitcode from a previous minor revision for the same major, but can't make any promise when reading bitcode generated from a either a non-released LLVM, a vendor toolchain, or a "future" LLVM release. This patch aims at being more user-friendly and allows a bitcode produce to emit an optional block at the beginning of the bitcode that will contains an opaque string intended to describe the bitcode producer information. The bitcode reader will dump this information alongside any error it reports. The optional block also includes an "epoch" number, monotonically increasing when incompatible changes are made to the bitcode. The reader will reject bitcode whose epoch is different from the one expected. Differential Revision: http://reviews.llvm.org/D13666 From: Mehdi Amini <mehdi.amini@apple.com> llvm-svn: 251325
* [safestack] Fast access to the unsafe stack pointer on AArch64/Android.Evgeniy Stepanov2015-10-268-64/+75
| | | | | | | | | | | | | | | | | | | | | Android libc provides a fixed TLS slot for the unsafe stack pointer, and this change implements direct access to that slot on AArch64 via __builtin_thread_pointer() + offset. This change also moves more code into TargetLowering and its target-specific subclasses to get rid of target-specific codegen in SafeStackPass. This change does not touch the ARM backend because ARM lowers builting_thread_pointer as aeabi_read_tp, which is not available on Android. The previous iteration of this change was reverted in r250461. This version leaves the generic, compiler-rt based implementation in SafeStack.cpp instead of moving it to TargetLoweringBase in order to allow testing without a TargetMachine. llvm-svn: 251324
* BitstreamWriter: Fix integer overflow.Peter Collingbourne2015-10-261-1/+1
| | | | | | | | | | | We were previously overflowing a 32-bit multiply operation when emitting large (>512MB) bitcode files, resulting in corrupted bitcode. Fix by extending one of the operands to 64 bits. There are a few other 32-bit integer types in this code that seem like they also ought to be extended to 64 bits; this will be done separately. llvm-svn: 251323
* ARM/ELF: Better codegen for global variable addresses.Peter Collingbourne2015-10-2619-235/+106
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In PIC mode we were previously computing global variable addresses (or GOT entry addresses) by adding the PC, the PC-relative GOT displacement and the GOT-relative symbol/GOT entry displacement. Because the latter two displacements are fixed, we ended up performing one more addition than necessary. This change causes us to compute addresses using a single PC-relative displacement, resulting in a shorter code sequence. This reduces code size by about 4% in a recent build of Chromium for Android. As a result of this change we no longer need to compute the GOT base address in the ARM backend, which allows us to remove the Global Base Reg pass and SDAG lowering for the GOT. We also now no longer use the GOT when addressing a symbol which is known to be defined in the same linkage unit. Specifically, the symbol must have either hidden visibility or a strong definition in the current module in order to not use the the GOT. This is a change from the previous behaviour where we would use the GOT to address externally visible symbols defined in the same module. I think the only cases where this could matter are cases involving symbol interposition, but we don't really support that well anyway. Differential Revision: http://reviews.llvm.org/D13650 llvm-svn: 251322
* Cleanup test case debug info. NFC.Diego Novillo2015-10-261-1/+1
| | | | llvm-svn: 251320
* Refactor: Simplify boolean conditional return statements in ↵Alexey Samsonov2015-10-261-4/+2
| | | | | | | | | | | | lib/Transforms/Instrumentation Summary: Use clang-tidy to simplify boolean conditional return statements. Differential Revision: http://reviews.llvm.org/D9996 Patch by Richard (legalize@xmission.com)! llvm-svn: 251318
* Check the case that the numerator and denominator are both zeros when ↵Cong Hou2015-10-261-0/+10
| | | | | | | | getting edge probabilities in BPI and return 100% in this case. This issue is triggered in PGO mode when bootstrapping LLVM. It seems that it is not guaranteed that edge weights are always greater than zero which are read from profile data. llvm-svn: 251317
* Move parts of llvm-symbolizer tool into LLVMSymbolize library.Alexey Samsonov2015-10-2611-16/+58
| | | | | | | | | | | | Summary: See http://lists.llvm.org/pipermail/llvm-dev/2015-October/091624.html Reviewers: echristo Subscribers: llvm-commits, aizatsky Differential Revision: http://reviews.llvm.org/D13998 llvm-svn: 251316
* [SystemZ] LTGFR use regclass should be GR32, not GR64.Jonas Paulsson2015-10-262-2/+3
| | | | | | | Discovered by testing int-cmp-44.ll with -verify-machineinstrs (added to test run). llvm-svn: 251299
* [SystemZ] Also clear kill flag for index reg in splitMove().Jonas Paulsson2015-10-262-2/+4
| | | | | | | Discovered by running fp-move-05.ll with -verify-machineinstrs (added to test case run). llvm-svn: 251298
* [SystemZ] Don't forget the CC def op on LTEBRCompare pseudosJonas Paulsson2015-10-262-2/+2
| | | | | | | Discovered by running fp-cmp-02.ll with -verify-machineinstrs (now added to test run). llvm-svn: 251297
* [SystemZ] Tie operands in SystemZShorteInst if MI becomes 2-address.Jonas Paulsson2015-10-262-2/+11
| | | | | | | | Discovered by testing fp-add-02.ll with -verify-machineinstrs. Test case updated to always run with -verify-machineinstrs. llvm-svn: 251296
* [mips] Check for the correct error message in tests for interrupt attributes.Vasileios Kalintiris2015-10-268-39/+33
| | | | | | | | Instead of XFAIL-ing the tests with the wrong usage of the "interrupt" attribute, we should check that we emit the correct error messages to the user. llvm-svn: 251295
* [ValueTracking] Extend r251146 to catch a fairly common caseJames Molloy2015-10-262-2/+35
| | | | | | | | | | | | | Even though we may not know the value of the shifter operand, it's possible we know the shifter operand is non-zero. This can allow us to infer more known bits - for example: %1 = load %p !range {1, 5} %2 = shl %q, %1 We don't know %1, but we do know that it is nonzero so %2[0] is known zero, and importantly %2 is known non-zero. Calling isKnownNonZero is nontrivially expensive so use an Optional to run it lazily and cache its result. llvm-svn: 251294
* [SCEV] Fix issues found during the review of r251283. NFC.Silviu Baranga2015-10-261-7/+8
| | | | | | | | | | | | | | | Summary: Replace (const SCEVAddRecExpr *) with cast<SCEVAddRecExpr>. Rename SCEVApplyRewriter to SCEVLoopAddRecRewriter (which is a more appropriate name) since the description is "takes a scalar evolution expression and applies the Map (Loop -> SCEV) to all AddRecExprs." Subscribers: llvm-commits, sanjoy Differential Revision: http://reviews.llvm.org/D14065 llvm-svn: 251292
* Loop Vectorizer - skipping "bitcast" before GEPElena Demikhovsky2015-10-263-89/+141
| | | | | | | | | | Vectorization of memory instruction (Load/Store) is possible when the pointer is coming from GEP. The GEP analysis allows to estimate the profit. In some cases we have a "bitcast" between GEP and memory instruction. I added code that skips the "bitcast". http://reviews.llvm.org/D13886 llvm-svn: 251291
* Tests: be slightly more specific to avoid conflict with path.Tim Northover2015-10-261-1/+1
| | | | llvm-svn: 251290
* fix test errors (on windows) for commit r251287Igor Breger2015-10-261-2/+2
| | | | llvm-svn: 251288
* AVX512: Enabled VPBROADCASTB lowering for v64i8 vectors.Igor Breger2015-10-262-96/+166
| | | | | | Differential Revision: http://reviews.llvm.org/D13896 llvm-svn: 251287
* [mips] Interrupt attribute support for mips32r2+.Vasileios Kalintiris2015-10-2617-13/+666
| | | | | | | | | | | | | | | | | | | Summary: This patch adds support for using the "interrupt" attribute on Mips for interrupt handling functions. At this time only mips32r2+ with the o32 ABI with the static relocation model is supported. Unsupported configurations will be rejected Patch by Simon Dardis (+ clang-format & some trivial changes to follow the LLVM coding standards by me). Reviewers: mpf, dsanders Subscribers: dsanders, vkalintiris, llvm-commits Differential Revision: http://reviews.llvm.org/D10768 llvm-svn: 251286
* AVX-512: Use correct extract vector length.Igor Breger2015-10-262-1/+12
| | | | | | | | Bug https://llvm.org/bugs/show_bug.cgi?id=25318 Differential Revision: http://reviews.llvm.org/D14062 llvm-svn: 251285
* [SCEV] Factor out common visiting patterns for SCEV rewriters. NFC.Silviu Baranga2015-10-261-93/+44
| | | | | | | | | | | | | | | | | Summary: Add a SCEVRewriteVisitor class which contains the common visiting patterns used when rewriting SCEVs. SCEVParameterRewriter and SCEVApplyRewriter now inherit from SCEVRewriteVisitor (and are therefore much simpler). Reviewers: anemet, mzolotukhin, sanjoy Subscribers: rengolin, llvm-commits, sanjoy Differential Revision: http://reviews.llvm.org/D13242 llvm-svn: 251283
* [InstCombine] Teach instcombine not to create extra PHI nodes when folding GEPsSilviu Baranga2015-10-262-1/+56
| | | | | | | | | | | | | | | | | | Summary: InstCombine tries to transform GEP(PHI(GEP1, GEP2, ..)) into GEP(GEP(PHI(...)) when possible. However, this may leave the old PHI node around. Even if we do end up folding the GEPs, having an extra PHI node might not be beneficial. This change makes the transformation more conservative. We now only do this if the PHI has only one use, and can therefore be removed after the transformation. Reviewers: jmolloy, majnemer Subscribers: mcrosier, mssimpso, llvm-commits Differential Revision: http://reviews.llvm.org/D13887 llvm-svn: 251281
* [ARM] Handle the inline asm constraint type 'o'James Molloy2015-10-263-0/+14
| | | | | | This means "memory with offset" and requires very little plumbing to get working. This fixes PR25317. llvm-svn: 251280
* Drop code after unreachable. No functionality change.Benjamin Kramer2015-10-262-3/+0
| | | | llvm-svn: 251278
* AVX512: Add AVX-512 not materializable instructions. Igor Breger2015-10-262-1/+63
| | | | | | | | | | Otherwise value can be reused , despite its value could be changed - produces incorrect assembler. https://llvm.org/bugs/show_bug.cgi?id=25270 Differential Revision: http://reviews.llvm.org/D14057 llvm-svn: 251275
* [Orc] Add license header to OrcTargetSupport.Lang Hames2015-10-261-1/+9
| | | | llvm-svn: 251274
* [Orc] In the CompileOnDemand layer, wrap module ownership in order to preserveLang Hames2015-10-261-19/+46
| | | | | | | | | | | | the module pointer type passed in by the user. The previous ownership scheme, where the user pointer was always moved into a std::shared_ptr, breaks if the user passes in a raw pointer. Discovered while working on the Orc C API, which should be landing shortly. I expect to include a test-case with that. llvm-svn: 251273
* Update test to take into account for r251271.David Majnemer2015-10-261-1/+1
| | | | llvm-svn: 251272
* [MC] Add support for GNU as-compatible binary operator precedenceDavid Majnemer2015-10-262-4/+88
| | | | | | | | | | GNU as and Darwin give the various binary operators different precedence. LLVM's MC supported the Darwin semantics but not the GNU semantics. This fixes PR25311. llvm-svn: 251271
* [MC] Don't crash when .word is given bogus valuesDavid Majnemer2015-10-263-2/+23
| | | | | | | | | | We didn't validate that the .word directive was given a sane value, leading to crashes when we attempt to write out the object file. Instead, perform some validation and issue a diagnostic pointing at the start of the diagnostic. llvm-svn: 251270
* RegionInfo: Correctly expand regionsTobias Grosser2015-10-251-14/+10
| | | | | | | | | | | | | | | | Instead of playing around with dominance to verify if the possible expansion of a scop region is indeed a single entry single exit region, we now distinguish two cases. In case we only append a basic block, all edges entering this basic block need to have come from within the region that is expanded. In case we join two regions, the source basic blocks of the edges that end at the entry node of the region that is appended most be part of either the original region or the region that is appended. This change will be tested through Polly. This fixes llvm.org/PR25242 llvm-svn: 251267
* Convert assert(false) into llvm_unreachable where it makes sense.Benjamin Kramer2015-10-256-10/+9
| | | | llvm-svn: 251266
* [X86][AVX] Regenerate tests.Simon Pilgrim2015-10-251-10/+10
| | | | llvm-svn: 251263
* docs: document `x` mangling in LangRefSaleem Abdulrasool2015-10-251-0/+2
| | | | | | | Windows has two different mangling specifiers. `x` is used on x86 for the `_` UserLabelPrefix. Others use `w` for the no UserLabelPrefix. llvm-svn: 251260
* [ScalarEvolution] Throw away dead code.Davide Italiano2015-10-251-17/+0
| | | | llvm-svn: 251256
OpenPOWER on IntegriCloud