Skip to content
  1. Jul 12, 2005
    • Nate Begeman's avatar
      Implement Subtarget support · f26625e1
      Nate Begeman authored
      Implement the X86 Subtarget.
      
      This consolidates the checks for target triple, and setting options based
      on target triple into one place.  This allows us to convert the asm printer
      and isel over from being littered with "forDarwin", "forCygwin", etc. into
      just having the appropriate flags for each subtarget feature controlling
      the code for that feature.
      
      This patch also implements indirect external and weak references in the
      X86 pattern isel, for darwin.  Next up is to convert over the asm printers
      to use this new interface.
      
      llvm-svn: 22389
      f26625e1
    • Nate Begeman's avatar
      Commit some pending darwin changes before subtarget support. · 83b492b8
      Nate Begeman authored
      llvm-svn: 22388
      83b492b8
    • Chris Lattner's avatar
      Fix PR576. · 986675cb
      Chris Lattner authored
      Instead of emitting a JIT stub that looks like this:
      
      internal void %l1_main_entry_2E_ce_wrapper(int) {
      header:
              %resolver = call sbyte* %getPointerToNamedFunction( sbyte* getelementptr ([20 x sbyte]* %l1_main_entry_2E_ce_name, int 0, int 0) )           ; <sbyte*> [#uses=1]
              %resolverCast = cast sbyte* %resolver to void (int)*            ; <void (int)*> [#uses=1]
              call void %resolverCast( int %0 )
              ret void
      }
      
      Emit one that looks like this:
      
      internal void %l1_main_entry_2E_ce_wrapper(int) {
      Entry:
      	%fpcache = load void (int)** %l1_main_entry_2E_ce.fpcache               ; <void (int)*> [#uses=2]
              %isNull = seteq void (int)* %fpcache, null              ; <bool> [#uses=1]
              br bool %isNull, label %lookupfp, label %usecache
      
      usecache:               ; preds = %lookupfp, %Entry
              %fp = phi void (int)* [ %resolverCast, %lookupfp ], [ %fpcache, %Entry ]            ; <void (int)*> [#uses=1]
              call void %fp( int %0 )
              ret void
      
      lookupfp:               ; preds = %Entry
              %resolver = call sbyte* %getPointerToNamedFunction( sbyte* getelementptr ([20 x sbyte]* %l1_main_entry_2E_ce_name, int 0, int 0) )           ; <sbyte*> [#uses=1]
              %resolverCast = cast sbyte* %resolver to void (int)*            ; <void (int)*> [#uses=2]
              store void (int)* %resolverCast, void (int)** %l1_main_entry_2E_ce.fpcache
              br label %usecache
      }
      
      
      This makes the JIT debugger *MUCH* faster on large programs, as
      getPointerToNamedFunction takes time linear with the size of the program, and
      before we would call it every time a function in the text module was called from
      the safe module (ouch!).
      
      llvm-svn: 22387
      986675cb
    • Chris Lattner's avatar
      add a note so I can remember the common t-t's · de69bf99
      Chris Lattner authored
      llvm-svn: 22386
      de69bf99
    • Chris Lattner's avatar
      fix a warning · fd564c6b
      Chris Lattner authored
      llvm-svn: 22385
      fd564c6b
  2. Jul 11, 2005
  3. Jul 10, 2005
  4. Jul 09, 2005
  5. Jul 08, 2005
Loading