Skip to content
  1. Jan 24, 2019
  2. Jan 23, 2019
    • Reid Kleckner's avatar
      [ADT] Notify ilist traits about in-list transfers · e80799e6
      Reid Kleckner authored
      Summary:
      Previously no client of ilist traits has needed to know about transfers
      of nodes within the same list, so as an optimization, ilist doesn't call
      transferNodesFromList in that case. However, now there are clients that
      want to use ilist traits to cache instruction ordering information to
      optimize dominance queries of instructions in the same basic block.
      This change updates the existing ilist traits users to detect in-list
      transfers and do nothing in that case.
      
      After this change, we can start caching instruction ordering information
      in LLVM IR data structures. There are two main ways to do that:
      - by putting an order integer into the Instruction class
      - by maintaining order integers in a hash table on BasicBlock
      
      I plan to implement and measure both, but I wanted to commit this change
      first to enable other out of tree ilist clients to implement this
      optimization as well.
      
      Reviewers: lattner, hfinkel, chandlerc
      
      Subscribers: hiraditya, dexonsmith, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D57120
      
      llvm-svn: 351992
      e80799e6
    • Casey Carter's avatar
      [test] Define _LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST in msvc_stdlib_force_include.hpp · 1ecf6e55
      Casey Carter authored
      ...so the tests under test/std/utilities/any continue to
      compile with MSVC's standard library.
      
      While we're here, let's test >C++17 features when _HAS_CXX20.
      
      llvm-svn: 351991
      1ecf6e55
    • Hideki Saito's avatar
      · 4e4ecae0
      Hideki Saito authored
      [LV][VPlan] Change to implement VPlan based predication for
      VPlan-native path
      
      Context: Patch Series #2 for outer loop vectorization support in LV
      using VPlan. (RFC:
      http://lists.llvm.org/pipermail/llvm-dev/2017-December/119523.html).
      
      Patch series #2 checks that inner loops are still trivially lock-step
      among all vector elements. Non-loop branches are blindly assumed as
      divergent.
      
      Changes here implement VPlan based predication algorithm to compute
      predicates for blocks that need predication. Predicates are computed
      for the VPLoop region in reverse post order. A block's predicate is
      computed as OR of the masks of all incoming edges. The mask for an
      incoming edge is computed as AND of predecessor block's predicate and
      either predecessor's Condition bit or NOT(Condition bit) depending on
      whether the edge from predecessor block to the current block is true
      or false edge.
      
      Reviewers: fhahn, rengolin, hsaito, dcaballe
      
      Reviewed By: fhahn
      
      Patch by Satish Guggilla, thanks!
      
      Differential Revision: https://reviews.llvm.org/D53349
      
      llvm-svn: 351990
      4e4ecae0
    • Peter Collingbourne's avatar
      hwasan: Read shadow address from ifunc if we don't need a frame record. · 020ce3f0
      Peter Collingbourne authored
      This saves a cbz+cold call in the interceptor ABI, as well as a realign
      in both ABIs, trading off a dcache entry against some branch predictor
      entries and some code size.
      
      Unfortunately the functionality is hidden behind a flag because ifunc is
      known to be broken on static binaries on Android.
      
      Differential Revision: https://reviews.llvm.org/D57084
      
      llvm-svn: 351989
      020ce3f0
    • Kamil Rytarowski's avatar
      Mark another test as flaky · 829d916d
      Kamil Rytarowski authored
      Reported on the NetBSD 8 buildbot.
      
      llvm-svn: 351988
      829d916d
    • Simon Atanasyan's avatar
      [mips] Handle MipsMCExpr sub-expression for the MEK_DTPREL tag · 812f1c55
      Simon Atanasyan authored
      This is a fix for a regression introduced by the rL348194 commit. In
      that change new type (MEK_DTPREL) of MipsMCExpr expression was added,
      but in some places of the code this type of expression considered as
      unexpected.
      
      This change fixes the bug. The MEK_DTPREL type of expression is used for
      marking TLS DIEExpr only and contains a regular sub-expression. Where we
      need to handle the expression, we retrieve the sub-expression and
      handle it in a common way.
      
      llvm-svn: 351987
      812f1c55
    • Sean Fertile's avatar
      Revert "[PPC64] Sort .toc sections accessed with small code model ..." · 72679cff
      Sean Fertile authored
      This reverts commit ca87c57a3aa4770c9cf0defd4b2feccbc342ee93.
      Added test fails on several windows buildbots.
      
      llvm-svn: 351985
      72679cff
    • Kamil Rytarowski's avatar
      Correct mark for flaky tests · 314bd26d
      Kamil Rytarowski authored
      Add missing trailing dot.
      
      llvm-svn: 351983
      314bd26d
    • Reid Kleckner's avatar
      Revert r351938 "[ARM] Alter the register allocation order for minsize on Thumb2" · f9ebacfd
      Reid Kleckner authored
      This change caused fatal backend errors when compiling a file in libvpx
      for Android.
      
      llvm-svn: 351979
      f9ebacfd
    • Sean Fertile's avatar
      [PPC64] Sort .toc sections accessed with small code model relocs close to .got. · a010cf61
      Sean Fertile authored
      Small code model global variable access on PPC64 has a very limited range of
      addressing. The instructions the relocations are used on add an offset in the
      range [-0x8000, 0x7FFC] to the toc pointer which points to .got +0x8000, giving
      an addressable range of [.got, .got + 0xFFFC]. While user code can be recompiled
      with medium and large code models when the binary grows too large for small code
      model, there are small code model relocations in the crt files and libgcc.a
      which are typically shipped with the distros, and the ABI dictates that linkers
      must allow linking of relocatable object files using different code models.
      
      To minimze the chance of relocation overflow, any file that contains a small
      code model relocation should have its .toc section placed closer to the .got
      then any .toc from a file without small code model relocations.
      
      Differential Revision: https://reviews.llvm.org/D56920
      
      llvm-svn: 351978
      a010cf61
    • Eugene Zelenko's avatar
      92602e26
    • Eugene Zelenko's avatar
      [Documentation] Use HTTPS whenever possible · adcb3f52
      Eugene Zelenko authored
      Differential revision: https://reviews.llvm.org/D56946
      
      llvm-svn: 351976
      adcb3f52
    • Alexey Bataev's avatar
      [DEBUGINFO, NVPTX] Enable support for the debug info on NVPTX target. · 897129dc
      Alexey Bataev authored
      Enable full support for the debug info.
      
      Differential revision: https://reviews.llvm.org/D46189
      
      llvm-svn: 351974
      897129dc
    • Alexey Bataev's avatar
      Revert "[DEBUGINFO, NVPTX] Enable support for the debug info on NVPTX target." · 25624e2e
      Alexey Bataev authored
      This reverts commit r351972. Some pieces of the patch was not applied
      correctly.
      
      llvm-svn: 351973
      25624e2e
    • Alexey Bataev's avatar
      [DEBUGINFO, NVPTX] Enable support for the debug info on NVPTX target. · fe0b3560
      Alexey Bataev authored
      Enable full support for the debug info. Recommit to fix the emission of
      the not required closing brace.
      
      Differential revision: https://reviews.llvm.org/D46189
      
      llvm-svn: 351972
      fe0b3560
    • Marshall Clow's avatar
      Commit D11348: 'Win32 support: wcsnrtombs and mbsnrtowcs don't handle null... · 8681a3bc
      Marshall Clow authored
      Commit D11348: 'Win32 support: wcsnrtombs and mbsnrtowcs don't handle null output buffers correctly' which has been hanging around for a long time
      
      llvm-svn: 351971
      8681a3bc
    • Craig Topper's avatar
      [X86] Autogenerate complete checks. NFC · aa0e74c1
      Craig Topper authored
      llvm-svn: 351970
      aa0e74c1
    • Aaron Ballman's avatar
      Merge similar target diagnostics for interrupt attribute into one; NFC · b0d74bfe
      Aaron Ballman authored
      Patch by Kristina Bessonova!
      
      llvm-svn: 351969
      b0d74bfe
    • James Henderson's avatar
      [llvm-symbolizer] Improve compatibility of --functions with GNU addr2line · 25ce596c
      James Henderson authored
      This fixes https://bugs.llvm.org/show_bug.cgi?id=40072.
      
      GNU addr2line's --functions switch is off by default, has a short alias
      of -f, and does not take an argument. This patch changes llvm-symbolizer
      to allow the second and third point (changing the default behaviour may
      have negative impacts on users). If the option is missing a value, it
      now treats it as "linkage".
      
      This change does cause one previously valid command-line to behave
      differently. Before --functions <value> was accepted, but now only
      --functions=<value> is allowed (as well as --functions). The old
      behaviour will result in the value being treated as a positional
      argument.
      
      The previous testing for --functions=short has been pulled out into a
      new test that also tests the other accepted values and option formats.
      
      Reviewed by: ruiu
      
      Differential Revision: https://reviews.llvm.org/D57049
      
      llvm-svn: 351968
      25ce596c
    • Haojian Wu's avatar
      Revert "[DEBUGINFO, NVPTX] Enable support for the debug info on NVPTX target." · 15a77418
      Haojian Wu authored
      This reverts commit r351846.
      
      This patch may generate illegal assembly code, see
      
      ```
      $ ./bin/clang -cc1 -triple nvptx64-nvidia-cuda -aux-triple x86_64-grtev4-linux-gnu -S -disable-free -disable-llvm-verifier -discard-value-names -main-file-name new.cc -mrelocation-model pic -pic-level 2 -mthread-model posix -fmerge-all-constants -mdisable-fp-elim -relaxed-aliasing -no-integrated-as -mpie-copy-relocations -munwind-tables -fcuda-is-device -target-feature +ptx60 -target-cpu sm_35 -dwarf-column-info -debug-info-kind=line-directives-only -dwarf-version=2 -debugger-tuning=gdb -o empty.s -x cuda empty.cc
      $  cat empty.s
      //
      // Generated by LLVM NVPTX Back-End
      //
      
      .version 6.0
      .target sm_35
      .address_size 64
      
      	}
      ```
      
      llvm-svn: 351966
      15a77418
    • Andrea Di Biagio's avatar
      [MC][X86] Correctly model additional operand latency caused by transfer delays... · d768d355
      Andrea Di Biagio authored
      [MC][X86] Correctly model additional operand latency caused by transfer delays from the integer to the floating point unit.
      
      This patch adds a new ReadAdvance definition named ReadInt2Fpu.
      ReadInt2Fpu allows x86 scheduling models to accurately describe delays caused by
      data transfers from the integer unit to the floating point unit.
      ReadInt2Fpu currently defaults to a delay of zero cycles (i.e. no delay) for all
      x86 models excluding BtVer2. That means, this patch is only a functional change
      for the Jaguar cpu model only.
      
      Tablegen definitions for instructions (V)PINSR* have been updated to account for
      the new ReadInt2Fpu. That read is mapped to the the GPR input operand.
      On Jaguar, int-to-fpu transfers are modeled as a +6cy delay. Before this patch,
      that extra delay was added to the opcode latency. In practice, the insert opcode
      only executes for 1cy. Most of the actual latency is actually contributed by the
      so-called operand-latency. According to the AMD SOG for family 16h, (V)PINSR*
      latency is defined by expression f+1, where f is defined as a forwarding delay
      from the integer unit to the fpu.
      
      When printing instruction latency from MCA (see InstructionInfoView.cpp) and LLC
      (only when flag -print-schedule is speified), we now need to account for any
      extra forwarding delays. We do this by checking if scheduling classes declare
      any negative ReadAdvance entries. Quoting a code comment in TargetSchedule.td:
      "A negative advance effectively increases latency, which may be used for
      cross-domain stalls". When computing the instruction latency for the purpose of
      our scheduling tests, we now add any extra delay to the formula. This avoids
      regressing existing codegen and mca schedule tests. It comes with the cost of an
      extra (but very simple) hook in MCSchedModel.
      
      Differential Revision: https://reviews.llvm.org/D57056
      
      llvm-svn: 351965
      d768d355
    • James Henderson's avatar
      [llvm-readelf] Don't suppress static symbol table with --dyn-symbols + --symbols · 21ed8683
      James Henderson authored
      In r287786, a bug was introduced into llvm-readelf where it didn't print
      the static symbol table if both --symbols and --dyn-symbols were
      specified, even if there was no dynamic symbol table. This is obviously
      incorrect.
      
      This patch fixes this issue, by delegating the decision of which symbol
      tables should be printed to the final dumper, rather than trying to
      decide in the command-line option handling layer. The decision was made
      to follow the approach taken in this patch because the LLVM style dumper
      uses a different order to the original GNU style behaviour (and GNU
      readelf) for ELF output. Other approaches resulted in behaviour changes
      for other dumpers which felt wrong. In particular, I wanted to avoid
      changing the order of the output for --symbols --dyn-symbols for LLVM
      style, keep what is emitted by --symbols unchanged for all dumpers, and
      avoid having different orders of .dynsym and .symtab dumping for GNU
      "--symbols" and "--symbols --dyn-symbols".
      
      Reviewed by: grimar, rupprecht
      
      Differential Revision: https://reviews.llvm.org/D57016
      
      llvm-svn: 351960
      21ed8683
    • Simon Pilgrim's avatar
      Fix indentation. NFCI. · ac5b7755
      Simon Pilgrim authored
      llvm-svn: 351958
      ac5b7755
    • Simon Pilgrim's avatar
      [IR] Match intrinsic parameter by scalar/vectorwidth · f87226eb
      Simon Pilgrim authored
      This patch replaces the existing LLVMVectorSameWidth matcher with LLVMScalarOrSameVectorWidth.
      
      The matching args must be either scalars or vectors with the same number of elements, but in either case the scalar/element type can differ, specified by LLVMScalarOrSameVectorWidth.
      
      I've updated the _overflow intrinsics to demonstrate this - allowing it to return a i1 or <N x i1> overflow result, matching the scalar/vectorwidth of the other (add/sub/mul) result type.
      
      The masked load/store/gather/scatter intrinsics have also been updated to use this, although as we specify the reference type to be llvm_anyvector_ty we guarantee the mask will be <N x i1> so no change in behaviour
      
      Differential Revision: https://reviews.llvm.org/D57090
      
      llvm-svn: 351957
      f87226eb
    • Krzysztof Parzyszek's avatar
      [Hexagon] Remove incorrect bit negation · 03671540
      Krzysztof Parzyszek authored
      llvm-svn: 351956
      03671540
    • Benjamin Kramer's avatar
      [AArch64] Fix out of bounds strlen · 4ebed81f
      Benjamin Kramer authored
      CFIInst is not zero-terminated. This is one of more annoying functional
      differences between StringRef and ArrayRef.
      
      Found by asan.
      
      llvm-svn: 351955
      4ebed81f
    • Clement Courbet's avatar
      Re-land rL322538 "Add a value_type to ArrayRef." · c7956346
      Clement Courbet authored
      llvm-svn: 351954
      c7956346
    • Simon Pilgrim's avatar
      Move saturated arithmetic intrinsics to other integer intrinsics. NFCI. · 0e08b6f0
      Simon Pilgrim authored
      They were in the floating point group.
      
      llvm-svn: 351953
      0e08b6f0
    • Nico Weber's avatar
      Disable test better. · 8874aef8
      Nico Weber authored
      llvm-svn: 351952
      8874aef8
    • George Rimar's avatar
      [llvm-objdump] - Move common code to a new printRelocation() helper. NFC. · 617adef9
      George Rimar authored
      This extracts the common code for printing relocations into a new helper function.
      
      llvm-svn: 351951
      617adef9
    • Tim Renouf's avatar
      [AMDGPU] With XNACK, cannot clause a load with result coalesced with operand · f64f8efe
      Tim Renouf authored
      Summary:
      With XNACK, an smem load whose result is coalesced with an operand (thus
      it overwrites its own operand) cannot appear in a clause, because some
      other instruction might XNACK and restart the whole clause.
      
      The clause breaker already realized that an smem that overwrites an
      operand cannot appear in a clause, and broke the clause. The problem
      that this commit fixes is that the SIFormMemoryClauses optimization
      formed a bundle with early clobber, which caused the earlier code that
      set up the coalesced operand to be removed as dead.
      
      Differential Revision: https://reviews.llvm.org/D57008
      
      Change-Id: I703c4d5b0bf7d6060222bec491f45c18bb3c0016
      llvm-svn: 351950
      f64f8efe
    • Nico Weber's avatar
      Disable test added in r351916. · 53c3c2c6
      Nico Weber authored
      It doesn't pass on Windows:
      http://lab.llvm.org:8011/builders/clang-x64-windows-msvc/builds/3627
      
      FAIL: lld :: ELF/stdout.s (1521 of 1966)
      ******************** TEST 'lld :: ELF/stdout.s' FAILED ********************
      Script:
      --
      : 'RUN: at line 3';   C:\b\slave\clang-x64-windows-msvc\build\build\stage1\bin\llvm-mc.EXE -filetype=obj -triple=x86_64-unknown-linux C:\b\slave\clang-x64-windows-msvc\build\llvm.src\tools\lld\test\ELF\stdout.s -o C:\b\slave\clang-x64-windows-msvc\build\build\stage1\tools\lld\test\ELF\Output\stdout.s.tmp.o
      : 'RUN: at line 4';   c:\b\slave\clang-x64-windows-msvc\build\build\stage1\bin\ld.lld.EXE C:\b\slave\clang-x64-windows-msvc\build\build\stage1\tools\lld\test\ELF\Output\stdout.s.tmp.o -o - > C:\b\slave\clang-x64-windows-msvc\build\build\stage1\tools\lld\test\ELF\Output\stdout.s.tmp1
      : 'RUN: at line 5';   C:\b\slave\clang-x64-windows-msvc\build\build\stage1\bin\llvm-objdump.EXE -d C:\b\slave\clang-x64-windows-msvc\build\build\stage1\tools\lld\test\ELF\Output\stdout.s.tmp1 | C:\b\slave\clang-x64-windows-msvc\build\build\stage1\bin\FileCheck.EXE C:\b\slave\clang-x64-windows-msvc\build\llvm.src\tools\lld\test\ELF\stdout.s
      : 'RUN: at line 10';   c:\b\slave\clang-x64-windows-msvc\build\build\stage1\bin\ld.lld.EXE C:\b\slave\clang-x64-windows-msvc\build\build\stage1\tools\lld\test\ELF\Output\stdout.s.tmp.o -o C:\b\slave\clang-x64-windows-msvc\build\build\stage1\tools\lld\test\ELF\Output\stdout.s.tmp2
      : 'RUN: at line 11';   diff C:\b\slave\clang-x64-windows-msvc\build\build\stage1\tools\lld\test\ELF\Output\stdout.s.tmp1 C:\b\slave\clang-x64-windows-msvc\build\build\stage1\tools\lld\test\ELF\Output\stdout.s.tmp2
      --
      Exit Code: 1
      
      Command Output (stdout):
      --
      $ ":" "RUN: at line 3"
      $ "C:\b\slave\clang-x64-windows-msvc\build\build\stage1\bin\llvm-mc.EXE" "-filetype=obj" "-triple=x86_64-unknown-linux" "C:\b\slave\clang-x64-windows-msvc\build\llvm.src\tools\lld\test\ELF\stdout.s" "-o" "C:\b\slave\clang-x64-windows-msvc\build\build\stage1\tools\lld\test\ELF\Output\stdout.s.tmp.o"
      $ ":" "RUN: at line 4"
      $ "c:\b\slave\clang-x64-windows-msvc\build\build\stage1\bin\ld.lld.EXE" "C:\b\slave\clang-x64-windows-msvc\build\build\stage1\tools\lld\test\ELF\Output\stdout.s.tmp.o" "-o" "-"
      $ ":" "RUN: at line 5"
      $ "C:\b\slave\clang-x64-windows-msvc\build\build\stage1\bin\llvm-objdump.EXE" "-d" "C:\b\slave\clang-x64-windows-msvc\build\build\stage1\tools\lld\test\ELF\Output\stdout.s.tmp1"
      $ "C:\b\slave\clang-x64-windows-msvc\build\build\stage1\bin\FileCheck.EXE" "C:\b\slave\clang-x64-windows-msvc\build\llvm.src\tools\lld\test\ELF\stdout.s"
      $ ":" "RUN: at line 10"
      $ "c:\b\slave\clang-x64-windows-msvc\build\build\stage1\bin\ld.lld.EXE" "C:\b\slave\clang-x64-windows-msvc\build\build\stage1\tools\lld\test\ELF\Output\stdout.s.tmp.o" "-o" "C:\b\slave\clang-x64-windows-msvc\build\build\stage1\tools\lld\test\ELF\Output\stdout.s.tmp2"
      $ ":" "RUN: at line 11"
      $ "diff" "C:\b\slave\clang-x64-windows-msvc\build\build\stage1\tools\lld\test\ELF\Output\stdout.s.tmp1" "C:\b\slave\clang-x64-windows-msvc\build\build\stage1\tools\lld\test\ELF\Output\stdout.s.tmp2"
      # command output:
      *** C:\b\slave\clang-x64-windows-msvc\build\build\stage1\tools\lld\test\ELF\Output\stdout.s.tmp1
      --- C:\b\slave\clang-x64-windows-msvc\build\build\stage1\tools\lld\test\ELF\Output\stdout.s.tmp2
      ***************
      *** 1 ****
      
      llvm-svn: 351949
      53c3c2c6
    • Martin Storsjö's avatar
      [llvm-objcopy] [COFF] Error out on use of unhandled options · 0d19a399
      Martin Storsjö authored
      Prefer erroring out than silently not doing what was requested.
      
      Differential Revision: https://reviews.llvm.org/D57045
      
      llvm-svn: 351948
      0d19a399
    • Martin Storsjö's avatar
      [llvm-objcopy] [COFF] Fix handling of aux symbols for big objects · 1be91958
      Martin Storsjö authored
      The aux symbols were stored in an opaque std::vector<uint8_t>,
      with contents interpreted according to the rest of the symbol.
      
      All aux symbol types but one fit in 18 bytes (sizeof(coff_symbol16)),
      and if written to a bigobj, two extra padding bytes are written (as
      sizeof(coff_symbol32) is 20). In the storage agnostic intermediate
      representation, store the aux symbols as a series of coff_symbol16
      sized opaque blobs. (In practice, all such aux symbols only consist
      of one aux symbol, so this is more flexible than what reality needs.)
      
      The special case is the file aux symbols, which are written in
      potentially more than one aux symbol slot, without any padding,
      as one single long string. This can't be stored in the same opaque
      vector of fixed sized aux symbol entries. The file aux symbols will
      occupy a different number of aux symbol slots depending on the type
      of output object file. As nothing in the intermediate process needs
      to have accurate raw symbol indices, updating that is moved into the
      writer class.
      
      Differential Revision: https://reviews.llvm.org/D57009
      
      llvm-svn: 351947
      1be91958
    • Martin Storsjö's avatar
      [llvm-objcopy] [COFF] Remove testcase debugging lines. NFC. · 48133405
      Martin Storsjö authored
      These are no longer necessary as the testcase now seems to run fine
      on the buildbots that previously failed on this case, after SVN r351934.
      
      llvm-svn: 351946
      48133405
    • Florian Hahn's avatar
      [HotColdSplitting] Remove unused SSAUpdater.h include (NFC). · 68cea130
      Florian Hahn authored
      llvm-svn: 351945
      68cea130
    • Kamil Rytarowski's avatar
      Mark more tests flaky · 776cf71d
      Kamil Rytarowski authored
      Reported on the NetBSD 8 buildbot
      
      llvm-svn: 351944
      776cf71d
Loading