summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [AST][Sema] Remove CallExpr::setNumArgsBruno Ricci2018-12-036-120/+137
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | CallExpr::setNumArgs is the only thing that prevents storing the arguments in a trailing array. There is only 3 places in Sema where setNumArgs is called. D54900 dealt with one of them. This patch remove the other two calls to setNumArgs in ConvertArgumentsForCall. To do this we do the following changes: 1.) Replace the first call to setNumArgs by an assertion since we are moving the responsability to allocate enough space for the arguments from Sema::ConvertArgumentsForCall to its callers (which are Sema::BuildCallToMemberFunction, and Sema::BuildResolvedCallExpr). 2.) Add a new member function CallExpr::shrinkNumArgs, which can only be used to drop arguments and then replace the second call to setNumArgs by shrinkNumArgs. 3.) Add a new defaulted parameter MinNumArgs to CallExpr and its derived classes which specifies a minimum number of argument slots to allocate. The actual number of arguments slots allocated will be max(number of args, MinNumArgs) with the extra args nulled. Note that after the creation of the call expression all of the arguments will be non-null. It is just during the creation of the call expression that some of the last arguments can be temporarily null, until filled by default arguments. 4.) Update Sema::BuildCallToMemberFunction by passing the number of parameters in the function prototype to the constructor of CXXMemberCallExpr. Here the change is pretty straightforward. 5.) Update Sema::BuildResolvedCallExpr. Here the change is more complicated since the type-checking for the function type was done after the creation of the call expression. We need to move this before the creation of the call expression, and then pass the number of parameters in the function prototype (if any) to the constructor of the call expression. 6.) Update the deserialization of CallExpr and its derived classes. Differential Revision: https://reviews.llvm.org/D54902 Reviewed By: aaron.ballman llvm-svn: 348145
* Fixing -print-module-scope for legacy SCC passesFedor Sergeev2018-12-032-4/+28
| | | | | | | | | | It appears that print-module-scope was not implemented for legacy SCC passes. Fixed to print a whole module instead of just current SCC. Reviewed By: mkazantsev Differential Revision: https://reviews.llvm.org/D54793 llvm-svn: 348144
* [LLD][ELF] - Remove the excessive condition. NFC.George Rimar2018-12-031-1/+1
| | | | | | | | There is no need to check that In.DynSymTab != nullptr, because `includeInDynsym` already checks for `!Config->HasDynSymTab` and `HasDynSymTab` is the pre-condition for In.DynSymTab creation. llvm-svn: 348143
* [AArch64] Add command-line option for SSBSPablo Barrio2018-12-031-0/+9
| | | | | | | | | | | | | | | | | | Summary: SSBS (Speculative Store Bypass Safe) is only mandatory from 8.5 onwards but is optional from Armv8.0-A. This patch adds testing for the ssbs command line option, added to allow enabling the feature in previous Armv8-A architectures to 8.5. Reviewers: olista01, samparker, aemerson Reviewed By: samparker Subscribers: javed.absar, kristof.beyls, cfe-commits Differential Revision: https://reviews.llvm.org/D54961 llvm-svn: 348142
* [SystemZ::TTI] Return zero cost for ICmp that becomes Load And Test.Jonas Paulsson2018-12-032-0/+35
| | | | | | | | | | | | | A loaded value with multiple users compared with 0 will become a load and test single instruction. The load is not folded in this case (multiple users), but the compare instruction is eliminated. This patch returns 0 cost for the icmp in these cases. Review: Ulrich Weigand https://reviews.llvm.org/D55111 llvm-svn: 348141
* [SanitizerCommon] Remove RenameFileEugene Leviant2018-12-034-17/+0
| | | | | | | | | This function seems to be no longer used by compiler-rt libraries Differential revision: https://reviews.llvm.org/D55123 llvm-svn: 348140
* [OpenCL][Sema] Improving formattingMarco Antognini2018-12-031-3/+2
| | | | | | | Reformat comment added in r348120 following review https://reviews.llvm.org/D55136. llvm-svn: 348139
* [libcxx] Implement P0318: unwrap_ref_decay and unwrap_referenceLouis Dionne2018-12-036-36/+145
| | | | | | | | | | | | | | | | | | Summary: This was voted into C++20 in San Diego. Note that there was a revision D0318R2 which did include unwrap_reference_t, but we mistakingly voted P0318R1 into the C++20 Working Draft (which does not include unwrap_reference_t). This patch implements D0318R2, which is what we'll end up with in the Working Draft once this mistake has been fixed. Reviewers: EricWF, mclow.lists Subscribers: christof, dexonsmith, libcxx-commits Differential Revision: https://reviews.llvm.org/D54485 llvm-svn: 348138
* [AArch64] Add command-line option for SSBSPablo Barrio2018-12-0311-34/+48
| | | | | | | | | | | | | | | | | | | | | Summary: SSBS (Speculative Store Bypass Safe) is only mandatory from 8.5 onwards but is optional from Armv8.0-A. This patch adds a command line option to enable SSBS, as it was previously only possible to enable by selecting -march=armv8.5-a. Similar patch upstream in GNU binutils: https://sourceware.org/ml/binutils/2018-09/msg00274.html Reviewers: olista01, samparker, aemerson Reviewed By: samparker Subscribers: javed.absar, kristof.beyls, kristina, llvm-commits Differential Revision: https://reviews.llvm.org/D54629 llvm-svn: 348137
* [PDB] Support PDB-backed expressions evaluation (+ fix stuck test)Aleksandr Urakov2018-12-0312-33/+136
| | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This patch contains several small fixes, which makes it possible to evaluate expressions on Windows using information from PDB. The changes are: - several sanitize checks; - make IRExecutionUnit::MemoryManager::getSymbolAddress to not return a magic value on a failure, because callers wait 0 in this case; - entry point required to be a file address, not RVA, in the ObjectFilePECOFF; - do not crash on a debuggee second chance exception - it may be an expression evaluation crash. Also fix detection of "crushed" threads in tests; - create parameter declarations for functions in AST to make it possible to call debugee functions from expressions; - relax name searching rules for variables, functions, namespaces and types. Now it works just like in the DWARF plugin; - fix endless recursion in SymbolFilePDB::ParseCompileUnitFunctionForPDBFunc. Reviewers: zturner, asmith, stella.stamenova Reviewed By: stella.stamenova, asmith Tags: #lldb Differential Revision: https://reviews.llvm.org/D53759 llvm-svn: 348136
* [CodeComplete] Cleanup access checking in code completionIlya Biryukov2018-12-037-55/+176
| | | | | | | | | | | | | | Summary: Also fixes a crash (see the added 'accessibility-crash.cpp' test). Reviewers: ioeric, kadircet Reviewed By: kadircet Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D55124 llvm-svn: 348135
* [Sema] Avoid CallExpr::setNumArgs in Sema::BuildCallToObjectOfClassTypeBruno Ricci2018-12-031-25/+23
| | | | | | | | | | | | | | | | | | | | | | CallExpr::setNumArgs is the only thing that prevents storing the arguments of a call expression in a trailing array since it might resize the argument array. setNumArgs is only called in 3 places in Sema, and for all of them it is possible to avoid it. This deals with the call to setNumArgs in BuildCallToObjectOfClassType. Instead of constructing the CXXOperatorCallExpr first and later calling setNumArgs if we have default arguments, we first construct a large enough SmallVector, do the promotion/check of the arguments, and then construct the CXXOperatorCallExpr. Incidentally this also avoid reallocating the arguments when the call operator has default arguments but this is not the primary goal. Differential Revision: https://reviews.llvm.org/D54900 Reviewed By: aaron.ballman llvm-svn: 348134
* [clangd] Fix a stale comment, NFC.Haojian Wu2018-12-032-3/+2
| | | | llvm-svn: 348133
* [AMDGPU] Add sdwa support for ADD|SUB U64 decomposed PseudosRon Lieberman2018-12-034-2/+563
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The introduction of S_{ADD|SUB}_U64_PSEUDO instructions which are decomposed into VOP3 instruction pairs for S_ADD_U64_PSEUDO: V_ADD_I32_e64 V_ADDC_U32_e64 and for S_SUB_U64_PSEUDO V_SUB_I32_e64 V_SUBB_U32_e64 preclude the use of SDWA to encode a constant. SDWA: Sub-Dword addressing is supported on VOP1 and VOP2 instructions, but not on VOP3 instructions. We desire to fold the bit-and operand into the instruction encoding for the V_ADD_I32 instruction. This requires that we transform the VOP3 into a VOP2 form of the instruction (_e32). %19:vgpr_32 = V_AND_B32_e32 255, killed %16:vgpr_32, implicit $exec %47:vgpr_32, %49:sreg_64_xexec = V_ADD_I32_e64 %26.sub0:vreg_64, %19:vgpr_32, implicit $exec %48:vgpr_32, dead %50:sreg_64_xexec = V_ADDC_U32_e64 %26.sub1:vreg_64, %54:vgpr_32, killed %49:sreg_64_xexec, implicit $exec which then allows the SDWA encoding and becomes %47:vgpr_32 = V_ADD_I32_sdwa 0, %26.sub0:vreg_64, 0, killed %16:vgpr_32, 0, 6, 0, 6, 0, implicit-def $vcc, implicit $exec %48:vgpr_32 = V_ADDC_U32_e32 0, %26.sub1:vreg_64, implicit-def $vcc, implicit $vcc, implicit $exec Differential Revision: https://reviews.llvm.org/D54882 llvm-svn: 348132
* [AST] Fix an uninitialized bug in the bits of FunctionDeclBruno Ricci2018-12-031-21/+23
| | | | | | | FunctionDeclBits.IsCopyDeductionCandidate was not initialized. This caused a warning with valgrind. llvm-svn: 348131
* [clangd] Get rid of AST matchers in CodeComplete, NFCHaojian Wu2018-12-031-9/+18
| | | | | | | | | | | | | | Summary: The isIndexedForCodeCompletion is called in the code patch of SymbolCollector. Reviewers: kadircet Subscribers: ilya-biryukov, ioeric, MaskRay, jkorous, arphaman, cfe-commits Differential Revision: https://reviews.llvm.org/D55206 llvm-svn: 348130
* Portable Python script across Python versionSerge Guelton2018-12-032-2/+4
| | | | | | | | Python3 does not support type destructuring in function parameters. Differential Revision: https://reviews.llvm.org/D55198 llvm-svn: 348129
* [AST][NFC] Pack CXXDeleteExprBruno Ricci2018-12-034-41/+55
| | | | | | | Use the newly available space in the bit-fields of Stmt. This saves 8 bytes per CXXDeleteExpr. NFC. llvm-svn: 348128
* Portable Python script across versionSerge Guelton2018-12-039-32/+32
| | | | | | | | | Have all classes derive from object: that's implicitly the default in Python3, it needs to be done explicilty in Python2. Differential Revision: https://reviews.llvm.org/D55121 llvm-svn: 348127
* Portable Python script across Python versionSerge Guelton2018-12-036-24/+24
| | | | | | | | | | | | | | Python2 supports the two following equivalent construct raise ExceptionType, exception_value and raise ExceptionType(exception_value) Only the later is supported by Python3. Differential Revision: https://reviews.llvm.org/D55195 llvm-svn: 348126
* [Analyzer] Actually check for -model-path being a directoryIlya Biryukov2018-12-031-5/+6
| | | | | | | The original patch (r348038) clearly contained a typo and checked for '-ctu-dir' twice. llvm-svn: 348125
* [Analysis] Properly prepare test env in test/Analysis/undef-call.cIlya Biryukov2018-12-031-0/+2
| | | | | | The test expectes the '%T/ctudir' to be present, but does not create it. llvm-svn: 348124
* [clang] Do not read from 'test/SemaCXX/Inputs' inside 'test/AST'Ilya Biryukov2018-12-032-1/+38
| | | | | | | Our integrate relies on test inputs being taken from the same diretory as the test itself. llvm-svn: 348123
* ARM: use target-specific SUBS node when combining cmp with cmov.Tim Northover2018-12-038-30/+62
| | | | | | | | | | | This has two positive effects. First, using a custom node prevents recombination leading to an infinite loop since the output DAG is notionally a little more complex than the input one. Using a flag-setting instruction also allows the subtraction to be folded with the related comparison more easily. https://reviews.llvm.org/D53190 llvm-svn: 348122
* [NFC][AArch64] Split out backend featuresDiogo N. Sampaio2018-12-0316-386/+716
| | | | | | | | | | | | | | | | | | | | | This patch splits backend features currently hidden behind architecture versions. For example, currently the only way to activate complex numbers extension is targeting an v8.3 architecture, where after the patch this extension can be added separately. This refactoring is required by the new command lines proposal: http://lists.llvm.org/pipermail/llvm-dev/2018-September/126346.html Reviewers: DavidSpickett, olista01, t.p.northover Subscribers: kristof.beyls, bryanpkc, javed.absar, pbarrio Differential revision: https://reviews.llvm.org/D54633 llvm-svn: 348121
* [OpenCL][Sema] Improve BuildResolvedCallExpr handling of builtinsMarco Antognini2018-12-031-7/+10
| | | | | | | | | | | | | | | | | | | | | Summary: This is a follow-up on https://reviews.llvm.org/D52879, addressing a few issues. This: - adds a FIXME for later improvement for specific builtins: I previously have only checked OpenCL ones and ensured tests cover those. - fixed the CallExpr type. Reviewers: riccibruno Reviewed By: riccibruno Subscribers: yaxunl, Anastasia, kristina, svenvh, cfe-commits Differential Revision: https://reviews.llvm.org/D55136 llvm-svn: 348120
* [LLD][ELF] - Improve the DWARF v5 suport for building .gdb_index.George Rimar2018-12-033-1/+214
| | | | | | | | | | | | Now LLD might build the broken/incomplete .gdb_index when some DWARF v5 sections (like .debug_rnglists and .debug_addr) are used. Particularly, for the case above, we emit an empty address area. A test case is provided and patch fixes the issue. Differential revision: https://reviews.llvm.org/D55109 llvm-svn: 348119
* [CMake] Add LLVM_EXTERNALIZE_DEBUGINFO_OUTPUT_DIR for custom dSYM target ↵Stefan Granitz2018-12-031-1/+8
| | | | | | | | | | | | | | | | directory on Darwin Summary: When using `LLVM_EXTERNALIZE_DEBUGINFO` in LLDB, the default dSYM location for the shared library in LLDB.framework is inside the framework bundle. With `LLVM_EXTERNALIZE_DEBUGINFO_OUTPUT_DIR` we can easily fix that. I consider it a useful feature to be able to set a global output directory for external debug info (rather then having a target-specific one). Only implemented for Darwin so far. Reviewers: beanz, aprantl Reviewed By: aprantl Subscribers: mgorny, aprantl, #lldb, lldb-commits, llvm-commits Differential Revision: https://reviews.llvm.org/D55114 llvm-svn: 348118
* [RISCV] Fix test/MC/Disassembler/RISCV/invalid-instruction.txt after rL347988Alex Bradbury2018-12-031-4/+0
| | | | | | | | | The test for [0x00 0x00] failed due to the introduction of c.unimp. This particular test is unnecessary now that c.unimp was defined (and is tested in test/MC/RISCV/rv32c-valid.s). llvm-svn: 348117
* [CMake] Store path to vendor-specific headers in clang-headers target propertyStefan Granitz2018-12-031-2/+4
| | | | | | | | | | | | | | | | | | | | | Summary: LLDB.framework wants a copy these headers. With this change LLDB can easily glob for the list of files: ``` get_target_property(clang_include_dir clang-headers RUNTIME_OUTPUT_DIRECTORY) file(GLOB_RECURSE clang_vendor_headers RELATIVE ${clang_include_dir} "${clang_include_dir}/*") ``` By default `RUNTIME_OUTPUT_DIRECTORY` is unset for custom targets like `clang-headers`. Reviewers: aprantl, JDevlieghere, davide, friss, dexonsmith Reviewed By: JDevlieghere Subscribers: mgorny, #lldb, cfe-commits, llvm-commits Differential Revision: https://reviews.llvm.org/D55128 llvm-svn: 348116
* [llvm-dwarfdump] - Stop printing the bogus empty section name on invalid dwarf.George Rimar2018-12-032-2/+199
| | | | | | | | | | | | | | | | | | | | | When there is no .debug_addr section for some reason, llvm-dwarfdump would print the bogus empty section name when dumping ranges in .debug_info: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x0) rangelist = 0x00000004 [0x0000000000000000, 0x0000000000000001) "" [0x0000000000000000, 0x0000000000000002) "") That happens because of the code which uses 0 (zero) as a section index as a default value. The code should use -1ULL instead because technically 0 is a valid zero section index in ELF and -1ULL is a special constant used that means "no section available". This is mostly a fix for the overall correctness/safety of the code, but a test case is provided too. Differential revision: https://reviews.llvm.org/D55113 llvm-svn: 348115
* [ARM][MC] Move information about variadic register defs into tablegenOliver Stannard2018-12-0311-39/+23
| | | | | | | | | | | | | | | | | | | Currently, variadic operands on an MCInst are assumed to be uses, because they come after the defs. However, this is not always the case, for example the Arm/Thumb LDM instructions write to a variable number of registers. This adds a property of instruction definitions which can be used to mark variadic operands as defs. This only affects MCInst, because MachineInstruction already tracks use/def per operand in each instance of the instruction, so can already represent this. This property can then be checked in MCInstrDesc, allowing us to remove some special cases in ARMAsmParser::isITBlockTerminator. Differential revision: https://reviews.llvm.org/D54853 llvm-svn: 348114
* [ARM][Asm] Debug trace for the processInstruction loopOliver Stannard2018-12-033-4/+18
| | | | | | | | | | | | | | | | | | | In the Arm assembly parser, we first match an instruction, then call processInstruction to possibly change it to a different encoding, to match rules in the architecture manual which can't be expressed by the table-generated matcher. This adds debug printing so that this process is visible when using the -debug option. To support this, I've added a new overload of MCInst::dump_pretty which takes the opcode name as a StringRef, since we don't have an InstPrinter instance in the assembly parser. Instead, we can get the same information directly from the MCInstrInfo. Differential revision: https://reviews.llvm.org/D54852 llvm-svn: 348113
* [KMSAN] Enable -msan-handle-asm-conservative by defaultAlexander Potapenko2018-12-033-34/+77
| | | | | | | | | | This change enables conservative assembly instrumentation in KMSAN builds by default. It's still possible to disable it with -msan-handle-asm-conservative=0 if something breaks. It's now impossible to enable conservative instrumentation for userspace builds, but it's not used anyway. llvm-svn: 348112
* [GlobalISel] Fix test irtranslator-stackprotect-check.llPetr Pavlu2018-12-031-10/+10
| | | | | | | Fix for commit r347862. Use correct AArch64 triple in test CodeGen/AArch64/GlobalISel/irtranslator-stackprotect-check.ll. llvm-svn: 348111
* [ARM] FP16: support vld1.16 for vector loads with post-incrementSjoerd Meijer2018-12-032-0/+50
| | | | | | Differential Revision: https://reviews.llvm.org/D55112 llvm-svn: 348110
* [PowerPC] Fix inconsistent ImmMustBeMultipleOf for same instructionKang Zhang2018-12-032-4/+174
| | | | | | | | | | | | | Summary: There are 4 instructions which have Inconsistent ImmMustBeMultipleOf in the function PPCInstrInfo::instrHasImmForm, they are LFS, LFD, STFS, STFD. These four instructions should set the ImmMustBeMultipleOf to 1 instead of 4. Reviewed By: steven.zhang Differential Revision: https://reviews.llvm.org/D54738 llvm-svn: 348109
* [NFC] [PowerPC] add an routine in PPCTargetLowering to determine if a global ↵QingShan Zhang2018-12-033-15/+36
| | | | | | | | | | | is accessed as got-indirect or not. In theory, we should let the PPC target to determine how to lower the TOC Entry for globals. And the PPCTargetLowering requires this query to do some optimization for TOC_Entry. Differential Revision: https://reviews.llvm.org/D54925 llvm-svn: 348108
* [gn build] Fix cosmetic bug in write_cmake_config.pyNico Weber2018-12-021-4/+4
| | | | | | | | | | | | Before, #cmakedefine FOO resulted in #define FOO with a trailing space if FOO was set to something truthy. Make it so that it's just #define FOO without a trailing space. No functional difference. Differential Revision: https://reviews.llvm.org/D55172 llvm-svn: 348107
* [gn build] Slightly simplify write_cmake_config.Nico Weber2018-12-021-27/+18
| | | | | | | | | | | | | | | | | | | Before, the script had a bunch of special cases for #cmakedefine and #cmakedefine01 and then did general variable substitution. Now, the script always does general variable substitution for all lines and handles the special cases afterwards. This has no observable effect for the inputs we use, but is easier to explain and slightly easier to implement. Also mention to link to CMake's configure_file() in the docstring. (The new behavior doesn't quite match CMake on lines like #cmakedefine ${FOO}, but nobody does that.) Differential Revision: https://reviews.llvm.org/D55171 llvm-svn: 348106
* [gn build] Add build files for llvm/lib/Analysis and llvm/lib/ProfileDataNico Weber2018-12-022-0/+129
| | | | | | Differential Revision: https://reviews.llvm.org/D55166 llvm-svn: 348105
* [X86] Add a DAG combine to turn stores of vXi1 on pre-avx512 targets into a ↵Craig Topper2018-12-022-5888/+527
| | | | | | bitcast and a store of a iX scalar. llvm-svn: 348104
* [X86] Fix bad comment. NFCCraig Topper2018-12-021-1/+1
| | | | llvm-svn: 348103
* Replace FullComment member being visited with parameterStephen Kelly2018-12-021-37/+49
| | | | | | | | | | Reviewers: aaron.ballman Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D55070 llvm-svn: 348101
* Extend the CommentVisitor with parameter typesStephen Kelly2018-12-021-13/+16
| | | | | | | | | | | | | | Summary: This has precedent in the StmtVisitor. This change will make it possible to clean up the comment handling in ASTDumper. Reviewers: aaron.ballman Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D55069 llvm-svn: 348100
* Remove unecessary methodsStephen Kelly2018-12-021-10/+0
| | | | | | The base class calls VisitExpr llvm-svn: 348099
* [test] Fix use of 'sort -b' in SimpleLoopUnswitch on NetBSDMichal Gorny2018-12-023-9/+9
| | | | | | | | | | | | Add '-k 1' to 'sort -b' calls in SimpleLoopUnswitch tests, as required for sort implementation on NetBSD. The '-b' modifier is ineffective if specified without any key. Per the manpage: Note that the -b option has no effect unless key fields are specified. Differential Revision: https://reviews.llvm.org/D55168 llvm-svn: 348097
* [test] Fix ScalarEvolution test to allow __func__ with prototypeMichal Gorny2018-12-021-123/+123
| | | | | | | | | | | | | | | | | | | | Fix ScalarEvolution/solve-quadratic.ll test to account for __func__ output listing the complete function prototype rather than just its name, as it does on NetBSD. Example Linux output: GetQuadraticEquation: addrec coeff bw: 4 GetQuadraticEquation: equation -2x^2 + -2x + -4, coeff bw: 5, multiplied by 2 Example NetBSD output: llvm::Optional<std::tuple<llvm::APInt, llvm::APInt, llvm::APInt, llvm::APInt, unsigned int> > GetQuadraticEquation(const llvm::SCEVAddRecExpr*): addrec coeff bw: 4 llvm::Optional<std::tuple<llvm::APInt, llvm::APInt, llvm::APInt, llvm::APInt, unsigned int> > GetQuadraticEquation(const llvm::SCEVAddRecExpr*): equation -2x^2 + -2x + -4, coeff bw: 5, multiplied by 2 Differential Revision: https://reviews.llvm.org/D55162 llvm-svn: 348096
* [test] Fix BugPoint/compile-custom.ll to use detected python execMichal Gorny2018-12-021-1/+1
| | | | | | | | | | Spawn the custom compile command in BugPoint/compile-custom.ll via %python rather than relying on implicit 'env python' shebang, in order to fix it on systems that don't have 'python' executable such as NetBSD. Differential Revision: https://reviews.llvm.org/D55161 llvm-svn: 348095
* Fix whitespaceStephen Kelly2018-12-021-1/+1
| | | | llvm-svn: 348094
OpenPOWER on IntegriCloud