Skip to content
  1. Feb 28, 2018
    • Vedant Kumar's avatar
      [InstrProfiling] Emit the runtime hook when no counters are lowered · 9a041a75
      Vedant Kumar authored
      The API verification tool tapi has difficulty processing frameworks
      which enable code coverage, but which have no code. The profile lowering
      pass does not emit the runtime hook in this case because no counters are
      lowered.
      
      While the hook is not needed for program correctness (the profile
      runtime doesn't have to be linked in), it's needed to allow tapi to
      validate the exported symbol set of instrumented binaries.
      
      It was not possible to add a workaround in tapi for empty binaries due
      to an architectural issue: tapi generates its expected symbol set before
      it inspects a binary. Changing that model has a higher cost than simply
      forcing llvm to always emit the runtime hook.
      
      rdar://36076904
      
      Differential Revision: https://reviews.llvm.org/D43794
      
      llvm-svn: 326350
      9a041a75
    • Artem Belevich's avatar
      [NVPTX] Removed always-true predicates in NVPTX. · 18a7c515
      Artem Belevich authored
      NVPTX stopped supporting GPUs older than sm_20 (Fermi) quite a while back.
      Removal of support of pre-Fermi GPUs made a lot of predicates in the NVPTX
      backend pointless as they can't ever be false any more.
      It's time to retire them. NFC intended.
      
      Differential Revision: https://reviews.llvm.org/D43843
      
      llvm-svn: 326349
      18a7c515
    • Rui Ueyama's avatar
      Add "%" operator to the linker script. · 39ba31ff
      Rui Ueyama authored
      This patch improves compatibility with GNU linkers.
      
      Differential Revision: https://reviews.llvm.org/D43883
      
      llvm-svn: 326348
      39ba31ff
    • Rui Ueyama's avatar
      Inline a trivial function. NFC. · 1d20222a
      Rui Ueyama authored
      llvm-svn: 326347
      1d20222a
    • Mandeep Singh Grang's avatar
      [RISCV] Force enable int128 for compiling long double routines · d34e8761
      Mandeep Singh Grang authored
      Summary:
      For RISCV32, we must force enable int128 for compiling long double routines using the flag -fforce-enable-int128.
      
      Related clang patch: https://reviews.llvm.org/D43105
      
      Reviewers: asb, kito-cheng, apazos, compnerd, howard.hinnant
      
      Reviewed By: kito-cheng
      
      Subscribers: shiva0217, efriedma, mgorny, hintonda, llvm-commits, #sanitizers
      
      Differential Revision: https://reviews.llvm.org/D43106
      
      llvm-svn: 326346
      d34e8761
    • Zachary Turner's avatar
      Fix use after free in PDB linker. · 3868cfd5
      Zachary Turner authored
      When merging in types from a type server PDB, we would use a
      pointer into the type server PDB's mapped file buffer directly
      to avoid copying data.  However, we would close the type server
      PDB after we finished merging in its types, which would unmap
      all of its memory.  This would lead to a use after free.
      
      We fix this by making a strong reference in the PDBLinker class
      to all referenced type server PDBs, thereby making it safe to
      hold pointers into its memory mapped contents.
      
      This fixes llvm.org/pr36455
      
      Differential Revision: https://reviews.llvm.org/D43834
      
      llvm-svn: 326345
      3868cfd5
    • Rafael Espindola's avatar
      Simplify. NFC. · 367bfce6
      Rafael Espindola authored
      llvm-svn: 326344
      367bfce6
    • Roman Tereshin's avatar
      [GlobalISel] Print/Parse FailedISel MachineFunction property · 3054ecea
      Roman Tereshin authored
      FailedISel MachineFunction property is part of the CodeGen pipeline
      state as much as every other property, notably, Legalized,
      RegBankSelected, and Selected. Let's make that part of the state also
      serializable / de-serializable, so if GlobalISel aborts on some of the
      functions of a large module, but not the others, it could be easily seen
      and the state of the pipeline could be maintained through llc's
      invocations with -stop-after / -start-after.
      
      To make MIR printable and generally to not to break it too much too
      soon, this patch also defers cleaning up the vreg -> LLT map until
      ResetMachineFunctionPass.
      
      To make MIR with FailedISel: true also machine verifiable, machine
      verifier is changed so it treats a MIR-module as non-regbankselected and
      non-selected if there is FailedISel property set.
      
      Reviewers: qcolombet, ab
      
      Reviewed By: dsanders
      
      Subscribers: javed.absar, rovka, kristof.beyls, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D42877
      
      llvm-svn: 326343
      3054ecea
    • Jonas Hahnfeld's avatar
      [CUDA] Include single GPU binary, NFCI. · e768132f
      Jonas Hahnfeld authored
      Binaries for multiple architectures are combined by fatbinary,
      so the current code was effectively not needed.
      
      Differential Revision: https://reviews.llvm.org/D43461
      
      llvm-svn: 326342
      e768132f
    • Chih-Hung Hsieh's avatar
      [TLS] use emulated TLS if the target supports only this mode · 9f9e4681
      Chih-Hung Hsieh authored
      Emulated TLS is enabled by llc flag -emulated-tls,
      which is passed by clang driver.
      When llc is called explicitly or from other drivers like LTO,
      missing -emulated-tls flag would generate wrong TLS code for targets
      that supports only this mode.
      Now use useEmulatedTLS() instead of Options.EmulatedTLS to decide whether
      emulated TLS code should be generated.
      Unit tests are modified to run with and without the -emulated-tls flag.
      
      Differential Revision: https://reviews.llvm.org/D42999
      
      llvm-svn: 326341
      9f9e4681
    • Rui Ueyama's avatar
      [WebAssembly] Use toArrayRef. NFC. · 29abfe4a
      Rui Ueyama authored
      Differential Revision: https://reviews.llvm.org/D43855
      
      llvm-svn: 326340
      29abfe4a
    • Rui Ueyama's avatar
      Merge {COFF,ELF}/Strings.cpp to Common/Strings.cpp. · ee173718
      Rui Ueyama authored
      This should resolve the issue that lld build fails in some hosts
      that uses case-insensitive file system.
      
      Differential Revision: https://reviews.llvm.org/D43788
      
      llvm-svn: 326339
      ee173718
    • Joachim Protze's avatar
      [OMPT] Fix ompt_get_task_info() and add tests for it · aa2022e7
      Joachim Protze authored
      The thread_num parameter of ompt_get_task_info() was not being used previously,
      but need to be set.
      
      The print_task_type() function (form the task-types.c testcase) was merged into
      the print_ids() function (in callback.h). Testing of ompt_get_task_info() was
      added to the task-types.c testcase. It was not tested extensively previously.
      
      Differential Revision: https://reviews.llvm.org/D42472
      
      llvm-svn: 326338
      aa2022e7
    • Rui Ueyama's avatar
      22c8f33a
    • Rui Ueyama's avatar
      [WebAssembly] Improve WasmSignatureDenseMapInfo. · ba16bacc
      Rui Ueyama authored
      Let X and Y be types. Previously, functions F(X, Y) and G(Y, X) had
      the same hash value because their hash values are computed as follows:
      
        hash(F) = hash(X) + hash(Y)
        hash(G) = hash(Y) + hash(X)
      
      This patch fixes the issue by using hash_combine.
      
      Differential Revision: https://reviews.llvm.org/D43856
      
      llvm-svn: 326336
      ba16bacc
    • Nicholas Wilson's avatar
      [WebAssembly] Reorder symbol table to match MC order · 280f872b
      Nicholas Wilson authored
      Update LLD test expectations for new symbol ordering introduced by
      Differential D43685.
      
      Differential Revision: https://reviews.llvm.org/D43875
      
      llvm-svn: 326335
      280f872b
    • Nicholas Wilson's avatar
      [WebAssembly] Reorder symbol table to match MC order · 586320c0
      Nicholas Wilson authored
      This removes a TODO introduced in rL325860
      
      Differential Revision: https://reviews.llvm.org/D43685
      
      llvm-svn: 326334
      586320c0
    • Pablo Barrio's avatar
      [ARM] Lower lower saturate to 0 and lower saturate to -1 using bit-operations · 512f7ee3
      Pablo Barrio authored
      Summary:
      Expressions of the form x < 0 ? 0 :  x; and x < -1 ? -1 : x can be lowered using bit-operations instead of branching or conditional moves
      
      In thumb-mode this results in a two-instruction sequence, a shift followed by a bic or or while in ARM/thumb2 mode that has flexible second operand the shift can be folded into a single bic/or instructions. In most cases this results in smaller code and possibly less branches, and in no case larger than before.
      
      Patch by Martin Svanfeldt
      
      Reviewers: fhahn, pbarrio, rogfer01
      
      Reviewed By: pbarrio, rogfer01
      
      Subscribers: chrib, yroux, eugenis, efriedma, rogfer01, aemerson, javed.absar, kristof.beyls, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D42574
      
      llvm-svn: 326333
      512f7ee3
    • Joel E. Denny's avatar
      Test commit access: apply clang-format suggestion · 6053ec22
      Joel E. Denny authored
      llvm-svn: 326332
      6053ec22
    • Sanjay Patel's avatar
      [InstCombine] auto-generate complete checks; NFC · 356e77f5
      Sanjay Patel authored
      llvm-svn: 326331
      356e77f5
    • Sanjay Patel's avatar
      [InstCombine] move invariant call out of loop; NFC · b3f4f626
      Sanjay Patel authored
      We really shouldn't need a 2-loop here at all, but that's another cleanup.
      
      llvm-svn: 326330
      b3f4f626
    • Sanjay Patel's avatar
      [InstCombine] move constant check into foldBinOpIntoSelectOrPhi; NFCI · 8fdd87f9
      Sanjay Patel authored
      Also, rename 'foldOpWithConstantIntoOperand' because that's annoyingly 
      vague. The constant check is redundant in some cases, but it allows 
      removing duplication for most of the calls.
      
      llvm-svn: 326329
      8fdd87f9
    • Alexey Bataev's avatar
      [DEBUGINFO] Add flag for DWARF2 or less to use sections as references. · 9de940b9
      Alexey Bataev authored
      Summary:
      Some targets does not support labels inside debug sections, but support
      references in form `section +|- offset`. Patch adds initial support
      for this. Also, this patch disables emission of all additional debug
        sections that may have labels inside of it (like pub sections and
        string tables).
      
      Reviewers: probinson, echristo
      
      Subscribers: JDevlieghere, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D43627
      
      llvm-svn: 326328
      9de940b9
    • Alexander Kornienko's avatar
      Rename a few checks from misc- to bugprone-. · a1a29336
      Alexander Kornienko authored
      Summary:
      rename_check.py {misc,bugprone}-forwarding-reference-overload
      rename_check.py {misc,bugprone}-macro-repeated-side-effects
      rename_check.py {misc,bugprone}-lambda-function-name
      rename_check.py {misc,bugprone}-misplaced-widening-cast
      
      Reviewers: hokein, sammccall, aaron.ballman
      
      Reviewed By: aaron.ballman
      
      Subscribers: klimek, cfe-commits, mgorny
      
      Differential Revision: https://reviews.llvm.org/D43867
      
      llvm-svn: 326327
      a1a29336
    • Nicholas Wilson's avatar
      [WebAssembly] Fix copy-paste error in debugging string · 7e4eee98
      Nicholas Wilson authored
      llvm-svn: 326326
      7e4eee98
    • Eric Liu's avatar
      [clangd] A few more fixes for STL header mapping. · 06d41811
      Eric Liu authored
      llvm-svn: 326325
      06d41811
    • Gabor Horvath's avatar
      [analyzer] Fix a compiler warning · 72609324
      Gabor Horvath authored
      llvm-svn: 326324
      72609324
    • Gabor Horvath's avatar
      [analyzer] Support for naive cross translation unit analysis · eb0584be
      Gabor Horvath authored
      The aim of this patch is to be minimal to enable incremental development of
      the feature on the top of the tree. This patch should be an NFC when the
      feature is turned off. It is turned off by default and still considered as
      experimental.
      
      Technical details are available in the EuroLLVM Talk: 
      http://llvm.org/devmtg/2017-03//2017/02/20/accepted-sessions.html#7
      
      Note that the initial prototype was done by A. Sidorin et al.: http://lists.llvm.org/pipermail/cfe-dev/2015-October/045730.html
      
      Contributions to the measurements and the new version of the code: Peter Szecsi, Zoltan Gera, Daniel Krupp, Kareem Khazem.
      
      Differential Revision: https://reviews.llvm.org/D30691
      
      llvm-svn: 326323
      eb0584be
    • Simon Dardis's avatar
      [mips] Begin reworking instruction predicates for ISAs/encodings (1/N) · 4529aac2
      Simon Dardis authored
      The MIPS backend has inconsistent usage of instruction predicates
      for assembly and code generation. The issue arises from supporting three
      encodings, two (MIPS and microMIPS) of which have a near 1:1 instruction
      mapping across ISA revisions and a third encoding with a more restricted
      set of instructions (MIPS16e).
      
      To enforce consistent usage, each of the ISA_* adjectives has (or will
      have) the relevant encoding attached to it along the relevant ISA revision
      where the instruction is defined.
      
      Each instruction, pattern or alias will then have the correct ISA adjective
      attached to it, and the base instruction description classes will have any
      predicates relating to ISA encoding or revision removed.
      
      Pseudo instructions will also be guarded for the encoding or ABI that they are
      supported in.
      
      Finally, the hasStandardEncoding() / inMicroMipsMode() / inMips16Mode() methods
      of MipsSubtarget will be changed such that only one can be true at any one time.
      
      The result of this is that code generation and assembly will produce the
      correct encoding up front, while code generated from pseudo instructions
      and other inserted sequences of instructions will be able to rely on the mapping
      tables to produce the correct encoding. This should fix numerous bugs where
      the result 'happens' to be correct but has edge cases where microMIPS and MIPS
      have subtle differences (e.g. microMIPSR6 using 'j', 'jal' instructions.)
      
      This patch starts the process by changing most of the ISA adjectives to make
      use of the EncodingPredicate member of PredicateControl. Follow on patches
      will annotate instructions with their correct ISA adjective and eliminate
      the usage of "let Predicates = [..]", "let AdditionalPredicates = [..]" and
      "isCodeGenOnly = 1" in the cases where it was used to control instruction
      availability.
      
      Contributions from Nitesh Jain.
      
      Reviewers: atanasyan
      
      Differential Revision: https://reviews.llvm.org/D41434
      
      llvm-svn: 326322
      4529aac2
    • Alexander Kornienko's avatar
      [clang-tidy] Fix 'add_new_check.py --udpate-docs' · 9ac01b07
      Alexander Kornienko authored
      llvm-svn: 326321
      9ac01b07
    • Alexander Ivchenko's avatar
      [GlobalIsel][X86] Support G_INTTOPTR instruction. · c01f7504
      Alexander Ivchenko authored
      Add legalization/selection for x86/x86_64 and
      corresponding tests.
      
      Reviewed By: igorb
      
      Differential Revision: https://reviews.llvm.org/D43622
      
      llvm-svn: 326320
      c01f7504
    • Xin Tong's avatar
      Fix typo. NFC · 256869d8
      Xin Tong authored
      llvm-svn: 326319
      256869d8
    • Xin Tong's avatar
      [MergeICmp] Fix a bug in MergeICmp that can lead to a block being processed more than once. · 8ba674e4
      Xin Tong authored
      Summary:
      Fix a bug in MergeICmp that can lead to a BCECmp block being processed more than once and eventually lead to a broken LLVM module.
      The problem is that if the non-constant value is not produced by the last block, the producer will be processed once when the its parent block
      is processed and second time when the last block is processed.
      
      We end up having 2 same BCECmpBlock in the merge queue. And eventually lead to a broken LLVM module.
      
      Reviewers: courbet, davide
      
      Reviewed By: courbet
      
      Subscribers: llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D43825
      
      llvm-svn: 326318
      8ba674e4
    • Klaus Kretzschmar's avatar
      [IR] - Make User construction exception safe · 60f57369
      Klaus Kretzschmar authored
      There are many instruction ctors that call the setName method of the Value base class, which can throw a bad_alloc exception in OOM situations. 
      In such situations special User delete operators are called which are not implemented yet.
      
      Example:
       Lets look at the construction of a CallInst instruction during IR generation:
      
      static CallInst *Create(FunctionType *Ty, Value *Func, ArrayRef<Value *> Args, .. ){
      ...
      
      return new (TotalOps, DescriptorBytes) CallInst(Ty, Func, Args, Bundles, NameStr, InsertBefore);
      
      }
      
      CallInst::CalInst(Value* Func, ...) {
      ...
      Op<-1>() = Func;
      ....
      setName(name); // throws
      ...
      }
      Op<-1>() returns a reference to a Use object of the CallInst instruction and the operator= inserts this use object into the UseList of Func. 
      The same object is removed from that UseList by calling the User::operator delete If the CallInst object is deleted. 
      Since setName can throw a bad_alloc exception (if LLVM_ENABLE_EXCEPTIONS is switched on), the unwind chain runs into assertions ("Constructor throws?") in 
      special User::operator deletes operators:
      
      operator delete(void* Usr, unsigned)
      operator delete(void* Usr, unsigned, bool)
      This situation can be fixed by simlpy calling the User::operator delete(void*) in these unimplemented methods.
      
      To ensure that this additional call succeeds all information that is necessary to calculate the storage pointer from the Usr address 
      must be restored in the special case that a sublass has changed this information, e.g. GlobalVariable can change the NumberOfOperands.
      
      Reviewd by: rnk
      
      Differential Revision: https://reviews.llvm.org/D42731
      
      llvm-svn: 326316
      60f57369
    • David Green's avatar
      [Dominators] Remove verifyDomTree and add some verifying for Post Dom Trees · 7c35de12
      David Green authored
      Removes verifyDomTree, using assert(verify()) everywhere instead, and
      changes verify a little to always run IsSameAsFreshTree first in order
      to print good output when we find errors. Also adds verifyAnalysis for
      PostDomTrees, which will allow checking of PostDomTrees it the same way
      we check DomTrees and MachineDomTrees.
      
      Differential Revision: https://reviews.llvm.org/D41298
      
      llvm-svn: 326315
      7c35de12
    • Alexander Kornienko's avatar
    • Eric Liu's avatar
      [clangd] Prefer the definition of a TagDecl (e.g. class) as CanonicalDeclaration. · cf8601b0
      Eric Liu authored
      Summary:
      Currently, we pick the first declaration of a symbol in a TU, which is considered
      canonical in the clangIndex, as the canonical declaration in clangd. This causes
      forward declarations that might appear in a random header to be used as a
      canonical declaration, which is not desirable for features like go-to-declaration
      or include insertion.
      
      For example, for class X, we would consider the forward declaration in fwd.h to
      be the canonical declaration, while the preferred canonical declaration should
      be the actual definition in x.h.
      ```
      // fwd.h
      class X;  // forward decl
      
      // x.h
      class X {};
      ```
      
      This patch fixes the issue by making symbol collector favor the actual definition of
      a TagDecl (i.e. class/struct/enum/union) found in a header file over the first seen
      declarations in a TU. Other symbol types like functions are not handled because
      using the first seen declarations as canonical declarations is usually a good
      heuristic for them.
      
      Reviewers: sammccall
      
      Subscribers: klimek, ilya-biryukov, jkorous-apple, cfe-commits
      
      Differential Revision: https://reviews.llvm.org/D43823
      
      llvm-svn: 326313
      cf8601b0
    • Joachim Protze's avatar
      [OMPT] Fix inconsistent testcases · 4df80bda
      Joachim Protze authored
      The main change of this patch is to insert {{.*}} in current_address=[[RETURN_ADDRESS_END]].
      This is needed to match any of the alternatively printed addresses.
      
      Additionally, clang-format is applied to the two tests.
      
      Differential Revision: https://reviews.llvm.org/D43115
      
      llvm-svn: 326312
      4df80bda
    • Alexander Ivchenko's avatar
      [GlobalIsel][X86] Support G_PTRTOINT instruction. · 46e07e36
      Alexander Ivchenko authored
      Add legalization/selection for x86/x86_64 and
      corresponding tests.
      
      Reviewed By: igorb
      
      Differential Revision: https://reviews.llvm.org/D43617
      
      llvm-svn: 326311
      46e07e36
    • Eric Liu's avatar
      [clangd] A few minor fixes for STL internal header mapping. · 212e6761
      Eric Liu authored
      llvm-svn: 326310
      212e6761
Loading