Skip to content
  1. Mar 31, 2009
  2. Mar 25, 2009
  3. Mar 24, 2009
  4. Mar 14, 2009
  5. Mar 12, 2009
  6. Mar 11, 2009
  7. Mar 07, 2009
    • Duncan Sands's avatar
      Introduce new linkage types linkonce_odr, weak_odr, common_odr · 12da8ce3
      Duncan Sands authored
      and extern_weak_odr.  These are the same as the non-odr versions,
      except that they indicate that the global will only be overridden
      by an *equivalent* global.  In C, a function with weak linkage can
      be overridden by a function which behaves completely differently.
      This means that IP passes have to skip weak functions, since any
      deductions made from the function definition might be wrong, since
      the definition could be replaced by something completely different
      at link time.   This is not allowed in C++, thanks to the ODR
      (One-Definition-Rule): if a function is replaced by another at
      link-time, then the new function must be the same as the original
      function.  If a language knows that a function or other global can
      only be overridden by an equivalent global, it can give it the
      weak_odr linkage type, and the optimizers will understand that it
      is alright to make deductions based on the function body.  The
      code generators on the other hand map weak and weak_odr linkage
      to the same thing.
      
      llvm-svn: 66339
      12da8ce3
  8. Mar 04, 2009
  9. Mar 03, 2009
  10. Feb 27, 2009
    • Rafael Espindola's avatar
      Refactor TLS code and add some tests. The tests and expected results are: · 000421ea
      Rafael Espindola authored
       pic |  declaration | linkage  | visibility |
      
      !pic |  declaration | external | default    | tls1.ll     tls2.ll     | local exec
       pic |  declaration | external | default    | tls1-pic.ll tls2-pic.ll | general dynamic
      !pic | !declaration | external | default    | tls3.ll     tls4.ll     | initial exec
       pic | !declaration | external | default    | tls3-pic.ll tls4-pic.ll | general dynamic
      
      !pic |  declaration | external | hidden     | tls7.ll     tls8.ll     | local exec
       pic |  declaration | external | hidden     | X                       | local dynamic
      !pic | !declaration | external | hidden     | tls9.ll     tls10.ll    | local exec
       pic | !declaration | external | hidden     | X                       | local dynamic
      
      !pic |  declaration | internal | default    | tls5.ll     tls6.ll     | local exec
       pic |  declaration | internal | default    | X                       | local dynamic
      
      The ones marked with an X have not been implemented since local dynamic is not implemented.
      
      llvm-svn: 65632
      000421ea
  11. Feb 21, 2009
    • Anton Korobeynikov's avatar
      Drop bunch of half-working stuff in the ext_weak linkage support. · 42aae865
      Anton Korobeynikov authored
      Now we're using one gross, but quite robust hack :) (previous ones
      did not work, for example, when ext_weak symbol was used deep inside
      constant expression in the initializer).
      
      The proper fix of this problem will require some quite huge asmprinter
      changes and that's why was postponed. This fixes PR3629 by the way :)
      
      llvm-svn: 65230
      42aae865
  12. Feb 19, 2009
  13. Feb 18, 2009
  14. Feb 17, 2009
    • Bill Wendling's avatar
      --- Merging (from foreign repository) r64714 into '.': · 3c50922e
      Bill Wendling authored
      U    include/llvm/CodeGen/DebugLoc.h
      U    lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
      U    lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp
      U    lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp
      
      Enable debug location generation at -Os. This goes with the reapplication of the
      r63639 patch.
      
      llvm-svn: 64715
      3c50922e
  15. Feb 06, 2009
  16. Jan 28, 2009
  17. Jan 23, 2009
  18. Jan 15, 2009
  19. Jan 12, 2009
  20. Jan 09, 2009
    • Devang Patel's avatar
      · f6466687
      Devang Patel authored
      Convert DwarfWriter into a pass.
      Now Users request DwarfWriter through getAnalysisUsage() instead of creating an instance of DwarfWriter object directly.
      
      llvm-svn: 61955
      f6466687
  21. Dec 05, 2008
  22. Dec 04, 2008
    • Bill Wendling's avatar
      Temporarily revert r60519. It was causing a bootstrap failure: · 6949f613
      Bill Wendling authored
      /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.obj/./gcc/xgcc -B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.obj/./gcc/ -B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.5.0/bin/ -B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.5.0/lib/ -isystem /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.5.0/include -isystem /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.5.0/sys-include -DHAVE_CONFIG_H -I. -I../../../llvm-gcc.src/libgomp -I. -I../../../llvm-gcc.src/libgomp/config/posix -I../../../llvm-gcc.src/libgomp -Wall -pthread -Werror -O2 -g -O2 -MT barrier.lo -MD -MP -MF .deps/barrier.Tpo -c ../../../llvm-gcc.src/libgomp/barrier.c  -fno-common -DPIC -o .libs/barrier.o
      checking for sys/file.h... /var/folders/zG/zGE-ZJOGFiGjv0B5cs5oYE+++TM/-Tmp-//cc34Jg5P.s:13:non-relocatable subtraction expression, "_gomp_tls_key" minus "L1$pb"
      /var/folders/zG/zGE-ZJOGFiGjv0B5cs5oYE+++TM/-Tmp-//cc34Jg5P.s:13:symbol: "_gomp_tls_key" can't be undefined in a subtraction expression
      make[4]: *** [barrier.lo] Error 1
      make[4]: *** Waiting for unfinished jobs....
      /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.obj/./gcc/xgcc -B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.obj/./gcc/ -B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.5.0/bin/ -B/Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.5.0/lib/ -isystem /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.5.0/include -isystem /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvm-gcc.install/i386-apple-darwin9.5.0/sys-include -DHAVE_CONFIG_H -I. -I../../../llvm-gcc.src/libgomp -I. -I../../../llvm-gcc.src/libgomp/config/posix -I../../../llvm-gcc.src/libgomp -Wall -pthread -Werror -O2 -g -O2 -MT alloc.lo -MD -MP -MF .deps/alloc.Tpo -c ../../../llvm-gcc.src/libgomp/alloc.c -o alloc.o >/dev/null 2>&1
      yes
      checking for sys/param.h... make[3]: *** [all-recursive] Error 1
      make[2]: *** [all] Error 2
      make[1]: *** [all-target-libgomp] Error 2
      make[1]: *** Waiting for unfinished jobs....
      
      llvm-svn: 60527
      6949f613
    • Evan Cheng's avatar
  23. Nov 22, 2008
  24. Nov 09, 2008
  25. Nov 08, 2008
  26. Nov 07, 2008
    • Dan Gohman's avatar
      Flush the raw_ostream after emitting the assembly for a function. · cb0df597
      Dan Gohman authored
      This is a temporary fix for the -print-emitted-asm option, where
      errs() is used as the stream, in the case where other code is
      using stderr without using errs()' buffer. Hopefully soon we'll
      fix errs() to be non-buffered instead. Patch by Preston Gurd.
      
      llvm-svn: 58859
      cb0df597
  27. Oct 06, 2008
  28. Oct 03, 2008
  29. Oct 02, 2008
  30. Sep 29, 2008
  31. Sep 27, 2008
  32. Sep 26, 2008
    • Bill Wendling's avatar
      If we have a function with an unreachable statement such that the ending debug · 374d7f2b
      Bill Wendling authored
      information is in an unreachable block, then it's possible that the high/low pc
      values won't be set for the dwarf information. E.g., this function:
      
      void abort(void) __attribute__((__noreturn__));
      void dead_beef(void) __attribute__ ((noreturn));
      
      int *b;
      
      void dead_beef(void) {
        *b=0xdeadbeef;
        abort();
      }
      
      has a call to "@llvm.dbg.region.end" only in the unreachable block:
      
      define void @dead_beef() noreturn nounwind  {
      entry:
      	call void @llvm.dbg.func.start(...)
      	call void @llvm.dbg.stoppoint(...)
      ...
      	call void @abort( ) noreturn nounwind 
      	unreachable
      
      return:		; No predecessors!
      	call void @llvm.dbg.stoppoint(...)
      	call void @llvm.dbg.region.end(...)
      	ret void
      }
      
      The dwarf information emitted is something like:
      
      0x00000084:     TAG_subprogram [5]  
                       AT_name( "dead_beef" )
                       AT_external( 0x01 )
                       AT_prototyped( 0x01 )
                       AT_decl_file( 0x01 )
                       AT_decl_line( 0x08 )
      
      Note that this is *not* the best fix for this problem, but a band-aid for an
      gaping wound. This code needs to be changed when we revamp our debugging
      information.
      
      llvm-svn: 56628
      374d7f2b
  33. Sep 25, 2008
Loading