1. Nov 16, 2019
  2. Nov 15, 2019
  3. Nov 14, 2019
    • Amy Huang's avatar
      Fix merge issues in b288f7d6 · 840845a1
      Amy Huang authored
      840845a1
    • Amy Huang's avatar
      [codeview] Fix for PR43479 · b288f7d6
      Amy Huang authored
      Summary:
      Add instruction marker to MachineInstr ExtraInfo. This does almost the
      same thing as Pre/PostInstrSymbols, except that it doesn't create a label until
      printing instructions. This allows for labels to be put around instructions that
      are deleted/duplicated somewhere.
      Use this marker to track heap alloc site call instructions.
      
      Reviewers: rnk
      
      Subscribers: MatzeB, hiraditya, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D69536
      
      cherry picked from 74204304 with some
      modifications.
      b288f7d6
  4. Nov 13, 2019
    • Leonard Chan's avatar
      [Sema] Add MacroQualified case for FunctionTypeUnwrapper · bc6d0f15
      Leonard Chan authored
      This is a fix for PR43315. An assertion error is hit for this minimal example:
      
      ```
      //clang -cc1 -triple x86_64-- -S tstVMStructRC-min.cpp
      int (a b)();  // Assertion `Chunk.Kind == DeclaratorChunk::Function' failed.
      ```
      
      This is because we do not cover the case in the FunctionTypeUnwrapper where it
      receives a MacroQualifiedType. We have not run into this earlier because this
      is a unique case where the __attribute__ contains both __cdecl__ and
      __regparm__ (in that order), and we are compiling for x86_64. Changing the
      architecture or the order of __cdecl__ and __regparm__ does not raise the
      assertion.
      
      Differential Revision: https://reviews.llvm.org/D67992
      
      (cherry picked from commit e278c138)
      bc6d0f15
    • Michal Gorny's avatar
      Merging r371733: · 2cec4d08
      Michal Gorny authored
      ------------------------------------------------------------------------
      r371733 | mgorny | 2019-09-12 06:06:12 -0700 (Thu, 12 Sep 2019) | 7 lines
      
      [clang] [unittest] Import LLVMTestingSupport if necessary
      
      Add LLVMTestingSupport directory from LLVM_MAIN_SRC_DIR when building
      clang stand-alone and LLVMTestingSupport library is not present.  This
      is needed to fix stand-alone builds without clang-tools-extra.
      
      Differential Revision: https://reviews.llvm.org/D67452
      ------------------------------------------------------------------------
      2cec4d08
    • Craig Topper's avatar
      Merging r373397: · 933cfc66
      Craig Topper authored
      ------------------------------------------------------------------------
      r373397 | ctopper | 2019-10-01 14:55:55 -0700 (Tue, 01 Oct 2019) | 8 lines
      
      [X86] convertToThreeAddress, make sure second operand of SUB32ri is really an immediate before calling getImm().
      
      It might be a symbol instead. We can't fold those since we can't
      negate them.
      
      Similar for other SUB with immediates.
      
      Fixes PR43529.
      ------------------------------------------------------------------------
      933cfc66
    • Hans Wennborg's avatar
      Merging r373049: · 28726b90
      Hans Wennborg authored
      ------------------------------------------------------------------------
      r373049 | hans | 2019-09-27 01:14:45 -0700 (Fri, 27 Sep 2019) | 4 lines
      
      Fix the 'directory' field in DumpCompilationDatabase and add test
      
      This broke in r371027 due to a missing negation
      (llvm::sys::fs::current_path returns false on success).
      ------------------------------------------------------------------------
      28726b90
    • Muhammad Omair Javaid's avatar
      Revert "Fix lookup of symbols at the same address with no size vs. size" · 5ab44f3e
      Muhammad Omair Javaid authored
      This reverts commit 3f594ed1.
      
      This change has cause LLDB expression evaluation to fail on Arm Linux.
      
      Differential Revision: https://reviews.llvm.org/D63540
      
      (cherry picked from commit a6c40f56)
      5ab44f3e
    • Sanjay Patel's avatar
      Merging r372886: · 7a140f4a
      Sanjay Patel authored
      ------------------------------------------------------------------------
      r372886 | spatel | 2019-09-25 08:08:33 -0700 (Wed, 25 Sep 2019) | 7 lines
      
      [DAGCombiner] add one-use restriction to vector transform with cheap extract
      
      We might be able to do better on the example in the test,
      but in general, we should not scalarize a splatted vector
      binop if there are other uses of the binop. Otherwise, we
      can end up with code as we had - a scalar op that is
      redundant with a vector op.
      ------------------------------------------------------------------------
      7a140f4a
    • Sanjay Patel's avatar
      Merging r372883: · 07c14222
      Sanjay Patel authored
      ------------------------------------------------------------------------
      r372883 | spatel | 2019-09-25 07:57:45 -0700 (Wed, 25 Sep 2019) | 1 line
      
      [x86] add test for multi-use scalarization of vector binop; NFC
      ------------------------------------------------------------------------
      07c14222
    • Amara Emerson's avatar
      Merging r372675: · 0acab01d
      Amara Emerson authored
      ------------------------------------------------------------------------
      r372675 | aemerson | 2019-09-23 17:09:23 -0700 (Mon, 23 Sep 2019) | 7 lines
      
      [GlobalISel][IRTranslator] Fix switch table lowering to use signed LE not unsigned.
      
      We were miscompiling switch value comparisons with the wrong signedness, which
      shows up when we have things like switch case values with i1 types, which end up
      being legalized incorrectly.
      
      Fixes PR43383
      ------------------------------------------------------------------------
      0acab01d
  5. Nov 09, 2019
    • Jian Cai's avatar
      Merging r372038: · 4e858e4a
      Jian Cai authored
      ------------------------------------------------------------------------
      r372038 | jcai19 | 2019-09-16 14:47:47 -0700 (Mon, 16 Sep 2019) | 15 lines
      
      [compiler-rt][crt]  make test case nontrivial in check_cxx_section_exists
      
      Summary:
      .init_array gets optimized away when building with -O2 and as a result,
      check_cxx_section_exists failed to pass -DCOMPILER_RT_HAS_INITFINI_ARRAY
      when building crtbegin.o and crtend.o, which causes binaries linked with
      them encounter segmentation fault. See https://crbug.com/855759 for
      details. This change prevents .init_array section to be optimized away
      even with -O2 or higher optimization level.
      
      Subscribers: dberris, mgorny, #sanitizers, llvm-commits
      
      Tags: #sanitizers, #llvm
      
      Differential Revision: https://reviews.llvm.org/D67628
      ------------------------------------------------------------------------
      4e858e4a
    • Simon Atanasyan's avatar
      Merging r374598: · 8b0167fd
      Simon Atanasyan authored
      ------------------------------------------------------------------------
      r374598 | atanasyan | 2019-10-11 14:51:33 -0700 (Fri, 11 Oct 2019) | 12 lines
      
      [mips] Store 64-bit `li.d' operand as a single 8-byte value
      
      Now assembler generates two consecutive `.4byte` directives to store
      64-bit `li.d' operand. The first directive stores high 4-byte of the
      value. The second directive stores low 4-byte of the value. But on
      64-bit system we load this value at once and get wrong result if the
      system is little-endian.
      
      This patch fixes the bug. It stores the `li.d' operand as a single
      8-byte value.
      
      Differential Revision: https://reviews.llvm.org/D68778
      ------------------------------------------------------------------------
      8b0167fd
  6. Nov 08, 2019
    • Sam Clegg's avatar
      Merging r375077: · 6851dcc0
      Sam Clegg authored
      ------------------------------------------------------------------------
      r375077 | sbc | 2019-10-16 20:21:02 -0700 (Wed, 16 Oct 2019) | 10 lines
      
      [lld][WebAssembly] Fix for weak references to data symbols in archives
      
      Fix a bug where were not handling relocations against weakly undefined
      data symbol.  Add a test for this case.  Also ensure that the weak
      references to data symbols are not pulled in from archive files by
      default (but are if `-u <name>` is added to the command line).
      
      Fixes: PR43696
      
      Differential Revision: https://reviews.llvm.org/D69073
      ------------------------------------------------------------------------
      6851dcc0
    • Simon Atanasyan's avatar
      Merging r374544 and r374548: · 94970749
      Simon Atanasyan authored
      ------------------------------------------------------------------------
      r374544 | atanasyan | 2019-10-11 05:33:12 -0700 (Fri, 11 Oct 2019) | 12 lines
      
      [mips] Fix loading "double" immediate into a GPR and FPR
      
      If a "double" (64-bit) value has zero low 32-bits, it's possible to load
      such value into a GP/FP registers as an instruction immediate. But now
      assembler loads only high 32-bits of the value.
      
      For example, if a target register is GPR the `li.d $4, 1.0` instruction
      converts into the `lui $4, 16368` one. As a result, we get `0x3FF00000`
      in the register. While a correct representation of the `1.0` value is
      `0x3FF0000000000000`. The patch fixes that.
      
      Differential Revision: https://reviews.llvm.org/D68776
      ------------------------------------------------------------------------
      
      ------------------------------------------------------------------------
      r374548 | atanasyan | 2019-10-11 05:58:37 -0700 (Fri, 11 Oct 2019) | 1 line
      
      [mips] Follow-up to r374544. Fix test case.
      ------------------------------------------------------------------------
      94970749
    • Simon Atanasyan's avatar
      Merging r374165: · 74232111
      Simon Atanasyan authored
      ------------------------------------------------------------------------
      r374165 | atanasyan | 2019-10-09 06:12:27 -0700 (Wed, 09 Oct 2019) | 1 line
      
      [mips] Rename local variable. NFC
      ------------------------------------------------------------------------
      74232111
    • Simon Atanasyan's avatar
      Merging r374164: · af1f5f7d
      Simon Atanasyan authored
      ------------------------------------------------------------------------
      r374164 | atanasyan | 2019-10-09 06:12:21 -0700 (Wed, 09 Oct 2019) | 8 lines
      
      [mips] Split expandLoadImmReal into multiple methods. NFC
      
      The `expandLoadImmReal` handles four different and almost non-overlapping
      cases: loading a "single" float immediate into a GPR, loading a "single"
      float immediate into a FPR, and the same couple for a "double" float
      immediate.
      
      It's better to move each `else if` branch into separate methods.
      ------------------------------------------------------------------------
      af1f5f7d
    • James Henderson's avatar
      [llvm-objcopy] Preserve .ARM.attributes section when stripping files · 2c69f984
      James Henderson authored
      This works around a bug in Debian's patchset for glibc. The bug is
      described in detail in the upstream debian bug:
      https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=943798, but the short
      version of it is that glibc on any Debian based distro don't load
      libraries unless it has a .ARM.attribute section.
      
      Reviewed by: jhenderson, rupprecht, MaskRay, jakehehrlich
      
      Differential Revision: https://reviews.llvm.org/D69188
      
      Patch by Tobias Hieta.
      
      (cherry picked from commit fb4a5501)
      2c69f984
    • Austin Kerbow's avatar
      Merging r375265: · 64bc08ac
      Austin Kerbow authored
      ------------------------------------------------------------------------
      r375265 | kerbowa | 2019-10-18 11:20:30 -0700 (Fri, 18 Oct 2019) | 13 lines
      
      AMDGPU: Fix SMEM WAR hazard for gfx10 readlane
      
      Summary: Hazard recognizer fails to see hazard with V_READLANE_B32_gfx10.
      
      Reviewers: rampitec
      
      Reviewed By: rampitec
      
      Subscribers: arsenm, kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, hiraditya, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D69172
      ------------------------------------------------------------------------
      64bc08ac
    • Sam Clegg's avatar
      Merging r368310: · cf231596
      Sam Clegg authored
      ------------------------------------------------------------------------
      r368310 | sbc | 2019-08-08 09:58:36 -0700 (Thu, 08 Aug 2019) | 11 lines
      
      [lld][WebAssembly] Add optional symbols after input file handling
      
      This allows undefined references in input files be resolved by the
      optional symbols.  Previously we were doing this before input file
      reading which means it was working only for command line symbols
      references (i.e. -u or --export).
      
      Also use addOptionalDataSymbol for __dso_handle and make all optional
      symbols hidden by default.
      
      Differential Revision: https://reviews.llvm.org/D65920
      ------------------------------------------------------------------------
      cf231596
  7. Nov 06, 2019
    • Pengfei Wang's avatar
      [WinEH] Allocate space in funclets stack to save XMM CSRs · 9a9b6492
      Pengfei Wang authored
      
      
      Summary:
      This is an alternate approach to D63396
      
      Currently funclets reuse the same stack slots that are used in the
      parent function for saving callee-saved xmm registers. If the parent
      function modifies a callee-saved xmm register before an excpetion is
      thrown, the catch handler will overwrite the original saved value.
      
      This patch allocates space in funclets stack for saving callee-saved xmm
      registers and uses RSP instead RBP to access memory.
      
      Signed-off-by: default avatarPengfei Wang <pengfei.wang@intel.com>
      
      Reviewers: rnk, RKSimon, craig.topper, annita.zhang, LuoYuanke, andrew.w.kaylor
      
      Subscribers: hiraditya, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D66596
      
      
      
      Signed-off-by: default avatarPengfei Wang <pengfei.wang@intel.com>
      llvm-svn: 370005
      (cherry picked from commit 564fb58a)
      9a9b6492
  8. Oct 31, 2019
    • Reid Kleckner's avatar
      [MS] Fix constexpr data member pointer conversions · 2d75b245
      Reid Kleckner authored
      Constexpr data member conversions work by starting with the class that
      originally introduced the field, and converting from there to the type
      that the user desires. Before this change, Clang was using the
      inheritance model from the final destination class type instead of the
      model from the class that originally introduced the field. To fix this,
      find the relevant FieldDecl and take its parent class instead of using
      the member pointer type the user provided.
      
      Indirect field decls require some special handling to find the parent
      class.
      
      Fixes PR43803
      
      (cherry picked from commit 07ee46d6)
      2d75b245
  9. Oct 29, 2019
    • Reid Kleckner's avatar
      [codeview] Workaround for PR43479, don't re-emit instr labels · a4b77f5f
      Reid Kleckner authored
      Summary:
      In the long run we should come up with another mechanism for marking
      call instructions as heap allocation sites, and remove this workaround.
      For now, we've had two bug reports about this, so let's apply this
      workaround. SLH (the other client of instruction labels) probably has
      the same bug, but the solution there is more likely to be to mark the
      call instruction as not duplicatable, which doesn't work for debug info.
      
      Reviewers: akhuang
      
      Subscribers: aprantl, hiraditya, aganea, chandlerc, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D69068
      
      llvm-svn: 375137
      (cherry picked from commit fc69ad09)
      a4b77f5f
  10. Oct 15, 2019
    • Tom Stellard's avatar
      Merging r372188: · 1c4b5a8d
      Tom Stellard authored
      ------------------------------------------------------------------------
      r372188 | meinersbur | 2019-09-17 15:59:43 -0700 (Tue, 17 Sep 2019) | 13 lines
      
      [CodeGen] Handle outlining of CopyStmts.
      
      Since the removal of extensions nodes from schedule trees in r362257 it
      is possible to emit parallel code for SCoPs containing
      matrix-multiplications. However, the code looking for references used in
      outlined statement was not prepared to handle CopyStmts introduced by
      the matrix-matrix multiplication detection.
      
      In this case, CopyStmts do not introduce references in addition to the
      ones captured by MemoryAccesses, i.e. we change the assertion to accept
      CopyStmts and add a regression test for this case.
      
      This fixes llvm.org/PR43164
      ------------------------------------------------------------------------
      
      llvm-svn: 374861
      1c4b5a8d
    • Tom Stellard's avatar
      Merging r372020 and r372182: · 99e5b1a4
      Tom Stellard authored
      ------------------------------------------------------------------------
      r372020 | rnk | 2019-09-16 11:49:09 -0700 (Mon, 16 Sep 2019) | 30 lines
      
      [PGO] Use linkonce_odr linkage for __profd_ variables in comdat groups
      
      This fixes relocations against __profd_ symbols in discarded sections,
      which is PR41380.
      
      In general, instrumentation happens very early, and optimization and
      inlining happens afterwards. The counters for a function are calculated
      early, and after inlining, counters for an inlined function may be
      widely referenced by other functions.
      
      For C++ inline functions of all kinds (linkonce_odr &
      available_externally mainly), instr profiling wants to deduplicate these
      __profc_ and __profd_ globals. Otherwise the binary would be quite
      large.
      
      I made __profd_ and __profc_ comdat in r355044, but I chose to make
      __profd_ internal. At the time, I was only dealing with coverage, and in
      that case, none of the instrumentation needs to reference __profd_.
      However, if you use PGO, then instrumentation passes add calls to
      __llvm_profile_instrument_range which reference __profd_ globals. The
      solution is to make these globals externally visible by using
      linkonce_odr linkage for data as was done for counters.
      
      This is safe because PGO adds a CFG hash to the names of the data and
      counter globals, so if different TUs have different globals, they will
      get different data and counter arrays.
      
      Reviewers: xur, hans
      
      Differential Revision: https://reviews.llvm.org/D67579
      ------------------------------------------------------------------------
      
      ------------------------------------------------------------------------
      r372182 | rnk | 2019-09-17 14:10:49 -0700 (Tue, 17 Sep 2019) | 12 lines
      
      [PGO] Don't use comdat groups for counters & data on COFF
      
      For COFF, a comdat group is really a symbol marked
      IMAGE_COMDAT_SELECT_ANY and zero or more other symbols marked
      IMAGE_COMDAT_SELECT_ASSOCIATIVE. Typically the associative symbols in
      the group are not external and are not referenced by other TUs, they are
      things like debug info, C++ dynamic initializers, or other section
      registration schemes. The Visual C++ linker reports a duplicate symbol
      error for symbols marked IMAGE_COMDAT_SELECT_ASSOCIATIVE even if they
      would be discarded after handling the leader symbol.
      
      Fixes coverage-inline.cpp in check-profile after r372020.
      ------------------------------------------------------------------------
      
      llvm-svn: 374858
      99e5b1a4
  11. Oct 12, 2019
    • Tom Stellard's avatar
      Merging r372606: · 35127d79
      Tom Stellard authored
      ------------------------------------------------------------------------
      r372606 | spatel | 2019-09-23 06:30:23 -0700 (Mon, 23 Sep 2019) | 3 lines
      
      [x86] fix assert with horizontal math + broadcast of vector (PR43402)
      
      https://bugs.llvm.org/show_bug.cgi?id=43402
      ------------------------------------------------------------------------
      
      llvm-svn: 374633
      35127d79
    • Tom Stellard's avatar
      Merging r373275: · 171c0c22
      Tom Stellard authored
      ------------------------------------------------------------------------
      r373275 | tstellar | 2019-09-30 16:42:17 -0700 (Mon, 30 Sep 2019) | 9 lines
      
      Fix Driver/modules.cpp test to work when build directory name contains '.s'
      
      Reviewers: dyung, rsmith, hansw
      
      Subscribers: mati865, mgorny, cfe-commits
      
      Tags: #clang
      
      Differential Revision: https://reviews.llvm.org/D66176
      ------------------------------------------------------------------------
      
      llvm-svn: 374605
      171c0c22
  12. Oct 11, 2019
  13. Oct 10, 2019
  14. Oct 03, 2019
  15. Sep 18, 2019
  16. Sep 17, 2019
    • Hans Wennborg's avatar
      Merging r371969: · 12f174e9
      Hans Wennborg authored
      ------------------------------------------------------------------------
      r371969 | karka | 2019-09-16 11:52:23 +0200 (Mon, 16 Sep 2019) | 13 lines
      
      Change signature of __builtin_rotateright64 back to unsigned
      
      The signature of __builtin_rotateright64 was by misstake changed from
      unsigned to signed in r360863, this patch will change it back to
      unsigned as intended.
      
      This fixes pr43309
      
      Reviewers: efriedma, hans
      
      Reviewed By: hans
      
      Differential Revision: https://reviews.llvm.org/D67606
      ------------------------------------------------------------------------
      
      llvm-svn: 372100
      12f174e9
  17. Sep 16, 2019
  18. Sep 13, 2019
    • Hans Wennborg's avatar
      Merging r371766: · 02a0ef03
      Hans Wennborg authored
      ------------------------------------------------------------------------
      r371766 | nickdesaulniers | 2019-09-12 21:53:35 +0200 (Thu, 12 Sep 2019) | 29 lines
      
      [Clang][CodeGen] support alias attribute w/ gnu_inline
      
      Summary:
      r369705 did not consider the addition of gnu_inline on function
      declarations of alias attributed functions. This resulted in a reported
      regression in the clang-9-rc4 release from the Zig developers building
      glibc, which was observable as a failed assertion:
      
      llvm-project/clang/lib/AST/Decl.cpp:3336: bool
      clang::FunctionDecl::isInlineDefinitionExternallyVisible() const:
      Assertion `(doesThisDeclarationHaveABody() || willHaveBody()) && "Must
      be a function definition"' failed.
      
      Alias function declarations do not have bodies, so allow us to proceed
      if we have the alias function attribute but no body/definition, and add
      a test case.  The emitted symbols and their linkage matches GCC for the
      added test case.
      
      Link: https://bugs.llvm.org/show_bug.cgi?id=43268
      
      Reviewers: aaron.ballman, rsmith, erichkeane, andrewrk
      
      Reviewed By: andrewrk
      
      Subscribers: cfe-commits, andrewrk, hans, srhines
      
      Tags: #clang
      
      Differential Revision: https://reviews.llvm.org/D67455
      ------------------------------------------------------------------------
      
      llvm-svn: 371821
      02a0ef03
  19. Sep 10, 2019
    • Hans Wennborg's avatar
      Merging r371434: · 127240ac
      Hans Wennborg authored
      ------------------------------------------------------------------------
      r371434 | efriedma | 2019-09-09 20:29:27 +0200 (Mon, 09 Sep 2019) | 15 lines
      
      [IfConversion] Correctly handle cases where analyzeBranch fails.
      
      If analyzeBranch fails, on some targets, the out parameters point to
      some blocks in the function. But we can't use that information, so make
      sure to clear it out.  (In some places in IfConversion, we assume that
      any block with a TrueBB is analyzable.)
      
      The change to the testcase makes it trigger a bug on builds without this
      fix: IfConvertDiamond tries to perform a followup "merge" operation,
      which isn't legal, and we somehow end up with a branch to a deleted MBB.
      I'm not sure how this doesn't crash the compiler.
      
      Differential Revision: https://reviews.llvm.org/D67306
      
      
      ------------------------------------------------------------------------
      
      llvm-svn: 371490
      127240ac
  20. Sep 09, 2019
    • Hans Wennborg's avatar
      Merging r370592: · 5cbaa56a
      Hans Wennborg authored
      ------------------------------------------------------------------------
      r370592 | rksimon | 2019-08-31 18:21:31 +0200 (Sat, 31 Aug 2019) | 3 lines
      
      [X86] EltsFromConsecutiveLoads - Don't confuse elt count with vector element count (PR43170)
      
      EltsFromConsecutiveLoads was assuming that the number of input elts was the same as the number of elements in the output vector type when creating a zeroing shuffle, causing an assert when subvectors were being combined instead of just scalars.
      ------------------------------------------------------------------------
      
      llvm-svn: 371382
      5cbaa56a