summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* [ARM] Make sure GlobalISel is only initialized once. NFCIDiana Picus2016-11-151-12/+12
| | | | | | | | | Move some code inside the proper 'if' block to make sure it is only run once, when the subtarget is first created. Things can still break if we use different ARM target machines or if we have functions with different 'target-cpu' or 'target-features', we should fix that too in the future. llvm-svn: 286974
* [clang-format] Fixed line merging of more than two linesCameron Desrochers2016-11-152-1/+25
| | | | | | Differential Revision: https://reviews.llvm.org/D19063 llvm-svn: 286973
* [PowerPC] Implement BE VSX load/store builtins - clang portion.Tony Jiang2016-11-156-3/+311
| | | | | | | | | | | | This patch implements all the overloads for vec_xl_be and vec_xst_be. On BE, they behaves exactly the same with vec_xl and vec_xst, therefore they are simply implemented by defining a matching macro. On LE, they are implemented by defining new builtins and intrinsics. For int/float/long long/double, it is just a load (lxvw4x/lxvd2x) or store(stxvw4x/stxvd2x). For char/char/short, we also need some extra shuffling before or after call the builtins to get the desired BE order. For int128, simply call vec_xl or vec_xst. llvm-svn: 286971
* [LoopVectorizer] When estimating reg usage, unused insts may "end" another useRobert Lougher2016-11-153-4/+139
| | | | | | | | | | | | | | | | | | | | | | | | | | | The register usage algorithm incorrectly treats instructions whose value is not used within the loop (e.g. those that do not produce a value). The algorithm first calculates the usages within the loop. It iterates over the instructions in order, and records at which instruction index each use ends (in fact, they're actually recorded against the next index, as this is when we want to delete them from the open intervals). The algorithm then iterates over the instructions again, adding each instruction in turn to a list of open intervals. Instructions are then removed from the list of open intervals when they occur in the list of uses ended at the current index. The problem is, instructions which are not used in the loop are skipped. However, although they aren't used, the last use of a value may have been recorded against that instruction index. In this case, the use is not deleted from the open intervals, which may then bump up the estimated register usage. This patch fixes the issue by simply moving the "is used" check after the loop which erases the uses at the current index. Differential Revision: https://reviews.llvm.org/D26554 llvm-svn: 286969
* [PowerPC] Implement BE VSX load/store builtins - llvm portion.Tony Jiang2016-11-154-1/+71
| | | | | | | | | | | | This patch implements all the overloads for vec_xl_be and vec_xst_be. On BE, they behaves exactly the same with vec_xl and vec_xst, therefore they are simply implemented by defining a matching macro. On LE, they are implemented by defining new builtins and intrinsics. For int/float/long long/double, it is just a load (lxvw4x/lxvd2x) or store(stxvw4x/stxvd2x). For char/char/short, we also need some extra shuffling before or after call the builtins to get the desired BE order. For int128, simply call vec_xl or vec_xst. llvm-svn: 286967
* Get GlobalISel to build on Linux after r286407Diana Picus2016-11-151-1/+1
| | | | | | | r286407 has introduced calls to llvm::AddLandingPadInfo, which lives in the SelectionDAG component. Add it to LLVMBuild to avoid linker failures on Linux. llvm-svn: 286962
* [X86][FastISel] Assert that we are dealing with arithmetic with overflow ↵Zvi Rackover2016-11-151-0/+3
| | | | | | intrinsics. NFC llvm-svn: 286961
* [AMDGPU] TableGen: change individual instruction flags to bit type from bits<1>Sam Kolton2016-11-153-47/+47
| | | | | | | | | | | | Summary: This is needed to be able to use this flags in InstrMappings. Reviewers: tstellarAMD, vpykhtin Subscribers: arsenm, kzhuravl, wdng, nhaehnle, yaxunl, tony-tye Differential Revision: https://reviews.llvm.org/D26666 llvm-svn: 286960
* [X86][FastISel] Fix lowering of overflow result on AVX512 targetsZvi Rackover2016-11-152-10/+10
| | | | | | | | | | | | | | | | Summary: Fix a case where the overflow value of type i1, which is legal on AVX512, was assigned to a VK1 register class. We always want this value to be assigned to a GPR since the overflow return value is lowered to a SETO instruction. Fixes pr30981. Reviewers: mkuper, igorb, craig.topper, guyblank, qcolombet Subscribers: qcolombet, llvm-commits Differential Revision: https://reviews.llvm.org/D26620 llvm-svn: 286958
* Test commit, remove trailing space.Florian Hahn2016-11-151-1/+1
| | | | | | This commit is used to test commit access. llvm-svn: 286957
* clang format include/llvm/Support/ELF.h. NFC.Rafael Espindola2016-11-151-700/+671
| | | | llvm-svn: 286956
* [ELF] Don't check Out<ELFT>::RelaPlt as it's always non-zero. NFCEugene Leviant2016-11-151-2/+2
| | | | llvm-svn: 286955
* DWARFAbbreviationDeclaration.h: Fix a typo in r286924. [-Wdocumentation]NAKAMURA Takumi2016-11-151-1/+1
| | | | llvm-svn: 286954
* [OPENMP] Fix for PR30632: Name mangling issue.Alexey Bataev2016-11-152-6/+10
| | | | | | | | Reworked fix after comments from Richard Smith. We must skip all CapturedDecl-based contexts when trying to get correct mangling number context. llvm-svn: 286953
* [test] Correctly include build llvm_shlib_dir in stand-alone buildsMichal Gorny2016-11-151-1/+6
| | | | | | | | | | | | | | | | Add the build llvm_shlib_dir into LD_LIBRARY_PATH before the directory specified as llvm_libs_dir, in order to fix stand-alone builds attempting to use installed clang libraries. In case of stand-alone builds llvm_libs_dir specifies the location of installed LLVM libraries which can also contain an older version (previous build) of clang libraries. Therefore, ensure to specify llvm_shlib_dir (which is always the build tree path) before the potentially-system llvm_libs_dir. Differential Revision: https://reviews.llvm.org/D26115 llvm-svn: 286952
* Introduce TLI predicative for base-relative Jump Tables.Joerg Sonnenberger2016-11-154-38/+10
| | | | | | | | | | | For 64bit ABIs it is common practice to use relative Jump Tables with potentially different relocation bases. As the logic for the jump table itself doesn't depend on the relocation base, make it easier for targets to use the generic logic. Start by dropping the now redundant MIPS logic. Differential Revision: https://reviews.llvm.org/D26578 llvm-svn: 286951
* [ELF] Convert DynamicSection to input section.Eugene Leviant2016-11-156-268/+256
| | | | | | | | | | | | | | | | This patch introduces the following changes: - DynamicSection now inherits InputSection<ELFT> and was moved to SyntheticSections.h/.cpp. - Link and Entsize fields of DynamicSection are propagated to its output section - In<ELFT>::SyntheticSections was removed. - Finalization of synthetic sections was removed from OutputSection<ELFT>::finalize. Now finalizeSyntheticSections is used instead. Differential revision: https://reviews.llvm.org/D26603 llvm-svn: 286950
* [ARM] Add machine scheduler for Cortex-R52 Javed Absar2016-11-154-1/+1024
| | | | | | | | | | | | | This patch adds the Sched Machine Model for Cortex-R52. Details of the pipeline and descriptions are in comments in file ARMScheduleR52.td included in this patch. Reviewers: rengolin, jmolloy Differential Revision: https://reviews.llvm.org/D26500 llvm-svn: 286949
* Fix uninitialized members.Sam McCall2016-11-153-10/+7
| | | | | | | | | | | | Summary: Fix uninitialized members. Reviewers: jingham Subscribers: jingham, lldb-commits Differential Revision: https://reviews.llvm.org/D26528 llvm-svn: 286947
* Fix -Wunused introduced in r286945 for release builds.Daniel Sanders2016-11-151-0/+2
| | | | llvm-svn: 286946
* [tablegen] Extract portions of AsmMatcherEmitter for re-use by another ↵Daniel Sanders2016-11-154-89/+158
| | | | | | | | | | | | | | | | | | | generator. NFC. Summary: This change is preparation for a change that will allow targets to verify that the instructions they emit meet the predicates they specify. This is useful to ensure that C++ legalization/lowering/instruction-selection doesn't incorrectly select code for a different subtarget than intended. Such cases are not caught by the integrated assembler when emitting instructions directly to an object file. Reviewers: qcolombet Subscribers: qcolombet, beanz, mgorny, llvm-commits, modocache Differential Revision: https://reviews.llvm.org/D25614 llvm-svn: 286945
* [OPENMP] Fixed codegen for 'omp cancel' construct.Alexey Bataev2016-11-153-7/+70
| | | | | | | | | If 'omp cancel' construct is used in a worksharing construct it may cause hanging of the software in case if reduction clause is used. Patch fixes this problem by avoiding extra reduction processing for branches that were canceled. llvm-svn: 286944
* [clang-move] Make the output code look more pretty.Haojian Wu2016-11-152-8/+95
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Add decent blank lines between declarations: * Add extra blank line after #define or #includes. * Add extra blank line between declarations. * Add extra blank line in front of #endif. Previously, the new generated code is quite tight: ``` #ifndef FOO_H #define FOO_H namespace a { class A { public: int f(); }; int A::f() { return 0; } } // namespace a #endif // FOO_H ``` After this patch, the code looks like: ``` #ifndef FOO_H #define FOO_H namespace a { class A { public: int f(); }; int A::f() { return 0; } } // namespace a #endif // FOO_H ``` Reviewers: ioeric Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D26493 llvm-svn: 286943
* [opt-viewer] Add support for libYAML for faster parsingAdam Nemet2016-11-151-2/+12
| | | | | | | | | | | | | | | | | | | | | | This results in a speed-up of over 6x on sqlite3. Before: $ time -p /org/llvm/utils/opt-viewer/opt-viewer.py ./MultiSource/Applications/sqlite3/CMakeFiles/sqlite3.dir/sqlite3.c.opt.yaml html real 415.07 user 410.00 sys 4.66 After with libYAML: $ time -p /org/llvm/utils/opt-viewer/opt-viewer.py ./MultiSource/Applications/sqlite3/CMakeFiles/sqlite3.dir/sqlite3.c.opt.yaml html real 63.96 user 60.03 sys 3.67 I followed these steps to get libYAML working with PyYAML: http://rmcgibbo.github.io/blog/2013/05/23/faster-yaml-parsing-with-libyaml/ llvm-svn: 286942
* [ELF] - Do not create reserved symbols in case of relocatable output.George Rimar2016-11-156-4/+36
| | | | | | | | | | | This patch stops creating symbols like __ehdr_start, _end/_etext_edata,__tls_get_addr when using -r. This fixes PR30984. Differential revision: https://reviews.llvm.org/D26600 llvm-svn: 286941
* [ELF] - Better diagnostic for relative relocation to an absolute value error.George Rimar2016-11-159-34/+40
| | | | | | | | | | | | | | Patch adds a filename to that error message. I faced next error when debugged one of FreeBSD port: error: relocation R_X86_64_PLT32 cannot refer to absolute symbol __tls_get_addr error message was poor and this patch improves it to show the locations of symbol declaration and using. Differential revision: https://reviews.llvm.org/D26508 llvm-svn: 286940
* [ELF] - Allow symbols of STT_NOTYPE to be associated with SHT_SYMTAB sections.George Rimar2016-11-152-5/+31
| | | | | | | | | | | | | | | | | | | | Found this when tried to link lang/ccl FreeBSD port. Issue is very close to D23201. This is the reason of lang/ccl port link fail. GNU assembler 2.17.50 [FreeBSD] 2007-07-03 could generate broken objects, where notype symbols are associated with symtab: ... [ 9] .symtab SYMTAB 0000000000000000 00003c78 0000000000006858 0000000000000018 10 803 8 ... 192: 000000000000000d 0 NOTYPE LOCAL DEFAULT 9 _cons_org Patch allows to handle such objects. Differential revision: https://reviews.llvm.org/D26613 llvm-svn: 286939
* DAGCombiner: fix combine of trunc and selectAsaf Badouh2016-11-152-29/+34
| | | | | | | | | | | | | bugzilla: https://llvm.org/bugs/show_bug.cgi?id=29002 pr29002 Differential Revision: https://reviews.llvm.org/D26449 llvm-svn: 286938
* Avoid creating reference from nullptr.Vitaly Buka2016-11-151-7/+7
| | | | | | | | | | | | | | Summary: getFile() can return nullptr. This usually happens when Rels is empty so the reference is never used. Still UBSAN complains. Reviewers: rafael Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D26662 llvm-svn: 286937
* TableGen: Add operator !orMatt Arsenault2016-11-157-4/+23
| | | | llvm-svn: 286936
* [X86][GlobalISel] Add minimal call lowering support to the IRTranslatorZvi Rackover2016-11-159-2/+229
| | | | | | | | | | | | | | | Summary: Add basic functionality to support call lowering for X86. Currently only supports functions which return void and take zero arguments. Inspired by commit 286573. Reviewers: ab, qcolombet, t.p.northover Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D26593 llvm-svn: 286935
* [AVX-512] Add an example test case for PR31018.Craig Topper2016-11-151-0/+13
| | | | llvm-svn: 286934
* [X86] Add LLVM version number for each intrinsic handled by auto upgrade for ↵Craig Topper2016-11-151-152/+158
| | | | | | | | | | age tracking. One day we'd like to remove some of this autoupgrade support and it will be easier if we know how long some of it has been around. Differential Revision: https://reviews.llvm.org/D26321 llvm-svn: 286933
* Missed one of the try blocks the first time :-(. Thanks to Renato for the ↵Marshall Clow2016-11-151-3/+13
| | | | | | heads up. llvm-svn: 286932
* AMDGPU: Fix f16 fabs/fnegMatt Arsenault2016-11-156-15/+312
| | | | llvm-svn: 286931
* [ORC] Work around an apparent modules/linkage issue.Lang Hames2016-11-151-0/+8
| | | | | | <rdar://problem/29247092> llvm-svn: 286930
* [asan] Fixup to r286608 that makes the test pass on iOS.Anna Zaks2016-11-151-0/+4
| | | | | | | TARGET_OS_IPHONE is defined in TargetConditionals.h. Without the include the iOS path is never triggered. llvm-svn: 286929
* Simplify identify_magic.Rui Ueyama2016-11-151-26/+23
| | | | | | This patch defines a memcmp-ish helper function to simplify identify_magic. llvm-svn: 286928
* [analyzer] Rename assumeWithinInclusiveRange*()Dominic Chen2016-11-156-62/+60
| | | | | | | | | | | | Summary: The name is slightly confusing, since the constraint is not necessarily within the range unless `Assumption` is true. Split out renaming for ConstraintManager.h from D26061 Reviewers: zaks.anna, dcoughlin Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D26644 llvm-svn: 286927
* Change the kernel searching code to not go through theJason Molenda2016-11-151-17/+37
| | | | | | | | | | | | memory cache subsystem so we're reading only the 4 bytes needed to check for the magic word at the start of a mach-o binary instead of the default 512 block. It can be a small performance help to reduce the size of memory reads from possibly unmapped memory. <rdar://problem/29256385> llvm-svn: 286926
* [analyzer] Minor optimization: avoid setting state if unchangedDominic Chen2016-11-151-4/+6
| | | | | | | | | | | | Summary: Split out optimization from D26061 Reviewers: zaks.anna, dcoughlin Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D26642 llvm-svn: 286925
* Improve DWARF parsing speed by improving DWARFAbbreviationDeclarationGreg Clayton2016-11-157-48/+215
| | | | | | | | | | | | | | | | | | | | This patch gets a DWARF parsing speed improvement by having DWARFAbbreviationDeclaration instances know if they have a fixed byte size. If an abbreviation has a fixed byte size that can be calculated given a DWARFUnit, then parsing a DIE becomes two steps: parse ULEB128 abbrev code, and then add constant size to the offset. This patch also adds a fixed byte size to each DWARFAbbreviationDeclaration::AttributeSpec so that attributes can quickly skip their values if needed without the need to lookup the fixed for size. Notable improvements: - DWARFAbbreviationDeclaration::findAttributeIndex() now returns an Optional<uint32_t> instead of a uint32_t and we no longer have to look for the magic -1U return value - Optional<uint32_t> DWARFAbbreviationDeclaration::findAttributeIndex(dwarf::Attribute attr) const; - DWARFAbbreviationDeclaration now has a getAttributeValue() function that extracts an attribute value given a DIE offset that takes advantage of the DWARFAbbreviationDeclaration::AttributeSpec::ByteSize - bool DWARFAbbreviationDeclaration::getAttributeValue(const uint32_t DIEOffset, const dwarf::Attribute Attr, const DWARFUnit &U, DWARFFormValue &FormValue) const; - A DWARFAbbreviationDeclaration instance can return a fixed byte size for itself so DWARF parsing is faster: - Optional<size_t> DWARFAbbreviationDeclaration::getFixedAttributesByteSize(const DWARFUnit &U) const; - Any functions that used to take a "const DWARFUnit *U" that would crash if U was NULL now take a "const DWARFUnit &U" and are only called with a valid DWARFUnit Differential Revision: https://reviews.llvm.org/D26567 llvm-svn: 286924
* Identify object files compiled with cl.exe /GL.Rui Ueyama2016-11-153-0/+7
| | | | | | | | | | Object files compiled with cl.exe /GL contain intermediate code for LTO. We can't (and don't want to) interpret such code, but we should print out a user-friendly error message. Differential Revision: https://reviews.llvm.org/D26647 llvm-svn: 286921
* Fix -Wswitch.Rui Ueyama2016-11-152-0/+2
| | | | llvm-svn: 286920
* Add a file magic for CL.exe's object file created with /GL.Rui Ueyama2016-11-154-11/+14
| | | | | | | | | | | | This patch makes it possible to identify object files created by CL.exe with /GL option. Such file contains Microsoft proprietary intermediate code instead of target machine code to do LTO. I need this to print out user-friendly error message from LLD. Differential Revision: https://reviews.llvm.org/D26645 llvm-svn: 286919
* [ORC] Temporarily disable RPCUtils unit test.Lang Hames2016-11-151-152/+153
| | | | | | | This broke s390x due to a bug in the QueueChannel implementation that led to it infinite-looping. Disabling it while I look into a fix. llvm-svn: 286917
* Fix some more Printf warnings.Zachary Turner2016-11-151-2/+3
| | | | llvm-svn: 286916
* Fix some more StringRef printf warnings.Zachary Turner2016-11-153-3/+3
| | | | llvm-svn: 286915
* llvm-strings: support the `-n` optionSaleem Abdulrasool2016-11-152-3/+37
| | | | | | | | | Permit specifying the match length (the `-n` or `--bytes` option). The deprecated `-[length]` form is not supported as an option. This allows the strings tool to display only the specified length strings rather than the hardcoded default length of >= 4. llvm-svn: 286914
* AMDGPU: Set hasExtraSrcRegAllocReq on v_div_scale_*Matt Arsenault2016-11-151-0/+2
| | | | | | | This doesn't solve any problems I know about, but this should have more conservative assumptions about the operands' llvm-svn: 286913
OpenPOWER on IntegriCloud