1. Dec 12, 2019
  2. Dec 11, 2019
    • Craig Topper's avatar
      [X86] Erase dead LEA instruction after converting it to MOV in... · 3adc819b
      Craig Topper authored
      [X86] Erase dead LEA instruction after converting it to MOV in FixupLEAPass::processInstrForSlow3OpLEA.
      3adc819b
    • Reid Kleckner's avatar
      [TableGen] Remove unused target intrinsic generation logic · 72c68f13
      Reid Kleckner authored
      AMDGPU was the last in tree target to use this tablegen mode. I plan to
      split up the global intrinsic enum similar to the way that clang
      diagnostics are split up today. I don't plan to build on this mode.
      
      Reviewers: arsenm, echristo, efriedma
      
      Reviewed By: echristo
      
      Differential Revision: https://reviews.llvm.org/D71318
      72c68f13
    • Ulrich Weigand's avatar
      [SystemZ] Fix 128-bit strict FMA expansion pre-z14 · ac473394
      Ulrich Weigand authored
      Before z14, we did not have any FMA instruction for 128-bit
      floating-point, so the @llvm.fma.f128 intrinsic needs to be
      expanded to a libcall on those platforms.
      
      This worked correctly for regular FMA, but was implemented
      incorrectly for the strict version.  This was not noticed
      because we did not have test coverage for this case.
      
      This patch fixes that incorrect expansion and adds the
      missing test cases.
      ac473394
    • Kit Barton's avatar
      [Loop] Add isRotated method to Loop class. · 942c9946
      Kit Barton authored
      Summary:
      This patch adds a method to determine if a loop is in rotated form (the latch is
      an exiting block). It also modifies the getLoopGuardBranch method to use this
      new method. This method can also be used in Loopfusion. Once this patch lands I
      will make the corresponding changes there.
      
      Reviewers: jdoerfert, Meinersbur, dmgreen, etiotto, Whitney, fhahn, hfinkel
      
      Reviewed By: Meinersbur
      
      Subscribers: hiraditya, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D65958
      942c9946
    • Russell Gallop's avatar
      [Support] Add TimeTraceScope constructor without detail arg · df494f75
      Russell Gallop authored
      This simplifies code where no extra details are required
      Also don't write out detail when it is empty.
      
      Differential Revision: https://reviews.llvm.org/D71347
      df494f75
    • Diogo Sampaio's avatar
      [ARM][NFC] Change test to use CHECK-NEXT · ee219345
      Diogo Sampaio authored
      ee219345
    • Matt Arsenault's avatar
      Verifier: Check frame-pointer attribute values · 49d731b5
      Matt Arsenault authored
      There are a few places that check specific string attributes have
      particular values, and assert if they are something else. The verifier
      should catch these kinds of cases.
      49d731b5
    • Adam Balogh's avatar
      [Analyzer] Iterator Checkers: Replace `UnknownVal` in comparison result by a conjured value · 855d21a0
      Adam Balogh authored
      Sometimes the return value of a comparison operator call is
      `UnkownVal`. Since no assumptions can be made on `UnknownVal`,
      this leeds to keeping impossible execution paths in the
      exploded graph resulting in poor performance and false
      positives. To overcome this we replace unknown results of
      iterator comparisons by conjured symbols.
      
      Differential Revision: https://reviews.llvm.org/D70244
      855d21a0
    • Matt Arsenault's avatar
      AMDGPU: Fix copy-pasted test name error · 32137699
      Matt Arsenault authored
      32137699
    • Peter Smith's avatar
      [LLD][ELF][AArch64][ARM] When errata patching, round thunk size to 4KiB. · 86d24193
      Peter Smith authored
      On some edge cases such as Chromium compiled with full instrumentation we
      have a .text section over twice the size of the maximum branch range and
      the instrumented code generation containing many examples of the erratum
      sequence. The combination of Thunks and many erratum sequences causes
      finalizeAddressDependentContent() to not converge. We end up with:
      start
      - Thunk Creation (disturbs addresses after thunks, creating more patches)
      - Patch Creation (disturbs addresses after patches, creating more thunks)
      - goto start
      
      In most images with few thunks and patches the mutual disturbance does not
      cause convergence problems. As the .text size and number of patches go up
      the risk increases.
      
      A way to prevent the thunk creation from interfering with patch creation is
      to round up the size of the thunks to a 4KiB boundary when the
      erratum patch is enabled. As the erratum sequence only triggers when an
      instruction sequence starts at 0xff8 or 0xffc modulo (4 KiB) by making the
      thunks not affect addresses modulo (4 KiB) we prevent thunks from
      interfering with the patch.
      
      The patches themselves could be aggregated in the same way that Thunks are
      within ThunkSections and we could round up the size in the same way. This
      would reduce the number of patches created in a .text section size >
      128 MiB but would not likely help convergence problems.
      
      Differential Revision: https://reviews.llvm.org/D71281
      
      fixes (remaining part of) pr44071, other part in D71242
      86d24193
    • Peter Smith's avatar
      [LLD][ELF][AArch64][ARM] Add missing classof to patch sections. · 247b2ce1
      Peter Smith authored
      The code to insert patch section merges them with a comparison function that
      uses logic of the form:
      return (isa<PatchSection>(a) && !isa<PatchSection>(b));
      If the PatchSections don't implement classof this check fails if b is also
      a SyntheticSection. This can result in the patches being out of range if
      the SyntheticSection is big, for example a ThunkSection with lots of thunks.
      
      Differential Revision: https://reviews.llvm.org/D71242
      
      fixes (part of) pr44071
      247b2ce1
    • Raphael Isemann's avatar
      [lldb] Don't search the metadata map three times when retrieving metadata · c7738cca
      Raphael Isemann authored
      HasMetadata checks if our metadata map knows the given object. GetMetadata
      also does this check and then does another search to actually retrieve
      the value. This can all just be one lookup.
      c7738cca
    • Kerry McLaughlin's avatar
    • Florian Hahn's avatar
      [AArch64] Teach Load/Store optimizier to rename store operands for pairing. · 17554b89
      Florian Hahn authored
      In some cases, we can rename a store operand, in order to enable pairing
      of stores.  For store pairs, that cannot be merged because the first
      tored register is defined in between the second store, we try to find
      suitable rename register.
      
      First, we check if we can rename the given register:
      
      1. The first store register must be killed at the store, which means we
         do not have to rename instructions after the first store.
      2. We scan backwards from the first store, to find the definition of the
         stored register and check all uses in between are renamable. Along
         they way, we collect the minimal register classes of the uses for
         overlapping (sub/super)registers.
      
      Second, we try to find an available register from the minimal physical
      register class of the original register. A suitable register must not be
      
      1. defined before FirstMI
      2. between the previous definition of the register to rename
      3. a callee saved register.
      
      We use KILL flags to clear defined registers while scanning from the
      beginning to the end of the block.
      
      This triggers quite often, here are the top changes for MultiSource,
      SPEC2000, SPEC2006 compiled with -O3 for iOS:
      
      Metric: aarch64-ldst-opt.NumPairCreated
      
      Program                                        base     patch    diff
       test-suite...nch/fourinarow/fourinarow.test     2.00    39.00   1850.0%
       test-suite...s/ASC_Sequoia/IRSmk/IRSmk.test    46.00    80.00   73.9%
       test-suite...chmarks/Olden/power/power.test    70.00    96.00   37.1%
       test-suite...cations/hexxagon/hexxagon.test    29.00    39.00   34.5%
       test-suite...nchmarks/McCat/05-eks/eks.test   100.00   132.00   32.0%
       test-suite.../Trimaran/enc-rc4/enc-rc4.test    46.00    59.00   28.3%
       test-suite...T2006/473.astar/473.astar.test   160.00   200.00   25.0%
       test-suite.../Trimaran/enc-md5/enc-md5.test     8.00    10.00   25.0%
       test-suite...telecomm-gsm/telecomm-gsm.test   113.00   139.00   23.0%
       test-suite...ediabench/gsm/toast/toast.test   113.00   139.00   23.0%
       test-suite...Source/Benchmarks/sim/sim.test    91.00   111.00   22.0%
       test-suite...C/CFP2000/179.art/179.art.test    41.00    49.00   19.5%
       test-suite...peg2/mpeg2dec/mpeg2decode.test   245.00   279.00   13.9%
       test-suite...marks/Olden/health/health.test    16.00    18.00   12.5%
       test-suite...ks/Prolangs-C/cdecl/cdecl.test    90.00   101.00   12.2%
       test-suite...fice-ispell/office-ispell.test    91.00   100.00    9.9%
       test-suite...oxyApps-C/miniGMG/miniGMG.test   430.00   465.00    8.1%
       test-suite...lowfish/security-blowfish.test    39.00    42.00    7.7%
       test-suite.../Applications/spiff/spiff.test    42.00    45.00    7.1%
       test-suite...arks/mafft/pairlocalalign.test   2473.00  2646.00   7.0%
       test-suite.../VersaBench/ecbdes/ecbdes.test    29.00    31.00    6.9%
       test-suite...nch/beamformer/beamformer.test   220.00   235.00    6.8%
       test-suite...CFP2000/177.mesa/177.mesa.test   2110.00  2252.00   6.7%
       test-suite...ve-susan/automotive-susan.test   109.00   116.00    6.4%
       test-suite...s-C/unix-smail/unix-smail.test    65.00    69.00    6.2%
       test-suite...CI_Purple/SMG2000/smg2000.test   1194.00  1265.00   5.9%
       test-suite.../Benchmarks/nbench/nbench.test   472.00   500.00    5.9%
       test-suite...oxyApps-C/miniAMR/miniAMR.test   248.00   262.00    5.6%
       test-suite...quoia/CrystalMk/CrystalMk.test    18.00    19.00    5.6%
       test-suite...rks/tramp3d-v4/tramp3d-v4.test   7331.00  7710.00   5.2%
       test-suite.../Benchmarks/Bullet/bullet.test   5651.00  5938.00   5.1%
       test-suite...ternal/HMMER/hmmcalibrate.test   750.00   788.00    5.1%
       test-suite...T2006/456.hmmer/456.hmmer.test   764.00   802.00    5.0%
       test-suite...ications/JM/ldecod/ldecod.test   1028.00  1079.00   5.0%
       test-suite...CFP2006/444.namd/444.namd.test   1368.00  1434.00   4.8%
       test-suite...marks/7zip/7zip-benchmark.test   4471.00  4685.00   4.8%
       test-suite...6/464.h264ref/464.h264ref.test   3122.00  3271.00   4.8%
       test-suite...pplications/oggenc/oggenc.test   1497.00  1565.00   4.5%
       test-suite...T2000/300.twolf/300.twolf.test   742.00   774.00    4.3%
       test-suite.../Prolangs-C/loader/loader.test    24.00    25.00    4.2%
       test-suite...0.perlbench/400.perlbench.test   1983.00  2058.00   3.8%
       test-suite...ications/JM/lencod/lencod.test   4612.00  4785.00   3.8%
       test-suite...yApps-C++/PENNANT/PENNANT.test   995.00   1032.00   3.7%
       test-suite...arks/VersaBench/dbms/dbms.test    54.00    56.00    3.7%
      
      Reviewers: efriedma, thegameg, samparker, dmgreen, paquette, evandro
      
      Reviewed By: paquette
      
      Differential Revision: https://reviews.llvm.org/D70450
      17554b89
    • Aaron Ballman's avatar
    • James Henderson's avatar
      [test][llvm-dwarfdump] Add missing testing for some --debug-* options · 5224feb7
      James Henderson authored
      A number of the --debug-* options in llvm-dwarfdump are not particularly
      well tested. In some cases, the option is only tested as part of testing
      another feature, or a specific part of the section that the options
      dump. This change adds four new tests to address some of these holes. It
      is not aiming to address every hole however.
      
      I kept the --debug-line switch test separate to X86/brief.s because the
      latter only considers the parts of the line table that are affected by
      verbose printing, thus missing out things like the header and different
      values for things like the Line, Column etc registers.
      
      Reviewed by: JDevlieghere
      
      Differential Revision: https://reviews.llvm.org/D71276
      5224feb7
    • Guillaume Chatelet's avatar
      [Alignment][NFC] Introduce Align in IRBuilder · 0a0d54b3
      Guillaume Chatelet authored
      Summary:
      This is patch is part of a series to introduce an Alignment type.
      See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2019-July/133851.html
      See this patch for the introduction of the type: https://reviews.llvm.org/D64790
      
      Reviewers: courbet
      
      Subscribers: hiraditya, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D71343
      0a0d54b3
    • James Henderson's avatar
      [DebugInfo] Fix printing of DW_LNS_set_isa · 2f815502
      James Henderson authored
      The Isa register is a uint8_t, but at least on Windows this is
      internally an unsigned char, which meant that prior to this patch it got
      formatted as an ASCII character, rather than a decimal number. This
      patch fixes this by casting it to a uint64_t before printing. I did it
      this way instead of using a uint8_t formatter because a) it is simpler,
      and b) it allows us to change the internal type of Isa in the future
      without this code breaking.
      
      I also took the opportunity to test the printing of the other standard
      opcodes.
      
      Reviewed by: probinson
      
      Differential Revision: https://reviews.llvm.org/D71274
      2f815502
    • Raphael Isemann's avatar
    • Guillaume Chatelet's avatar
      Rollback assumeAligned in MemorySanitizer · 34911095
      Guillaume Chatelet authored
      Summary: Rollback of parts of D71213. After digging more into the code I think we should leave 0 when creating the instructions (CreateMemcpy, CreateMaskedStore, CreateMaskedLoad). It's probably fine for MemorySanitizer because Alignement is resolved but I'm having a hard time convincing myself it has no impact at all (although tests are passing).
      
      Reviewers: courbet
      
      Subscribers: hiraditya, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D71332
      34911095
    • Adam Balogh's avatar
      [Analyzer] Iterator Modeling: Print Container Data and Iterator Positions when... · 6e9c5894
      Adam Balogh authored
      [Analyzer] Iterator Modeling: Print Container Data and Iterator Positions when printing the Program State
      
      Debugging the Iterator Modeling checker or any of the iterator checkers
      is difficult without being able to see the relations between the
      iterator variables and their abstract positions, as well as the abstract
      symbols denoting the begin and the end of the container.
      
      This patch adds the checker-specific part of the Program State printing
      to the Iterator Modeling checker.
      6e9c5894
    • Raphael Isemann's avatar
      [lldb][NFC] Remove ClangExternalASTSourceCommon::g_TotalSizeOfMetadata · 3bf8558f
      Raphael Isemann authored
      Turns out this counter is doing literally nothing beside counting.
      3bf8558f
    • Andrzej Warzynski's avatar
      [AArch64][SVE] Add DAG combine rules for gather loads and sext/zext · 65651f19
      Andrzej Warzynski authored
      Summary:
      These changes allow us to support sign-extending gather loads with the
      exisiting intrinsics (i.e. @llvm.aarch64.sve.ld1.gather.*).
      
      Reviewers: sdesmalen, huntergr, kmclaughlin, efriedma, rengolin, rovka, dancgr, mgudim
      
      Reviewed By: sdesmalen
      
      Subscribers: tschuett, kristof.beyls, hiraditya, rkruppe, psnobl, llvm-commits
      
      Tags: #llvm
      
      Differential revision: https://reviews.llvm.org/D70812
      65651f19
    • Alexey Bader's avatar
      [SYCL] Add support for auxiliary triple specification to Frontend · cb30ad72
      Alexey Bader authored
      Summary:
      Add host predefined macros to compilation for SYCL device, which is
      required for pre-processing host specific includes (e.g. system
      headers).
      
      Reviewers: ABataev, jdoerfert
      
      Subscribers: ebevhan, Anastasia, cfe-commits, keryell, Naghasan, Fznamznon
      
      Tags: #clang
      
      Differential Revision: https://reviews.llvm.org/D71286
      
      
      
      Signed-off-by: default avatarAlexey Bader <alexey.bader@intel.com>
      cb30ad72
    • Nicolai Hähnle's avatar
      CodeGen: Allow annotations on globals in non-zero address space · f21c081b
      Nicolai Hähnle authored
      Summary:
      Attribute annotations are recorded in a special global composite variable
      that points to annotation strings and the annotated objects.
      
      As a restriction of the LLVM IR type system, those pointers are all
      pointers to address space 0, so let's insert an addrspacecast when the
      annotated global is in a non-0 address space.
      
      Since this addrspacecast is only reachable from the global annotations
      object, this should allow us to represent annotations on all globals
      regardless of which addrspacecasts are usually legal for the target.
      
      Reviewers: rjmccall
      
      Subscribers: cfe-commits
      
      Tags: #clang
      
      Differential Revision: https://reviews.llvm.org/D71208
      f21c081b
    • LLVM GN Syncbot's avatar
      gn build: Merge afb13afc · 5ceb36b2
      LLVM GN Syncbot authored
      5ceb36b2