Skip to content
  1. Apr 09, 2012
  2. 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
  3. Apr 03, 2012
  4. Apr 02, 2012
  5. Mar 31, 2012
  6. Mar 30, 2012
  7. Mar 29, 2012
  8. Mar 28, 2012
  9. Feb 05, 2012
    • Chris Lattner's avatar
      reapply the patches reverted in r149470 that reenable ConstantDataArray, · cf9e8f69
      Chris Lattner authored
      but with a critical fix to the SelectionDAG code that optimizes copies
      from strings into immediate stores: the previous code was stopping reading
      string data at the first nul.  Address this by adding a new argument to
      llvm::getConstantStringInfo, preserving the behavior before the patch.
      
      llvm-svn: 149800
      cf9e8f69
  10. Feb 01, 2012
  11. Jan 31, 2012
  12. Jan 27, 2012
  13. Jan 20, 2012
  14. Jan 07, 2012
  15. Dec 02, 2011
    • Nick Lewycky's avatar
      Move global variables in TargetMachine into new TargetOptions class. As an API · 50f02cb2
      Nick Lewycky authored
      change, now you need a TargetOptions object to create a TargetMachine. Clang
      patch to follow.
      
      One small functionality change in PTX. PTX had commented out the machine
      verifier parts in their copy of printAndVerify. That now calls the version in
      LLVMTargetMachine. Users of PTX who need verification disabled should rely on
      not passing the command-line flag to enable it.
      
      llvm-svn: 145714
      50f02cb2
  16. Nov 05, 2011
  17. Nov 04, 2011
  18. Nov 01, 2011
  19. Oct 18, 2011
  20. Sep 08, 2011
Loading