Skip to content
  1. Apr 01, 2016
    • Jeroen Ketema's avatar
      [OCaml] Use LLVMCreateMessage with constant strings when calling llvm_raise · b7f633b8
      Jeroen Ketema authored
      The llvm_string_of_message function, called by llvm_raise, calls
      LLVMDisposeMessage, which expects the message to be dynamically
      allocated; it fails freeing the message otherwise. So always
      dynamically allocate with LLVMCreateMessage.
      
      Differential Revision: http://reviews.llvm.org/D18675
      
      llvm-svn: 265116
      b7f633b8
    • Jeroen Ketema's avatar
      [OCaml] Reinstate data_layout · c110fbc2
      Jeroen Ketema authored
      Expose LLVMCreateTargetMachineData as data_layout.
      
      As r263530 did for go. From that commit: "LLVMGetTargetDataLayout was
      removed from the C API, and then TargetMachine.TargetData was removed.
      Later, LLVMCreateTargetMachineData was added to the C API"
      
      Differential Revision: http://reviews.llvm.org/D18677
      
      llvm-svn: 265115
      c110fbc2
    • Tobias Grosser's avatar
      ScoPDetection: Obtain a known free diagnostic ID · db6db505
      Tobias Grosser authored
      ... instead of hardcoding something that has been free at some point. This fixes
      a crash triggered by r265084, where the diagnostic IDs have been shifted in a
      way that resulted our hardcode ID to not be assigned any implementation.  Our ID
      was likely already wrong earlier on, but this time we really crashed nicely.
      
      llvm-svn: 265114
      db6db505
    • Mehdi Amini's avatar
      Add a libLTO API to stop/restart ThinLTO between optimizations and CodeGen · 43b657b5
      Mehdi Amini authored
      This allows the linker to instruct ThinLTO to perform only the
      optimization part or only the codegen part of the process.
      
      From: Mehdi Amini <mehdi.amini@apple.com>
      llvm-svn: 265113
      43b657b5
    • Chuang-Yu Cheng's avatar
      [PPC64] Bug fix: when enabling sibling-call-opt and shrink-wrapping, the tail... · f8b592f2
      Chuang-Yu Cheng authored
      [PPC64] Bug fix: when enabling sibling-call-opt and shrink-wrapping, the tail call branch instruction might disappear
      
      Bug Pattern:
          # BB#0:                                 # %entry
      	    cmpldi	 3, 0
      	    beq-	 0, .LBB0_2
          # BB#1:                                 # %exit
      	    lwz 4, 0(3)
      	    #TC_RETURNd8 LVComputationKind 0
          .LBB0_2:                                # %cond.false
      	    mflr 0
      	    std 0, 16(1)
      	    stdu 1, -96(1)
          .Ltmp0:
      	    .cfi_def_cfa_offset 96
          .Ltmp1:
      	    .cfi_offset lr, 16
      	    bl __assert_fail
      	    nop
      
      The branch instruction for tail call return is not generated, because the
      shrink-wrapping pass choosing a new Restore Point: %cond.false, so %exit
      block is not sent to emitEpilogue, that's why the branch is not generated.
      
      Thanks Kit's opinions!
      Reviewers: nemanjai hfinkel tjablin kbarton
      
      http://reviews.llvm.org/D17606
      
      llvm-svn: 265112
      f8b592f2
    • Mehdi Amini's avatar
      Add a module Hash in the bitcode and the combined index, implementing a kind of "build-id" · d7ad221c
      Mehdi Amini authored
      This is intended to be used for ThinLTO incremental build.
      
      Differential Revision: http://reviews.llvm.org/D18213
      
      This is a recommit of r265095 after fixing the Windows issues.
      
      From: Mehdi Amini <mehdi.amini@apple.com>
      llvm-svn: 265111
      d7ad221c
    • Mehdi Amini's avatar
      Fix MSVC warning "comparison of integers of different signs" (NFC) · eed26932
      Mehdi Amini authored
      From: Mehdi Amini <mehdi.amini@apple.com>
      llvm-svn: 265110
      eed26932
    • Mehdi Amini's avatar
      Fix S390 big endian detection · 180441f0
      Mehdi Amini authored
      From: Mehdi Amini <mehdi.amini@apple.com>
      llvm-svn: 265109
      180441f0
    • Mehdi Amini's avatar
      Const correctness in raw_sha1_ostream (NFC) · 7ef783d1
      Mehdi Amini authored
      From: Mehdi Amini <mehdi.amini@apple.com>
      llvm-svn: 265108
      7ef783d1
    • Mehdi Amini's avatar
      Add support for computing SHA1 in LLVM · 4cd57025
      Mehdi Amini authored
      Provide a class to generate a SHA1 from a sequence of bytes, and
      a convenience raw_ostream adaptor.
      This will be used to provide a "build-id" by hashing the Module
      block when writing bitcode. ThinLTO will use this information for
      incremental build.
      
      Reapply r265094 which was reverted in r265102 because it broke
      MSVC bots (constexpr is not supported).
      
      http://reviews.llvm.org/D16325
      
      From: Mehdi Amini <mehdi.amini@apple.com>
      llvm-svn: 265107
      4cd57025
    • Sean Silva's avatar
      Improve CHECK-NOT robustness of dllexport tests · 3de5ef96
      Sean Silva authored
      This changes some dllexport tests, to verify that some symbols that
      should not be exported are not, in a way that improves the robustness
      of CHECK-SAME interaction with CHECK-NOT.
      
      We plan to enable dllimport/dllexport support for the PS4, and these
      changes are for points we noticed in our internal testing.
      
      Patch by Warren Ristow!
      
      llvm-svn: 265106
      3de5ef96
    • Michael Kuperstein's avatar
      Use range-based for loops. NFC. · 7bab7131
      Michael Kuperstein authored
      llvm-svn: 265105
      7bab7131
    • Mike Spertus's avatar
      Visual Studio native visualizers for clang::TemplateSpecializationType · 63e428f5
      Mike Spertus authored
      Displays a template specialization as, say, A<int, double>. Does not
      yet handle UncommonTemplateNameStorage, QualifiedTemplateName, or
      DependentTemplateName, but still more than worthwhile
      
      llvm-svn: 265104
      63e428f5
    • Devin Coughlin's avatar
      [analyzer] Prefer accessor method in extension over category in CallEvent. · c239dd13
      Devin Coughlin authored
      In ObjCMethodCall:getRuntimeDefinition(), if the method is an accessor in a
      category, and it doesn't have a self declaration, first try to find the method
      in a class extension. This works around a bug in Sema where multiple accessors
      are synthesized for properties in class extensions that are redeclared in a
      category. The implicit parameters are not filled in for the method on the
      category, which causes a crash when trying to synthesize a getter for the
      property in BodyFarm. The Sema bug is tracked as rdar://problem/25481164.
      
      rdar://problem/25056531
      
      llvm-svn: 265103
      c239dd13
    • Mehdi Amini's avatar
      Revert "Add support for computing SHA1 in LLVM" · 85fb9e05
      Mehdi Amini authored
      This reverts commit r265096, r265095, and r265094.
      Windows build is broken, and the validation does not pass.
      
      From: Mehdi Amini <mehdi.amini@apple.com>
      llvm-svn: 265102
      85fb9e05
    • Sanjoy Das's avatar
      Don't insert stackrestore on deoptimizing returns · f83ab6de
      Sanjoy Das authored
      They're not necessary (since the stack pointer is trivially restored on
      return), and the way LLVM inserts the stackrestore calls breaks the
      IR (we get a stackrestore between the deoptimize call and the return).
      
      llvm-svn: 265101
      f83ab6de
    • Sanjoy Das's avatar
      Don't insert lifetime end markers on deoptimizing returns · 18b92968
      Sanjoy Das authored
      They're not necessary (since the lifetime of the alloca is trivially
      over due to the return), and the way LLVM inserts the lifetime.end
      markers breaks the IR (we get a lifetime end marker between the
      deoptimize call and the return).
      
      llvm-svn: 265100
      18b92968
    • Sanjoy Das's avatar
      Don't use an i64 return type with webkit_jscc · 9d41a8f2
      Sanjoy Das authored
      Re-enable an assertion enabled by Justin Lebar in rL265092.  rL265092
      was breaking test/CodeGen/X86/deopt-intrinsic.ll because webkit_jscc
      does not like non-i64 return types.  Change the test case to not do
      that.
      
      llvm-svn: 265099
      9d41a8f2
    • Matthias Braun's avatar
      AArch64ISelLowering: Remove unused variables/arguments; NFC · cc7fba40
      Matthias Braun authored
      llvm-svn: 265098
      cc7fba40
    • Chuang-Yu Cheng's avatar
      Fix Sub-register Rewriting in Aggressive Anti-Dependence Breaker · 35c61819
      Chuang-Yu Cheng authored
      Previously, HandleLastUse would delete RegRef information for sub-registers
      if they were dead even if their corresponding super-register were still live.
      
      If the super-register were later renamed, then the definitions of the
      sub-register would not be updated appropriately. This patch alters the
      behavior so that RegInfo information for sub-registers is only deleted when
      the sub-register and super-register are both dead.
      
      This resolves PR26775. This is the mirror image of Hal's r227311 commit.
      
      Author: Tom Jablin (tjablin)
      Reviewers: kbarton uweigand nemanjai hfinkel
      
      http://reviews.llvm.org/D18448
      
      llvm-svn: 265097
      35c61819
    • Mehdi Amini's avatar
      Add missing test for the "Module hash in bitcode" added in r265095 · 4ea9e9c9
      Mehdi Amini authored
      From: Mehdi Amini <mehdi.amini@apple.com>
      llvm-svn: 265096
      4ea9e9c9
    • Mehdi Amini's avatar
      Add a module Hash in the bitcode and the combined index, implementing a kind of "build-id" · 4c2ed333
      Mehdi Amini authored
      This is intended to be used for ThinLTO incremental build.
      
      Differential Revision: http://reviews.llvm.org/D18213
      
      From: Mehdi Amini <mehdi.amini@apple.com>
      llvm-svn: 265095
      4c2ed333
    • Mehdi Amini's avatar
      Add support for computing SHA1 in LLVM · 3689ae14
      Mehdi Amini authored
      Provide a class to generate a SHA1 from a sequence of bytes, and
      a convenience raw_ostream adaptor.
      This will be used to provide a "build-id" by hashing the Module
      block when writing bitcode. ThinLTO will use this information for
      incremental build.
      
      From: Mehdi Amini <mehdi.amini@apple.com>
      llvm-svn: 265094
      3689ae14
    • Justin Lebar's avatar
      Revert "Protect some assertions with NDEBUG rather than DEBUG()." · 98981e55
      Justin Lebar authored
      This reverts r265092, because it breaks CodeGen/X86/deopt-intrinsic.ll.
      
      llvm-svn: 265093
      98981e55
    • Justin Lebar's avatar
      Protect some assertions with NDEBUG rather than DEBUG(). · c814e8e4
      Justin Lebar authored
      DEBUG() only runs if you pass -debug, but these assertions are generally
      useful.
      
      llvm-svn: 265092
      c814e8e4
    • Justin Lebar's avatar
      [NVPTX] Add a truncate DAG node to some calls. · 96418481
      Justin Lebar authored
      Summary:
      Previously, we were running afoul of the assertion
      
        EVT(CLI.Ins[i].VT) == InVals[i].getValueType() && "LowerCall emitted a value with the wrong type!"
      
      in SelectionDAGBuilder.cpp when running the NVPTX/i8-param.ll test.
      This is because our backend (for some reason) treats small return values
      as i32, but it wasn't ever truncating the i32 back down to the expected
      width in the DAG.
      
      Unclear to me whether this fixes any actual bugs -- in this test, at
      least, the generated code is unchanged.
      
      Reviewers: jingyue
      
      Subscribers: llvm-commits, tra, jholewinski
      
      Differential Revision: http://reviews.llvm.org/D17872
      
      llvm-svn: 265091
      96418481
    • Justin Lebar's avatar
      [NVPTX] Read __CUDA_FTZ from module flags in NVVMReflect. · efcc81cb
      Justin Lebar authored
      Summary:
      Previously the NVVMReflect pass would read its configuration from
      command-line flags or a static configuration given to the pass at
      instantiation time.
      
      This doesn't quite work for clang's use-case.  It needs to pass a value
      for __CUDA_FTZ down on a per-module basis.  We use a module flag for
      this, so the NVVMReflect pass needs to be updated to read said flag.
      
      Reviewers: tra, rnk
      
      Subscribers: cfe-commits, jholewinski
      
      Differential Revision: http://reviews.llvm.org/D18672
      
      llvm-svn: 265090
      efcc81cb
    • Justin Lebar's avatar
      [NVPTX] Annotate some instructions as hasSideEffects = 0. · 645c3014
      Justin Lebar authored
      Summary:
      Tablegen tries to infer this from the selection DAG patterns defined for
      the instructions, but it can't always.
      
      An instructive example is CLZr64.  CLZr32 is correctly inferred to have
      no side-effects, but the selection DAG pattern for CLZr64 is slightly
      more complicated, and in particular the ctlz DAG node is not at the root
      of the pattern.  Thus tablegen can't infer that CLZr64 has no
      side-effects.
      
      Reviewers: jholewinski
      
      Subscribers: jholewinski, tra, llvm-commits
      
      Differential Revision: http://reviews.llvm.org/D17472
      
      llvm-svn: 265089
      645c3014
    • Justin Lebar's avatar
      [ifcnv] Add brief comment explaining what ifcnv is. · acc47105
      Justin Lebar authored
      llvm-svn: 265088
      acc47105
    • Mehdi Amini's avatar
      Fix Windows build (typo in disk_space() implementation) · 64719159
      Mehdi Amini authored
      From: Mehdi Amini <mehdi.amini@apple.com>
      llvm-svn: 265087
      64719159
    • Greg Clayton's avatar
      Fixed an issue that could cause debugserver to return two stop reply packets... · 830c81d5
      Greg Clayton authored
      Fixed an issue that could cause debugserver to return two stop reply packets ($T packets) for one \x03 interrupt. The problem was that when a \x03 byte is sent to debugserver while the process is running, and up calling:
      
      rnb_err_t
      RNBRemote::HandlePacket_stop_process (const char *p)
      {
          if (!DNBProcessInterrupt(m_ctx.ProcessID()))
              HandlePacket_last_signal (NULL);
          return rnb_success;
      }
      
      In the call to DNBProcessInterrupt we did:
      
      nub_bool_t
      DNBProcessInterrupt(nub_process_t pid)
      {
          MachProcessSP procSP;
          if (GetProcessSP (pid, procSP))
              return procSP->Interrupt();
          return false;
      }
      
      This would always return false. It would cause HandlePacket_stop_process to always call "HandlePacket_last_signal (NULL);" which would send an extra stop reply packet _if_ the process is stopped. On a machine with enough cores, it would call DNBProcessInterrupt(...) and then HandlePacket_last_signal(NULL) so quickly that it will never send out an extra stop reply packet. But if the machine is slow enough or doesn't have enough cores, it could cause the call to HandlePacket_last_signal() to actually succeed and send an extra stop reply packet. This would cause problems up in GDBRemoteCommunicationClient::SendContinuePacketAndWaitForResponse() where it would get the first stop reply packet and then possibly return or execute an async packet. If it returned, then the next packet that was sent will get the second stop reply as its response. If it executes an async packet, the async packet will get the wrong response.
      
      To fix this I did the following:
      1 - in debugserver, I fixed "bool MachProcess::Interrupt()" to return true if it sends the signal so we avoid sending the stop reply twice on slower machines
      2 - Added a log line to RNBRemote::HandlePacket_stop_process() to say if we ever send an extra stop reply so we will see this in the darwin console output if this does happen
      3 - Added response validators to StringExtractorGDBRemote so that we can verify some responses to some packets. 
      4 - Added validators to packets that often follow stop reply packets like the "m" packet for memory reads, JSON packets since "jThreadsInfo" is often sent immediately following a stop reply.
      5 - Modified GDBRemoteCommunicationClient::SendPacketAndWaitForResponseNoLock() to validate responses. Any "StringExtractorGDBRemote &response" that contains a valid response verifier will verify the response and keep looking for correct responses up to 3 times. This will help us get back on track if we do get extra stop replies. If a StringExtractorGDBRemote does not have a response validator, it will accept any packet in response.
      6 - In GDBRemoteCommunicationClient::SendPacketAndWaitForResponse we copy the response validator from the "response" argument over into m_async_response so that if we send the packet by interrupting the running process, we can validate the response we actually get in GDBRemoteCommunicationClient::SendContinuePacketAndWaitForResponse()
      7 - Modified GDBRemoteCommunicationClient::SendContinuePacketAndWaitForResponse() to always check for an extra stop reply packet for 100ms when the process is interrupted. We were already doing this because we might interrupt a process with a \x03 packet, yet the process was in the process of stopping due to another reason. This race condition could cause an extra stop reply packet because the GDB remote protocol says if a \x03 packet is sent while the process is stopped, we should send a stop reply packet back. Now we always check for an extra stop reply packet when we manually interrupt a process.
      
      The issue was showing up when our IDE would attempt to set a breakpoint while the process is running and this would happen:
      
      --> \x03
      <-- $T<stop reply 1>
      --> z0,AAAAA,BB (set breakpoint)
      <-- $T<stop reply 1> (incorrect extra stop reply packet)
      --> c
      <-- OK (response from z0 packet)
      
      Now all packet traffic was off by one response. Since we now have a validator on the response for "z" packets, we do this:
      
      --> \x03
      <-- $T<stop reply 1>
      --> z0,AAAAA,BB (set breakpoint)
      <-- $T<stop reply 1> (Ignore this because this can't be the response to z0 packets)
      <-- OK -- (we are back on track as this is a valid response to z0)
      ...
      
      As time goes on we should add more packet validators.
      
      <rdar://problem/22859505>
      
      llvm-svn: 265086
      830c81d5
    • Davide Italiano's avatar
      [LTO] Inherit options from Codegen before initializing TargetMachine. · 8eca282d
      Davide Italiano authored
      This fixes bootstrap of llvm-tblgen (with LTO) and PR27150.
      Slightly longer explanation follows.
      
      Emission of .init_array instead of .ctors is supported only on a
      subset of the Target LLVM supports. Codegen needs to be conservative
      and always emit .ctors unless instructed otherwise (based on target).
      If the dynamic linker sees .init_array it completely ignores
      what's inside .ctors and therefore some constructors are not called
      (and this causes llvm-tblgen to crash on startup).
      
      Teach LLD/LTO about the Codegen options so we end up always emitting
      .init_array and avoid this issue.
      In future, we might end up supporting mix of .ctors and .init_array
      in different input files if this shows up as a real-world use case.
      The way gold handles this case is mapping .ctors from input into
      .init_array in output. There's also another caveat because
      as far as I understand .ctors run in reverse order so when we do
      the copy/mapping we need to reverse copy in the output if there's
      more than one ctor. That's why I'd rather avoid this complicate logic
      unless there's a real need.
      
      An analogous reasoning holds for .dtors/.fini_array.
      
      llvm-svn: 265085
      8eca282d
    • Akira Hatanaka's avatar
      [LoopVectorize] Don't unconditionally print vectorization diagnostics · e9148dd6
      Akira Hatanaka authored
      when compiling with LTO.
      
      r244523 a new class DiagnosticInfoOptimizationRemarkAnalysisAliasing for
      optimization analysis remarks related to pointer aliasing without
      guarding it in isDiagnosticEnabled in LLVMContext.cpp. This caused the
      diagnostic message to be printed unconditionally when compiling with
      LTO.
      
      This commit cleans up isDiagnosticEnabled and makes sure all the
      vectorization optimization remarks are guarded.
      
      rdar://problem/25382153
      
      llvm-svn: 265084
      e9148dd6
    • Justin Lebar's avatar
      [CUDA] Fix typo in __clang_cuda_runtime_wrapper.h. · cb28f15f
      Justin Lebar authored
      We're #including the wrong file!
      
      llvm-svn: 265083
      cb28f15f
    • Mehdi Amini's avatar
      Add disk_space() to llvm::fs · e2d8f1b8
      Mehdi Amini authored
      Summary: Adapted from Boost::filesystem.
      (This is a reapply by reverting commit r265080 and fixing the WinAPI part)
      
      Differential Revision: http://reviews.llvm.org/D18467
      
      From: Mehdi Amini <mehdi.amini@apple.com>
      llvm-svn: 265082
      e2d8f1b8
    • Adrian Prantl's avatar
      b8089516
    • Mehdi Amini's avatar
      Revert "Add disk_space() to llvm::fs" · 640de72a
      Mehdi Amini authored
      This reverts commit r265074 and r265068.
      Breaks windows build
      
      From: Mehdi Amini <mehdi.amini@apple.com>
      llvm-svn: 265080
      640de72a
    • Adrian Prantl's avatar
      Fix a captialization error in r265077. · 0235e95a
      Adrian Prantl authored
      llvm-svn: 265079
      0235e95a
    • Adrian Prantl's avatar
      Adapt to LLVM API change in r265077. · 3563c55a
      Adrian Prantl authored
      EmissionKind moved from DIBuilder to DICompileUnit.
      
      
      <rdar://problem/25427165>
      
      llvm-svn: 265078
      3563c55a
    • Adrian Prantl's avatar
      Move the DebugEmissionKind enum from DIBuilder into DICompileUnit. · b939a257
      Adrian Prantl authored
      This mostly cosmetic patch moves the DebugEmissionKind enum from DIBuilder
      into DICompileUnit. DIBuilder is not the right place for this enum to live
      in — a metadata consumer should not have to include DIBuilder.h.
      I also added a Verifier check that checks that the emission kind of a
      DICompileUnit is actually legal.
      
      http://reviews.llvm.org/D18612
      <rdar://problem/25427165>
      
      llvm-svn: 265077
      b939a257
Loading