Skip to content
  1. Nov 17, 2009
  2. Nov 16, 2009
    • Dan Gohman's avatar
      Initialize the new AsmPrinterFlags field to 0, fixing uses of · 9b5eea30
      Dan Gohman authored
      uninitialized memory.
      
      llvm-svn: 88985
      9b5eea30
    • 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
    • Daniel Dunbar's avatar
      Don't build examples by default, use BUILD_EXAMPLES=1 to build them. The only... · 1aab2ded
      Daniel Dunbar authored
      Don't build examples by default, use BUILD_EXAMPLES=1 to build them. The only utility of this is testing that we keep the examples up to date, I will just make the buildbots run with this flag.
      
      llvm-svn: 88979
      1aab2ded
    • Daniel Dunbar's avatar
      Add "Unoptimized" build (NO_DEBUG_SYMBOLS=1 ENABLE_OPTIMIZED=1), for reducing · 08d4ab96
      Daniel Dunbar authored
      disk space, and increasing battery lifetime. :)
      
      llvm-svn: 88978
      08d4ab96
    • Eric Christopher's avatar
      Fix unused variables warnings. · dc679f88
      Eric Christopher authored
      llvm-svn: 88977
      dc679f88
    • Evan Cheng's avatar
      - Check memoperand alignment instead of checking stack alignment. Most load /... · f25ef4ff
      Evan Cheng authored
      - Check memoperand alignment instead of checking stack alignment. Most load / store folding instructions are not referencing spill stack slots.
      - Mark MOVUPSrm re-materializable.
      
      llvm-svn: 88974
      f25ef4ff
    • Devang Patel's avatar
      Revert r88939. · f3d7c08e
      Devang Patel authored
      llvm-svn: 88973
      f3d7c08e
Loading