Skip to content
  1. Apr 24, 2018
    • Nico Weber's avatar
      Remove LLVM_INSTALL_CCTOOLS_SYMLINKS · 8c77bf9e
      Nico Weber authored
      It used to symlink dsymutil to llvm-dsymutil, but after r327790 llvm's dsymutil
      binary is now called dsymutil without prefix.
      
      r327792 then reversed the direction of the symlink if
      LLVM_INSTALL_CCTOOLS_SYMLINKS was set, but that looks like a buildfix and not
      like something anyone should need.
      
      https://reviews.llvm.org/D45966
      
      llvm-svn: 330727
      8c77bf9e
    • David Blaikie's avatar
      ba47dd16
    • Benjamin Kramer's avatar
      [LoadStoreVectorize] Ignore interleaved invariant loads. · f85f5da3
      Benjamin Kramer authored
      The memory location an invariant load is using can never be clobbered by
      any store, so it's safe to move the load ahead of the store.
      
      Differential Revision: https://reviews.llvm.org/D46011
      
      llvm-svn: 330725
      f85f5da3
    • Kostya Kortchinsky's avatar
      [sanitizer] More dead code removal · efe5afbc
      Kostya Kortchinsky authored
      Summary:
      The following functions are only used in tests: `SetEnv`,
      `SanitizerSetThreadName`, `SanitizerGetThreadName`. I don't think they are
      going to be used in the future, and I propose to get rid of them, and associated
      tests and include.
      
      Reviewers: alekseyshl, eugenis, vitalybuka
      
      Reviewed By: vitalybuka
      
      Subscribers: dvyukov, vitalybuka, kubamracek, delcypher, llvm-commits, #sanitizers
      
      Differential Revision: https://reviews.llvm.org/D45838
      
      llvm-svn: 330724
      efe5afbc
    • Andrea Di Biagio's avatar
      [llvm-mca] Refactor the Scheduler interface in preparation for PR36663. · 27c4b096
      Andrea Di Biagio authored
      Zero latency instructions are now scheduled the same way as other instructions.
      Before this patch, there was a specialzed code path for those instructions.
      
      All scheduler events are now generated from method `scheduleInstruction()` and
      from method `cycleEvent()`. This will make easier to implement a "execution
      stage", and let that stage publish all the scheduler events.
      
      No functional change intended.
      
      llvm-svn: 330723
      27c4b096
    • Joel E. Denny's avatar
      [Attr] Print enum attributes at correct position · c2575a37
      Joel E. Denny authored
      For example, given:
      
        void fn() {
          enum __attribute__((deprecated)) T *p;
        }
      
      -ast-print produced:
      
        void fn() {
          enum T __attribute__((deprecated(""))) *p;
        }
      
      -ast-print on that produced:
      
        void fn() {
          enum T *p __attribute__((deprecated("")));
        }
      
      The attribute is on enum T in the first case, but it's on p in the
      other cases.
      
      Details:
      
      Within enum declarations, enum attributes were always printed after
      the tag and any member list.  When no member list was present but the
      enum was a type specifier in a variable declaration, the attribute
      then applied to the variable not the enum, changing the semantics.
      
      This patch fixes that by always printing attributes between the enum's
      keyword and tag, as clang already does for structs, unions, and
      classes.
      
      Reviewed By: rsmith
      
      Differential Revision: https://reviews.llvm.org/D45456
      
      llvm-svn: 330722
      c2575a37
    • Sven van Haastregt's avatar
      [OpenCL] Fix diagnostic of thread_local · c4100833
      Sven van Haastregt authored
      Commit 08c258670c ("[OpenCL] Generic address space has been added in
      OpenCL v2.0.", 2014-11-26) did not mark the thread_local keyword as a
      storage class specifier, whereas it did mark _Thread_local as such.
      According to the C++14 spec s7.1.1, thread_local is a storage class
      specifier, so mark it as such.
      
      I will add a test for this in a follow-up commit that adds keyword
      restrictions to the OpenCL C++ language mode.
      
      llvm-svn: 330721
      c4100833
    • Simon Pilgrim's avatar
      [X86] Remove unnecessary FMA reg-mem InstRW scheduler overrides. · 16299273
      Simon Pilgrim authored
      llvm-svn: 330720
      16299273
    • Gabor Horvath's avatar
      [clang-tidy] Fix PR35468 · 27351661
      Gabor Horvath authored
      Differential Revision: https://reviews.llvm.org/D46003
      
      llvm-svn: 330719
      27351661
    • Ulrich Weigand's avatar
      [SystemZ] Use preferred 16-byte function alignment · 497c70ff
      Ulrich Weigand authored
      While not necessary for correctness, it is preferable for
      performance reasons on all architectures we currently support
      to align functions to 16-byte boundaries by default.
      
      llvm-svn: 330718
      497c70ff
    • Ilya Biryukov's avatar
      [CodeComplete] Fix completion at the end of keywords · b3510c42
      Ilya Biryukov authored
      Summary:
      Make completion behave consistently no matter if it is run at the
      start, in the middle or at the end of an identifier that happens to
      be a keyword or a macro name. Since completion is often ran on
      incomplete identifiers, they may turn into keywords by accident.
      
      For example, we should produce same results for all of these
      completion points:
      
          // ^ is completion point.
          ^class
          cla^ss
          class^
      
      Previously clang produced different results for the last case (as if
      the completion point was after a space: `class ^`).
      
      This change also updates some offsets in tests that (unintentionally?)
      relied on the old behavior.
      
      Reviewers: sammccall, bkramer, arphaman, aaron.ballman
      
      Reviewed By: sammccall
      
      Subscribers: cfe-commits
      
      Differential Revision: https://reviews.llvm.org/D45887
      
      llvm-svn: 330717
      b3510c42
    • Simon Pilgrim's avatar
      Fix Wdocumentation warnings. NFCI. · d6ceda84
      Simon Pilgrim authored
      llvm-svn: 330716
      d6ceda84
    • Simon Pilgrim's avatar
      [X86] Fix missing cfi from sitofp checks · 23d29250
      Simon Pilgrim authored
      llvm-svn: 330715
      23d29250
    • Simon Pilgrim's avatar
      [X86] Add vector element insertion/extraction scheduler classes · f7d2a93d
      Simon Pilgrim authored
      Split off pinsr/pextr and extractps instructions.
      
      (Mostly) fixes PR36887.
      
      Note: It might be worth adding a WriteFInsertLd class as well in the future.
      
      Differential Revision: https://reviews.llvm.org/D45929
      
      llvm-svn: 330714
      f7d2a93d
    • Simon Pilgrim's avatar
      2922c102
    • Rainer Orth's avatar
      The OpenBSD UBsan port introduced two typos that broke the Solaris sanitizer build. · 482cef6c
      Rainer Orth authored
      The following patch restores it, will shortly commit as obvious.
      
      Differential Revision: https://reviews.llvm.org/D46006
      
      llvm-svn: 330712
      482cef6c
    • Alexander Ivchenko's avatar
      [X86] Replace action Promote with Expand for operation ISD::SINT_TO_FP · 5717fbaf
      Alexander Ivchenko authored
      Summary:
      If attribute "use-soft-float"="true" is set then X86ISelLowering.cpp sets
      'Promote' action for ISD::SINT_TO_FP operation on type i32.
      
      But 'Promote' action is not proper in this case since lib function
      __floatsidf is available for casting from signed int to float type.
      Thus Expand action is more suitable here.
      
      The Expand action should be set for ISD::UINT_TO_FP for soft float as well.
      
      If function attribute "use-soft-float"="true" is set then infinite looping
      can happen in DAG combining, function visitSINT_TO_FP() replaces SINT_TO_FP
      node with UINT_TO_FP node and function combineUIntToFP() replace vice versa in cycle.
      The fix prevents it.
      
      Patch by vrybalov
      
      Differential Revision: https://reviews.llvm.org/D45572
      
      llvm-svn: 330711
      5717fbaf
    • Martin Storsjö's avatar
      [GCC] Don't keep a StringRef to a temporary std::string · 7054b49e
      Martin Storsjö authored
      This fixes failures in asan builds and possibly other buildbots
      as well, after SVN r330696.
      
      Prior to that revision, the std::string was stored in another
      variable, before assigning to a StringRef.
      
      llvm-svn: 330710
      7054b49e
    • Francis Visoiu Mistrih's avatar
      [CodeGen] Print user-friendly debug locations as MI comments · 8ed0f741
      Francis Visoiu Mistrih authored
      If available, print the file, line and column of the DebugLoc attached
      to the MachineInstr:
      
      MOV16mr $rbp, 1, $noreg, -112, $noreg, killed renamable $ax, debug-location !56 :: (store 2 into %ir.._value12); stepping.swift:10:17
      renamable $edx = MOVZX32rm16 $rbp, 1, $noreg, -112, $noreg, debug-location !62 :: (dereferenceable load 2 from %ir.._value13); stepping.swift:10:17
      
      Differential Revision: https://reviews.llvm.org/D45992
      
      llvm-svn: 330709
      8ed0f741
    • Pavel Labath's avatar
      [dotest] Make the set of tests independent of the test configuration · fdfeefd6
      Pavel Labath authored
      Summary:
      In the magic test duplicator, we were making the decision whether to
      create a test variant based on the compiler and the target platform.
      This meant that the set of known tests was different for each test
      configuration.
      
      This patch makes the set of generated test variants static and handles
      the skipping via runtime checks instead. This is more consistent with
      how we do other test-skipping decision (e.g. for libc++ tests), and
      makes it easier to expose the full set of tests to lit, which now does
      not need to know anything about what things can potentially cause tests
      to appear or disappear.
      
      Reviewers: JDevlieghere, aprantl
      
      Subscribers: eraman, lldb-commits
      
      Differential Revision: https://reviews.llvm.org/D45949
      
      llvm-svn: 330708
      fdfeefd6
    • Chandler Carruth's avatar
      [PM/LoopUnswitch] Fix a bug in the loop block set formation of the new · 43acdb35
      Chandler Carruth authored
      loop unswitch.
      
      This code incorrectly added the header to the loop block set early. As
      a consequence we would incorrectly conclude that a nested loop body had
      already been visited when the header of the outer loop was the preheader
      of the nested loop. In retrospect, adding the header eagerly doesn't
      really make sense. It seems nicer to let the cycle be formed naturally.
      This will catch crazy bugs in the CFG reconstruction where we can't
      correctly form the cycle earlier rather than later, and makes the rest
      of the logic just fall out.
      
      I've also added various asserts that make these issues *much* easier to
      debug.
      
      llvm-svn: 330707
      43acdb35
    • Petar Jovanovic's avatar
      Correct dwarf unwind information in function epilogue · e2bfcd63
      Petar Jovanovic authored
      This patch aims to provide correct dwarf unwind information in function
      epilogue for X86.
      It consists of two parts. The first part inserts CFI instructions that set
      appropriate cfa offset and cfa register in emitEpilogue() in
      X86FrameLowering. This part is X86 specific.
      
      The second part is platform independent and ensures that:
      
      * CFI instructions do not affect code generation (they are not counted as
        instructions when tail duplicating or tail merging)
      * Unwind information remains correct when a function is modified by
        different passes. This is done in a late pass by analyzing information
        about cfa offset and cfa register in BBs and inserting additional CFI
        directives where necessary.
      
      Added CFIInstrInserter pass:
      
      * analyzes each basic block to determine cfa offset and register are valid
        at its entry and exit
      * verifies that outgoing cfa offset and register of predecessor blocks match
        incoming values of their successors
      * inserts additional CFI directives at basic block beginning to correct the
        rule for calculating CFA
      
      Having CFI instructions in function epilogue can cause incorrect CFA
      calculation rule for some basic blocks. This can happen if, due to basic
      block reordering, or the existence of multiple epilogue blocks, some of the
      blocks have wrong cfa offset and register values set by the epilogue block
      above them.
      CFIInstrInserter is currently run only on X86, but can be used by any target
      that implements support for adding CFI instructions in epilogue.
      
      Patch by Violeta Vukobrat.
      
      Differential Revision: https://reviews.llvm.org/D42848
      
      llvm-svn: 330706
      e2bfcd63
    • Simon Dardis's avatar
      [mips] Correct the patterns for bswap · fce722e6
      Simon Dardis authored
      Guard the MIPS64 variant correctly for i64, mark the MIPS32 version as not
      in microMIPS and provide the microMIPS version.
      
      Additionally, remove a related stale XFAIL'd test as bswap has its own test
      case providing coverage.
      
      Reviewers: smaksimovic, abeserminji, atanasyan
      
      Differential Revision: https://reviews.llvm.org/D45816
      
      llvm-svn: 330705
      fce722e6
    • Aleksei Sidorin's avatar
      [ASTImporter] Allow testing of import sequences; fix import of typedefs for anonymous decls · 04fbffcc
      Aleksei Sidorin authored
      This patch introduces the ability to test an arbitrary sequence of imports
      between a given set of virtual source files. This should finally allow
      us to write simple tests and fix annoying issues inside ASTImporter
      that cause failures in CSA CTU. This is done by refactoring
      ASTImporterTest functions and introducing `testImportSequence` facility.
      As a side effect, `testImport` facility was generalized a bit more. It
      should now allow import of non-decl AST nodes; however, there is still no
      test using this ability.
      
      As a "test for test", there is also a fix for import anonymous TagDecls
      referred by typedef. Before this patch, the setting of typedef for anonymous
      structure was delayed; however, this approach misses the corner case if
      an enum constant is imported directly. In this patch, typedefs for
      anonymous declarations are imported right after the anonymous declaration
      is imported, without any delay.
      
      Thanks to Adam Balogh for suggestions included into this patch.
      
      Differential Revision: https://reviews.llvm.org/D44079
      
      llvm-svn: 330704
      04fbffcc
    • Andrea Di Biagio's avatar
      [llvm-mca][CommandGuide] Fix typo in example. · ef507cb4
      Andrea Di Biagio authored
      llvm-svn: 330703
      ef507cb4
    • George Rimar's avatar
      [ELF] - Never use std::sort. · de83cbf3
      George Rimar authored
      It turns out we should not use the std::sort anymore.
      r327219 added a new wrapper llvm::sort (D39245).
      When EXPENSIVE_CHECKS is defined, it shuffles the
      input container and that helps to find non-deterministic
      ordering.
      
      Patch changes code to use llvm::sort and std::stable_sort
      instead of std::sort
      
      Differential revision: https://reviews.llvm.org/D45969
      
      llvm-svn: 330702
      de83cbf3
    • George Rimar's avatar
      [ELF] - Refactor lazy symbol duplicated code. · 19f9b814
      George Rimar authored
      Our code for LazyObject and LazyArchive duplicates.
      
      This patch extracts the common part to remove
      the duplication.
      
      Differential revision: https://reviews.llvm.org/D45516
      
      llvm-svn: 330701
      19f9b814
    • Andrei Elovikov's avatar
      [CodeGen] Do not allow opt-bisect-limit to skip ScalarizeMaskedMemIntrin. · 822602a7
      Andrei Elovikov authored
      Summary:
      The pass is supposed to scalarize such intrinsics if the target does not support
      them natively, so if the scalarization does not happen instruction selection
      crashes due to inability to lower these intrinsics.
      
      Reviewers: andrew.w.kaylor, craig.topper
      
      Reviewed By: andrew.w.kaylor
      
      Subscribers: llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D45947
      
      llvm-svn: 330700
      822602a7
    • Max Kazantsev's avatar
      c54e67d6
    • Florian Hahn's avatar
      [LoopInfo] Verify BBMap tracks innermost loops for BBs. · f3561ffa
      Florian Hahn authored
      By checking that none of the child loops contain a BB we make sure BBMap
      contains the innermost loop defining BB. This invariant was violated in
      LoopInterchange and got caught by this assertion.
      
      Reviewers: chandlerc, mzolotukhin, sanjoy, mehdi_amini, efriedma
      
      Reviewed By: efriedma
      
      Differential Revision: https://reviews.llvm.org/D45971
      
      llvm-svn: 330698
      f3561ffa
    • Sander de Smalen's avatar
      [AArch64][SVE] Asm: Support for contiguous, first-faulting LDFF1 (scalar+scalar) load instructions. · eb1053f9
      Sander de Smalen authored
      Reviewers: fhahn, rengolin, samparker, SjoerdMeijer, t.p.northover, echristo, evandro, javed.absar
      
      Reviewed By: rengolin
      
      Subscribers: tschuett, kristof.beyls, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D45946
      
      llvm-svn: 330697
      eb1053f9
    • Martin Storsjö's avatar
      [GCC] Match a GCC version with a patch suffix without a third version component · 6afcd64e
      Martin Storsjö authored
      Previously it would only accept a string as a GCC version if it had
      either two components and no suffix, or three components with an
      optional suffix.
      
      Debian and ubuntu provided mingw compilers have lib/gcc/target entries
      like "5.3-posix" and "5.3-win32". This doesn't try to make any specific
      preference between them (other than lexical sorting of the suffix).
      
      Differential Revision: https://reviews.llvm.org/D45505
      
      llvm-svn: 330696
      6afcd64e
    • Martin Storsjö's avatar
      [test] Fix a typo in a test directory name. NFC. · f2124605
      Martin Storsjö authored
      llvm-svn: 330695
      f2124605
    • Roman Lebedev's avatar
      Link to AggressiveInstCombine in a few places. Unbreaks build for me. · e931b026
      Roman Lebedev authored
      /usr/local/bin/ld.lld: error: undefined symbol: llvm::createAggressiveInstCombinerPass()
      >>> referenced by cc1_main.cpp
      >>>               tools/clang/tools/driver/CMakeFiles/clang.dir/cc1_main.cpp.o:(_GLOBAL__sub_I_cc1_main.cpp)
      
      And so on
      
      The bot coverage is clearly missing.
      
      llvm-svn: 330694
      e931b026
    • Roman Lebedev's avatar
      Link to AggressiveInstCombine in a few places. Unbreaks build for me. · 68e0daed
      Roman Lebedev authored
      /usr/local/bin/ld.lld: error: undefined symbol: llvm::createAggressiveInstCombinerPass()
      >>> referenced by cc1_main.cpp
      >>>               tools/clang/tools/driver/CMakeFiles/clang.dir/cc1_main.cpp.o:(_GLOBAL__sub_I_cc1_main.cpp)
      
      And so on
      
      The bot coverage is clearly missing.
      
      llvm-svn: 330693
      68e0daed
    • Erik Verbruggen's avatar
      [libclang] Only mark CXCursors for explicit attributes with a type · c068e909
      Erik Verbruggen authored
      All attributes have a source range associated with it. However, implicit
      attributes are added by the compiler, and not added because the user
      wrote something in the input. So no token type should be set to
      CXCursor_*Attr.
      
      The problem was visible when a class gets marked by e.g.
      MSInheritanceAttr, which has the full CXXRecordDecl's range as its
      own range. The effect of marking that range as CXCursor_UnexposedAttr
      was that all cursors for the record decl, including all child decls,
      would become CXCursor_UnexposedAttr.
      
      llvm-svn: 330692
      c068e909
    • Pavel Labath's avatar
      [Support/Path] Add more tests and improve failure messages of existing ones · 60b7132a
      Pavel Labath authored
      Summary:
      I am preparing a patch to the path function. While working on it, I
      noticed that some of the areas are lacking test coverage (e.g. filename
      and parent_path functions), so I add more tests to guard against
      regressions there.
      
      I have also found the failure messages hard to understand, so I rewrote
      some existing test to give more actionable messages when they fail:
      - for tests which run over multiple inputs, I use SCOPED_TRACE, to show
        which of the inputs caused the actual failure.
      - for comparisons of vectors, I use gmock's container matchers, which
        will print out the full container contents (and the elements that
        differ) when they fail to match.
      
      Reviewers: zturner, espindola
      
      Subscribers: llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D45941
      
      llvm-svn: 330691
      60b7132a
    • Benjamin Kramer's avatar
      [AST] Another attempt at fixing the ARM bots. · bb156b52
      Benjamin Kramer authored
      llvm-svn: 330690
      bb156b52
    • Benjamin Kramer's avatar
    • Xin Tong's avatar
      [LVI] Fix typo. NFC · adb5bfe7
      Xin Tong authored
      llvm-svn: 330688
      adb5bfe7
Loading