Skip to content
  1. Nov 15, 2012
  2. Oct 23, 2012
  3. Oct 19, 2012
  4. Oct 18, 2012
    • Bob Wilson's avatar
      Temporarily revert the TargetTransform changes. · d6d9ccca
      Bob Wilson authored
      The TargetTransform changes are breaking LTO bootstraps of clang.  I am
      working with Nadav to figure out the problem, but I am reverting it for now
      to get our buildbots working.
      
      This reverts svn commits: 165665 165669 165670 165786 165787 165997
      and I have also reverted clang svn 165741
      
      llvm-svn: 166168
      d6d9ccca
  5. Oct 16, 2012
  6. Oct 12, 2012
  7. Oct 10, 2012
  8. Oct 08, 2012
  9. Oct 04, 2012
  10. Sep 06, 2012
  11. Aug 21, 2012
  12. Aug 17, 2012
    • Bill Wendling's avatar
      Change the `linker_private_weak_def_auto' linkage to `linkonce_odr_auto_hide' to · 34bc34ec
      Bill Wendling authored
      make it more consistent with its intended semantics.
      
      The `linker_private_weak_def_auto' linkage type was meant to automatically hide
      globals which never had their addresses taken. It has nothing to do with the
      `linker_private' linkage type, which outputs the symbols with a `l' (ell) prefix
      among other things.
      
      The intended semantic is more like the `linkonce_odr' linkage type.
      
      Change the name of the linkage type to `linkonce_odr_auto_hide'. And therefore
      changing the semantics so that it produces the correct output for the linker.
      
      Note: The old linkage name `linker_private_weak_def_auto' will still parse but
      is not a synonym for `linkonce_odr_auto_hide'. This should be removed in 4.0.
      <rdar://problem/11754934>
      
      llvm-svn: 162114
      34bc34ec
  13. Aug 09, 2012
  14. Aug 07, 2012
  15. Aug 06, 2012
  16. Jun 22, 2012
  17. Jun 06, 2012
  18. May 30, 2012
    • David Blaikie's avatar
      Reinstate -O3 for LTO. · 787705ae
      David Blaikie authored
      This broke in r144788 when the CodeGenOpt option was moved from everywhere else
      (specifically, from addPassesToEmitFile) to createTargetMachine. Since
      LTOCodeGenerator wasn't passing the 4th argument, when the 4th parameter became
      the 3rd, it silently continued to compile (int->bool conversion) but meant
      something completely different.
      
      This change preserves the existing (accidental) and previous (default)
      semantics of the addPassesToEmitFile and restores the previous/intended
      CodeGenOpt argument by passing it appropriately to createTargetMachine.
      
      (discovered by pending changes to -Wconversion to catch constant->bool
      conversions)
      
      llvm-svn: 157705
      787705ae
  19. May 11, 2012
  20. Apr 16, 2012
  21. Apr 10, 2012
  22. Apr 09, 2012
  23. Apr 05, 2012
    • Bill Wendling's avatar
      The internalize pass can be dangerous for LTO. · 4f60125d
      Bill Wendling authored
      Consider the following program:
      
      $ cat main.c
      void foo(void) { }
      
      int main(int argc, char *argv[]) {
          foo();
          return 0;
      }
      $ cat bundle.c 
      extern void foo(void);
      
      void bar(void) {
           foo();
      }
      $ clang -o main main.c
      $ clang -o bundle.so bundle.c -bundle -bundle_loader ./main
      $ nm -m bundle.so
      0000000000000f40 (__TEXT,__text) external _bar
                       (undefined) external _foo (from executable)
                       (undefined) external dyld_stub_binder (from libSystem)
      $ clang -o main main.c -O4
      $ clang -o bundle.so bundle.c -bundle -bundle_loader ./main
      Undefined symbols for architecture x86_64:
        "_foo", referenced from:
            _bar in bundle-elQN6d.o
      ld: symbol(s) not found for architecture x86_64
      clang: error: linker command failed with exit code 1 (use -v to see invocation)
      
      The linker was told that the 'foo' in 'main' was 'internal' and had no uses, so
      it was dead stripped.
      
      Another situation is something like:
      
      define void @foo() {
        ret void
      }
      
      define void @bar() {
        call asm volatile "call _foo" ...
        ret void
      }
      
      The only use of 'foo' is inside of an inline ASM call. Since we don't look
      inside those for uses of functions, we don't specify this as a "use."
      
      Get around this by not invoking the 'internalize' pass by default. This is an
      admitted hack for LTO correctness.
      <rdar://problem/11185386>
      
      llvm-svn: 154124
      4f60125d
  24. Apr 03, 2012
  25. Apr 02, 2012
  26. Mar 31, 2012
Loading