Skip to content
  1. Oct 07, 2014
    • Duncan P. N. Exon Smith's avatar
      LoopUnroll: Create sub-loops in LoopInfo · c46cfcbb
      Duncan P. N. Exon Smith authored
      `LoopUnrollPass` says that it preserves `LoopInfo` -- make it so.  In
      particular, tell `LoopInfo` about copies of inner loops when unrolling
      the outer loop.
      
      Conservatively, also tell `ScalarEvolution` to forget about the original
      versions of these loops, since their inputs may have changed.
      
      Fixes PR20987.
      
      llvm-svn: 219241
      c46cfcbb
    • Kaelyn Takata's avatar
      Add size_t MapVector::erase(KeyT) similar to the one in std::map. · 6ad1eb4b
      Kaelyn Takata authored
      llvm-svn: 219240
      6ad1eb4b
    • Duncan P. N. Exon Smith's avatar
      LoopUnroll: Only check for ScalarEvolution analysis once, NFC · 9b4d37e8
      Duncan P. N. Exon Smith authored
      A follow-up commit will add use to a tight loop.  We might as well just
      find it once anyway.
      
      llvm-svn: 219239
      9b4d37e8
    • Tom Stellard's avatar
      R600: Remove some redundant initializations from AMDGPUMCAsmInfo · 2b8baaa5
      Tom Stellard authored
      llvm-svn: 219238
      2b8baaa5
    • Tom Stellard's avatar
      R600: Use MCAsmInfoELF as AMDGPUMCAsmInfo base class · 022802ab
      Tom Stellard authored
      The main reason for this is that the MCAsmInfo class,
      which we were previously using as the base class, sets
      PrivateGlobalPrefix to "L", which causes all global
      functions that start with L to be treated as local symbols.
      
      MCAsmInfoELF sets PrivateGlobalPrefix to ".L", which is what
      we want, and it is probably a good idea to use this as the
      base class anyway, since we are emitting ELF binaries.
      
      llvm-svn: 219237
      022802ab
    • Tom Stellard's avatar
      R600/SI: Remove assertion in SIInstrInfo::areLoadsFromSameBasePtr() · 20fa0be9
      Tom Stellard authored
      Added a FIXME coment instead, we need to handle the case where the
      two DS instructions being compared have different numbers of operands.
      
      llvm-svn: 219236
      20fa0be9
    • Rafael Espindola's avatar
      Don't check for null after calling COFFObjectFile::toSec. · 506c684d
      Rafael Espindola authored
      It can only return null if passed a corrupted reference with a null Ref.p.
      Checking for null is then an issue for asserts to check for internal
      consistency, not control flow to check for invalid input.
      
      I didn't add an assert(sec != nullptr) because toSec itself has a far more
      complete assert.
      
      llvm-svn: 219235
      506c684d
    • Jim Ingham's avatar
      This test case was incorrect, it was relying on the fact · b7bee500
      Jim Ingham authored
      that the function we were calling would continue to sleep
      for the requested time even if it was interrupted.  That is
      not true of std::this_thread::sleep_for, at least not on OS X.
      
      Fix the test case so that if it wakes up early, it goes back
      to sleep till the time is actually greater than the end point.
      
      <rdar://problem/18523742>
      
      llvm-svn: 219234
      b7bee500
    • Rafael Espindola's avatar
      Optimize COFFObjectFile::sectionContainsSymbol a bit. · a9260865
      Rafael Espindola authored
      There is no need to compute the coff_section of the symbol just to compare the
      pointer.
      
      Inspired by the ELF implementation.
      
      llvm-svn: 219233
      a9260865
    • Zachary Turner's avatar
      Fix compile error on Windows. · 5cbeb850
      Zachary Turner authored
      llvm-svn: 219232
      5cbeb850
    • Ed Maste's avatar
      Avoid bashisms and switch to /bin/sh · 89b80fb0
      Ed Maste authored
      Bash may not be installed on some systems by default, like FreeBSD.
      
      Differential Revision: http://reviews.llvm.org/D5654
      
      llvm-svn: 219231
      89b80fb0
    • Tom Stellard's avatar
      Implement log1p builtin · bf9f76fb
      Tom Stellard authored
      llvm-svn: 219230
      bf9f76fb
    • Saleem Abdulrasool's avatar
      MC: add support for -aligncomm GNU extension · 64d491e4
      Saleem Abdulrasool authored
      The GNU linker supports an -aligncomm directive that allows for power-of-2
      alignment of common data.  Add support to emit this directive.
      
      llvm-svn: 219229
      64d491e4
    • Saleem Abdulrasool's avatar
      llvm-readobj: add support to dump (COFF) directives · f9578632
      Saleem Abdulrasool authored
      PE/COFF has a special section (.drectve) which can be used to pass options to
      the linker (similar to LC_LINKER_OPTION).  Add support to llvm-readobj to print
      the contents of the section for tests.
      
      llvm-svn: 219228
      f9578632
    • Ed Maste's avatar
      Run profile tests on FreeBSD · 1419e9ad
      Ed Maste authored
      FreeBSD does not have libdl, so set it via lit.cfg instead of the test
      input, as with asan.  Also remove it from Darwin test runs - it's not
      necessary, but harmless there.
      
      Add FreeBSD to the list of hosts to test.
      
      Differential Revision: http://reviews.llvm.org/D5650
      
      llvm-svn: 219227
      1419e9ad
    • Rafael Espindola's avatar
      Remove the IsVolatileSize parameter of getOpenFileSlice. · d2c7fd82
      Rafael Espindola authored
      getOpenFileSlice gets passed the map size, so it makes no sense to say that
      the size is volatile. The code will not even compute the size.
      
      llvm-svn: 219226
      d2c7fd82
    • Fariborz Jahanian's avatar
      Objective-C SDK modernization. When modernizing to · 80ebf8da
      Fariborz Jahanian authored
      use NS_ENUM/NS_OPTIONS macros, add an import of
      Foundation.h (or its module) as necessary.
      rdar://18498550
      
      llvm-svn: 219225
      80ebf8da
    • Rafael Espindola's avatar
      Be consistent about using "const Twine &" for filenames. · 0cb3c9bb
      Rafael Espindola authored
      On this file we had a mix of
      * Twine
      * const char *
      * StringRef
      
      The two that make sense are
      * const Twine & (caller convenience)
      * consc char * (that is what will eventually be passed to open.
      
      Given that sys::fs::openFileForRead takes a "const Twine &", I picked that.
      
      llvm-svn: 219224
      0cb3c9bb
    • Marcello Maggioni's avatar
      Two case switch to select optimization · 963bc87d
      Marcello Maggioni authored
      This optimization tries to convert switch instructions that are used to select a value with only 2 unique cases + default block
      to a select or a couple of selects (depending if the default block is reachable or not).
      
      The typical case this optimization wants to be able to optimize is this one:
      
      Example:
      switch (a) {
        case 10:                %0 = icmp eq i32 %a, 10
          return 10;            %1 = select i1 %0, i32 10, i32 4
        case 20:        ---->   %2 = icmp eq i32 %a, 20
          return 2;             %3 = select i1 %2, i32 2, i32 %1
        default:
          return 4;
      }
      
      It also sets the base for further optimizations that are planned and being reviewed.
      
      llvm-svn: 219223
      963bc87d
    • Richard Smith's avatar
      640775b4
    • Sanjay Patel's avatar
      typos · 25d3c1cf
      Sanjay Patel authored
      llvm-svn: 219221
      25d3c1cf
    • Sanjay Patel's avatar
      typos · eb0cc1bb
      Sanjay Patel authored
      llvm-svn: 219220
      eb0cc1bb
    • Greg Clayton's avatar
      Improved the TreeItem delegate which simplifies making tree items: · 2f547177
      Greg Clayton authored
      - tree items can define any number of key/value pairs
      - creating a tree you specify which columns you want to display and it will pick out the right key/value pairs from the new tree item dictionaries
      - added new "tk-target" command to explore the target's images, sections, symbols, compile units and line tables.
      
      llvm-svn: 219219
      2f547177
    • Sanjay Patel's avatar
      don't repeat function name in comments · bca3eb1a
      Sanjay Patel authored
      llvm-svn: 219218
      bca3eb1a
    • Sanjay Patel's avatar
      typos · af41a230
      Sanjay Patel authored
      llvm-svn: 219216
      af41a230
    • David Blaikie's avatar
      DebugInfo: Ensure that all debug location scope chains from instructions... · ff669d17
      David Blaikie authored
      DebugInfo: Ensure that all debug location scope chains from instructions within a function, lead to the function itself.
      
      Let me tell you a tale...
      
      Originally committed in r211723 after discovering a nasty case of weird
      scoping due to inlining, this was reverted in r211724 after it fired in
      ASan/compiler-rt.
      
      (minor diversion where I accidentally committed/reverted again in
      r211871/r211873)
      
      After further testing and fixing bugs in ArgumentPromotion (r211872) and
      Inlining (r212065) it was recommitted in r212085. Reverted in r212089
      after the sanitizer buildbots still showed problems.
      
      Fixed another bug in ArgumentPromotion (r212128) found by this
      assertion.
      
      Recommitted in r212205, reverted in r212226 after it crashed some more
      on sanitizer buildbots.
      
      Fix clang some more in r212761.
      
      Recommitted in r212776, reverted in r212793. ASan failures.
      Recommitted in r213391, reverted in r213432, trying to reproduce flakey
      ASan build failure.
      
      Fixed bugs in r213805 (ArgPromo + DebugInfo), r213952
      (LiveDebugVariables strips dbg_value intrinsics in functions not
      described by debug info).
      
      Recommitted in r214761, reverted in r214999, flakey failure on Windows
      buildbot.
      
      Fixed DeadArgElimination + DebugInfo bug in r219210.
      
      Recommitting and hoping that's the last of it.
      
      [That one burned down, fell over, then sank into the swamp.]
      
      llvm-svn: 219215
      ff669d17
    • Jim Cownie's avatar
      I apologise in advance for the size of this check-in. At Intel we do · 4cc4bb4c
      Jim Cownie authored
      understand that this is not friendly, and are working to change our
      internal code-development to make it easier to make development
      features available more frequently and in finer (more functional)
      chunks. Unfortunately we haven't got that in place yet, and unpicking
      this into multiple separate check-ins would be non-trivial, so please
      bear with me on this one. We should be better in the future.
      
      Apologies over, what do we have here?
      
      GGC 4.9 compatibility
      --------------------
      * We have implemented the new entrypoints used by code compiled by GCC
      4.9 to implement the same functionality in gcc 4.8. Therefore code
      compiled with gcc 4.9 that used to work will continue to do so.
      However, there are some other new entrypoints (associated with task
      cancellation) which are not implemented. Therefore user code compiled
      by gcc 4.9 that uses these new features will not link against the LLVM
      runtime. (It remains unclear how to handle those entrypoints, since
      the GCC interface has potentially unpleasant performance implications
      for join barriers even when cancellation is not used)
      
      --- new parallel entry points ---
      new entry points that aren't OpenMP 4.0 related
      These are implemented fully :-
            GOMP_parallel_loop_dynamic()
            GOMP_parallel_loop_guided()
            GOMP_parallel_loop_runtime()
            GOMP_parallel_loop_static()
            GOMP_parallel_sections()
            GOMP_parallel()
      
      --- cancellation entry points ---
      Currently, these only give a runtime error if OMP_CANCELLATION is true
      because our plain barriers don't check for cancellation while waiting
              GOMP_barrier_cancel()
              GOMP_cancel()
              GOMP_cancellation_point()
              GOMP_loop_end_cancel()
              GOMP_sections_end_cancel()
      
      --- taskgroup entry points ---
      These are implemented fully.
            GOMP_taskgroup_start()
            GOMP_taskgroup_end()
      
      --- target entry points ---
      These are empty (as they are in libgomp)
           GOMP_target()
           GOMP_target_data()
           GOMP_target_end_data()
           GOMP_target_update()
           GOMP_teams()
      
      Improvements in Barriers and Fork/Join
      --------------------------------------
      * Barrier and fork/join code is now in its own file (which makes it
      easier to understand and modify).
      * Wait/release code is now templated and in its own file; suspend/resume code is also templated
      * There's a new, hierarchical, barrier, which exploits the
      cache-hierarchy of the Intel(r) Xeon Phi(tm) coprocessor to improve
      fork/join and barrier performance.
      
      ***BEWARE*** the new source files have *not* been added to the legacy
      Cmake build system. If you want to use that fixes wil be required.
      
      Statistics Collection Code
      --------------------------
      * New code has been added to collect application statistics (if this
      is enabled at library compile time; by default it is not). The
      statistics code itself is generally useful, the lightweight timing
      code uses the X86 rdtsc instruction, so will require changes for other
      architectures.
      The intent of this code is not for users to tune their codes but
      rather 
      1) For timing code-paths inside the runtime
      2) For gathering general properties of OpenMP codes to focus attention
      on which OpenMP features are most used. 
      
      Nested Hot Teams
      ----------------
      * The runtime now maintains more state to reduce the overhead of
      creating and destroying inner parallel teams. This improves the
      performance of code that repeatedly uses nested parallelism with the
      same resource allocation. Set the new KMP_HOT_TEAMS_MAX_LEVEL
      envirable to a depth to enable this (and, of course, OMP_NESTED=true
      to enable nested parallelism at all).
      
      Improved Intel(r) VTune(Tm) Amplifier support
      ---------------------------------------------
      * The runtime provides additional information to Vtune via the
      itt_notify interface to allow it to display better OpenMP specific
      analyses of load-imbalance.
      
      Support for OpenMP Composite Statements
      ---------------------------------------
      * Implement new entrypoints required by some of the OpenMP 4.1
      composite statements.
      
      Improved ifdefs
      ---------------
      * More separation of concepts ("Does this platform do X?") from
      platforms ("Are we compiling for platform Y?"), which should simplify
      future porting.
      
      
      ScaleMP* contribution
      ---------------------
      Stack padding to improve the performance in their environment where
      cross-node coherency is managed at the page level.
      
      Redesign of wait and release code
      ---------------------------------
      The code is simplified and performance improved.
      
      Bug Fixes
      ---------
          *Fixes for Windows multiple processor groups.
          *Fix Fortran module build on Linux: offload attribute added.
          *Fix entry names for distribute-parallel-loop construct to be consistent with the compiler codegen.
          *Fix an inconsistent error message for KMP_PLACE_THREADS environment variable.
      
      llvm-svn: 219214
      4cc4bb4c
    • Todd Fiala's avatar
      Fix spurious output to command line when launching a process on Linux. · f72fa67f
      Todd Fiala authored
      See http://reviews.llvm.org/D5632 for details.
      
      Change by Shawn Best.
      
      llvm-svn: 219213
      f72fa67f
    • Manuel Klimek's avatar
      Make clang-tidy's runCheckOnCode actually use the DiagnosticConsumer. · 0551065c
      Manuel Klimek authored
      A precondition of that was to run both the preprocessor checks and AST
      checks from the same FrontendAction, otherwise we'd have needed to
      duplicate all involved objects in order to not have any references to a
      deleted source manager.
      
      llvm-svn: 219212
      0551065c
    • Jon Roelofs's avatar
      Emit diagnostic for -munaligned-access on v6m · 2b00d546
      Jon Roelofs authored
      Patch by: Charlie Turner <charlie.turner@arm.com>
      
      llvm-svn: 219211
      2b00d546
    • David Blaikie's avatar
      DebugInfo+DeadArgElimination: Ensure llvm::Function*s from debug info are... · 17364d4e
      David Blaikie authored
      DebugInfo+DeadArgElimination: Ensure llvm::Function*s from debug info are updated even when DAE removes both varargs and non-varargs arguments on the same function.
      
      After some stellar (& inspired) help from Reid Kleckner providing a test
      case for some rather unstable undefined behavior showing up as
      assertions produced by r214761, I was able to fix this issue in DAE
      involving the application of both varargs removal, followed by normal
      argument removal.
      
      Indeed I introduced this same bug into ArgumentPromotion (r212128) by
      copying the code from DAE, and when I fixed the bug in ArgPromo
      (r213805) and commented in that patch that I didn't need to address the
      same issue in DAE because it was a single pass. Turns out it's two pass,
      one for the varargs and one for the normal arguments, so the same fix is
      needed (at least during varargs removal). So here it is.
      
      (the observable/net effect of this bug, even when it didn't result in
      assertion failure, is that debug info would describe the DAE'd function
      in the abstract, but wouldn't provide high/low_pc, variable locations,
      line table, etc (it would appear as though the function had been
      entirely optimized away), see the original PR14016 for details of the
      general problem)
      
      I'm not recommitting the assertion just yet, as there's been another
      regression of it since I last tried. It might just be a few test cases
      weren't adequately updated after Adrian or Duncan's recent schema
      changes.
      
      llvm-svn: 219210
      17364d4e
    • Daniel Jasper's avatar
      clang-format: Fix bug with comments between non-trival parameters. · 4281c5ae
      Daniel Jasper authored
      Before:
        SomeFunction(a, a,
                     // comment
                            b + x);
      
      After:
        SomeFunction(a, a,
                     // comment
                     b + x);
      
      llvm-svn: 219209
      4281c5ae
    • Johannes Doerfert's avatar
      [Fix] Non i1 typed select condition for weird pw aff functions. · 219b20e1
      Johannes Doerfert authored
        In case the pieceweise affine function used to create an isl_ast_expr
        had empty cases (e.g., with contradicting constraints on the
        parameters), it was possible that the condition of the isl_ast_expr
        select was not a comparison but a constant (thus of type i64).
      
        This patch does two thing:
         1) Handle the case the condition of a select is not a i1 type like C.
         2) Try to simplify the pieceweise affine functions for the min/max
            access when we generate runtime alias checks. That step can often
            remove empty or redundant cases as well as redundant constrains.
      
        This fixes bug: http://llvm.org/PR21167
      
      Differential Revision: http://reviews.llvm.org/D5627
      
      llvm-svn: 219208
      219b20e1
    • Johannes Doerfert's avatar
      [Refactor] Change the comment style to silence -Wcomment · 3cb63727
      Johannes Doerfert authored
        -Wcomment complained about a "multi-line comment" caused by the
        ascii art used in ScopHelper to describe the CFG.
      
      Differential Revision: http://reviews.llvm.org/D5618
      
      llvm-svn: 219207
      3cb63727
    • Rafael Espindola's avatar
      Allow dllexport alias to base destructors. · e04a17da
      Rafael Espindola authored
      We used to avoid these, but it looks like we did so just because we were
      not handling dllexport alias correctly.
      
      Dario Domizioli fixed that, so allow these aliases.
      
      Based on a patch by Dario Domizioli!
      
      llvm-svn: 219206
      e04a17da
    • Daniel Jasper's avatar
      clang-format: Add documentation about disabling formatting. · d8b4ec0d
      Daniel Jasper authored
      Patch by Marek Kurdej, thanks!
      
      llvm-svn: 219204
      d8b4ec0d
    • Suyog Sarda's avatar
      Reformat if statement to comply with LLVM standards. NFC. · 65f5ae99
      Suyog Sarda authored
      Differential Revision: http://reviews.llvm.org/D5644
      
      llvm-svn: 219203
      65f5ae99
    • Suyog Sarda's avatar
      Reformat to comply with LLVM coding standards using clang-format. · ea205517
      Suyog Sarda authored
      NFC.
      
      Differential Revision: http://reviews.llvm.org/D5645
      
      llvm-svn: 219202
      ea205517
    • Suyog Sarda's avatar
      Remove Extra lines. NFC. · 181cc9a0
      Suyog Sarda authored
      llvm-svn: 219201
      181cc9a0
    • Yuri Gorshenin's avatar
      Fixed asan-asm-stacktrace-test.cc · d6c04770
      Yuri Gorshenin authored
      Summary: Fixed asan-asm-stacktrace-test.cc. Now it's supported on x86_64 and added test run when no debug info is generated.
      
      Differential Revision: http://reviews.llvm.org/D5547
      
      llvm-svn: 219200
      d6c04770
Loading