Skip to content
  1. Aug 05, 2010
  2. Aug 02, 2010
  3. Jul 18, 2010
  4. Jul 15, 2010
  5. Jun 08, 2010
  6. Apr 17, 2010
  7. Feb 25, 2010
  8. Feb 23, 2010
  9. Feb 18, 2010
    • Jeffrey Yasskin's avatar
    • Jeffrey Yasskin's avatar
      Add a shared library for LLVM, named libLLVM2.7svn.(so|dylib), and add an · f750fefa
      Jeffrey Yasskin authored
      --enable-shared configure flag to have the tools linked shared. (2.7svn is just
      $(LLVMVersion) so it'll change to "2.7" in the release.)  Always link the
      example programs shared to test that the shared library keeps working.
      
      On my mac laptop, Debug libLLVM2.7svn.dylib is 39MB, and opt (for example) is
      16M static vs 440K shared.
      
      Two things are less than ideal here:
      1) The library doesn't include any version information. Since we expect to break
      the ABI with every release, this shouldn't be much of a problem. If we do
      release a compatible 2.7.1, we may be able to hack its library to work with
      binaries compiled against 2.7.0, or we can just ask them to recompile. I'm
      hoping to get a real packaging expert to look at this for the 2.8 release.
      2) llvm-config doesn't yet have an option to print link options for the shared
      library. I'll add this as a subsequent patch.
      
      llvm-svn: 96559
      f750fefa
  10. Nov 17, 2009
  11. 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
  12. Nov 08, 2009
  13. Oct 26, 2009
  14. Oct 02, 2009
  15. Sep 22, 2009
  16. Sep 20, 2009
  17. Sep 14, 2009
  18. Sep 13, 2009
  19. Sep 10, 2009
  20. Sep 08, 2009
  21. Sep 04, 2009
    • Erick Tryzelaar's avatar
      Replace ocamlc tests with ocamlopt tests since they're less noisy. · 19e1eec2
      Erick Tryzelaar authored
      There's a bug with ocamlc that uses "char*" instead of "const char*" for
      global string variables. This causes g++ to be very noisy when linking
      ocamlc programs. That's why the ocaml test used to cat to /dev/null.
      ocamlopt doesn't have this problem, so we can get rid of the >/dev/null,
      which may obscure some problems.
      
      llvm-svn: 80968
      19e1eec2
  22. Aug 18, 2009
    • Anton Korobeynikov's avatar
      The attached patches attempt to fix cross builds. For example, if you · 90e17e78
      Anton Korobeynikov authored
      try to use i686-darwin to build for arm-eabi, you'll quickly run into
      several false assumptions that the target OS must be the same as the
      host OS. These patches split $(OS) into $(HOST_OS) and $(TARGET_OS) to
      help builds like "make check" and the test-suite able to cross
      compile. Along the way a target of *-unknown-eabi is defined as
      "Freestanding" so that TARGET_OS checks have something to work with.
      
      Patch by Sandeep Patel!
      
      llvm-svn: 79296
      90e17e78
  23. Aug 10, 2009
  24. Aug 01, 2009
  25. Jul 21, 2009
    • Bob Wilson's avatar
      Fix ocaml tests for 64-bit MacOS systems. LLVM is currently built · e3228acc
      Bob Wilson authored
      as 32-bit code by default, and if gcc defaults to 64-bit code then ocamlc
      requires a -cc "gcc -arch i386" option.  We were hardcoding -cc g++
      and throwing away any other compiler options that were determined when
      ocamlc was configured and built.
      
      llvm-svn: 76658
      e3228acc
  26. Jun 26, 2009
  27. Apr 23, 2009
Loading