Skip to content
  1. Aug 29, 2012
  2. Aug 21, 2012
  3. Feb 13, 2012
    • Ahmed Charles's avatar
      Fix various issues (or do cleanups) found by enabling certain MSVC warnings. · 32e983e4
      Ahmed Charles authored
      - Use unsigned literals when the desired result is unsigned. This mostly allows unsigned/signed mismatch warnings to be less noisy even if they aren't on by default.
      - Remove misplaced llvm_unreachable.
      - Add static to a declaration of a function on MSVC x86 only.
      - Change some instances of calling a static function through a variable to simply calling that function while removing the unused variable.
      
      llvm-svn: 150364
      32e983e4
  4. Jan 20, 2012
  5. Dec 03, 2011
  6. Feb 05, 2011
  7. Nov 29, 2010
  8. Oct 23, 2010
  9. Mar 15, 2010
  10. Feb 08, 2010
  11. Jan 05, 2010
  12. Dec 15, 2009
  13. Nov 24, 2009
    • Jeffrey Yasskin's avatar
      * Move stub allocation inside the JITEmitter, instead of exposing a · f2ad5714
      Jeffrey Yasskin authored
      way for each TargetJITInfo subclass to allocate its own stubs. This
      means stubs aren't as exactly-sized anymore, but it lets us get rid of
      TargetJITInfo::emitFunctionStubAtAddr(), which lets ARM and PPC
      support the eager JIT, fixing http://llvm.org/PR4816.
      
      * Rename the JITEmitter's stub creation functions to describe the kind
      of stub they create. So far, all of them create lazy-compilation
      stubs, but they sometimes get used when far-call stubs are needed.
      Fixing http://llvm.org/PR5201 will involve fixing this.
      
      llvm-svn: 89715
      f2ad5714
  14. Nov 23, 2009
  15. Nov 16, 2009
    • Jeffrey Yasskin's avatar
      Make X86-64 in the Large model always emit 64-bit calls. · 10d3604a
      Jeffrey Yasskin authored
      The large code model is documented at
      http://www.x86-64.org/documentation/abi.pdf and says that calls should
      assume their target doesn't live within the 32-bit pc-relative offset
      that fits in the call instruction.
      
      To do this, we turn off the global-address->target-global-address
      conversion in X86TargetLowering::LowerCall(). The first attempt at
      this broke the lazy JIT because it can separate the movabs(imm->reg)
      from the actual call instruction. The lazy JIT receives the address of
      the movabs as a relocation and needs to record the return address from
      the call; and then when that call happens, it needs to patch the
      movabs with the newly-compiled target. We could thread the call
      instruction into the relocation and record the movabs<->call mapping
      explicitly, but that seems to require at least as much new
      complication in the code generator as this change.
      
      To fix this, we make lazy functions _always_ go through a call
      stub. You'd think we'd only have to force lazy calls through a stub on
      difficult platforms, but that turns out to break indirect calls
      through a function pointer. The right fix for that is to distinguish
      between calls and address-of operations on uncompiled functions, but
      that's complex enough to leave for someone else to do.
      
      Another attempt at this defined a new CALL64i pseudo-instruction,
      which expanded to a 2-instruction sequence in the assembly output and
      was special-cased in the X86CodeEmitter's emitInstruction()
      function. That broke indirect calls in the same way as above.
      
      This patch also removes a hack forcing Darwin to the small code model.
      Without far-call-stubs, the small code model requires things of the
      JITMemoryManager that the DefaultJITMemoryManager can't provide.
      
      Thanks to echristo for lots of testing!
      
      llvm-svn: 88984
      10d3604a
  16. Sep 15, 2009
  17. Sep 06, 2009
  18. Sep 03, 2009
  19. Aug 28, 2009
  20. Aug 24, 2009
  21. Aug 20, 2009
  22. Aug 05, 2009
  23. Aug 03, 2009
  24. Jul 14, 2009
  25. Jul 12, 2009
  26. Jul 11, 2009
    • Torok Edwin's avatar
      assert(0) -> LLVM_UNREACHABLE. · 56d06597
      Torok Edwin authored
      Make llvm_unreachable take an optional string, thus moving the cerr<< out of
      line.
      LLVM_UNREACHABLE is now a simple wrapper that makes the message go away for
      NDEBUG builds.
      
      llvm-svn: 75379
      56d06597
  27. Jul 08, 2009
  28. May 30, 2009
  29. Feb 18, 2009
    • Nate Begeman's avatar
      Add support to the JIT for true non-lazy operation. When a call to a function · 18d85e74
      Nate Begeman authored
      that has not been JIT'd yet, the callee is put on a list of pending functions
      to JIT.  The call is directed through a stub, which is updated with the address
      of the function after it has been JIT'd.  A new interface for allocating and
      updating empty stubs is provided.
      
      Add support for removing the ModuleProvider the JIT was created with, which
      would otherwise invalidate the JIT's PassManager, which is initialized with the
      ModuleProvider's Module.
      
      Add support under a new ExecutionEngine flag for emitting the infomration 
      necessary to update Function and GlobalVariable stubs after JITing them, by
      recording the address of the stub and the name of the GlobalValue.  This allows
      code to be copied from one address space to another, where libraries may live
      at different virtual addresses, and have the stubs updated with their new
      correct target addresses.
      
      llvm-svn: 64906
      18d85e74
  30. Feb 06, 2009
  31. Dec 10, 2008
  32. Nov 10, 2008
  33. Nov 08, 2008
  34. Nov 05, 2008
  35. Oct 25, 2008
  36. Aug 13, 2008
  37. Jul 16, 2008
Loading