Skip to content
  1. Mar 24, 2012
    • Kostya Serebryany's avatar
      add EP_OptimizerLast extension point · e505a5ab
      Kostya Serebryany authored
      llvm-svn: 153353
      e505a5ab
    • Bill Wendling's avatar
      It's possible for two types, which are isomorphic, to be added to the · 8737480d
      Bill Wendling authored
      destination module, but one of them isn't used in the destination module. If
      another module comes along and the uses the unused type, there could be type
      conflicts when the modules are finally linked together. (This happened when
      building LLVM.)
      
      The test that was reduced is:
      
      Module A:
      
      %Z = type { %A }
      %A = type { %B.1, [7 x x86_fp80] }
      %B.1 = type { %C }
      %C = type { i8* }
      
      declare void @func_x(%C*, i64, i64)
      declare void @func_z(%Z* nocapture)
      
      Module B:
      
      %B = type { %C.1 }
      %C.1 = type { i8* }
      %A.2 = type { %B.3, [5 x x86_fp80] }
      %B.3 = type { %C.1 }
      
      define void @func_z() {
        %x = alloca %A.2, align 16
        %y = getelementptr inbounds %A.2* %x, i64 0, i32 0, i32 0
        call void @func_x(%C.1* %y, i64 37, i64 927) nounwind
        ret void
      }
      
      declare void @func_x(%C.1*, i64, i64)
      declare void @func_y(%B* nocapture)
      
      (Unfortunately, this test doesn't fail under llvm-link, only during an LTO
      linking.) The '%C' and '%C.1' clash. The destination module gets the '%C'
      declaration. When merging Module B, it looks at the '%C.1' subtype of the '%B'
      structure. It adds that in, because that's cool. And when '%B.3' is processed,
      it uses the '%C.1'. But the '%B' has used '%C' and we prefer to use '%C'. So the
      '@func_x' type is changed to 'void (%C*, i64, i64)', but the type of '%x' in
      '@func_z' remains '%A.2'. The GEP resolves to a '%C.1', which conflicts with the
      '@func_x' signature.
      
      We can resolve this situation by making sure that the type is used in the
      destination before saying that it should be used in the module being merged in.
      
      With this fix, LLVM and Clang both compile under LTO.
      <rdar://problem/10913281>
      
      llvm-svn: 153351
      8737480d
    • Jim Grosbach's avatar
      ARM tidy up ARMConstantIsland.cpp. · 190e7b6e
      Jim Grosbach authored
      No functional change, just tidy up the code and nomenclature a bit.
      
      llvm-svn: 153347
      190e7b6e
    • Jim Grosbach's avatar
      Pretty-printing comments for literal floating point in .s files. · 4a2909ab
      Jim Grosbach authored
      Dump the hex representation to the comment stream as well as the float
      value.
      
      llvm-svn: 153346
      4a2909ab
    • Akira Hatanaka's avatar
      Add a hook in MCELFObjectTargetWriter to allow targets to sort relocation · 64ad2cf1
      Akira Hatanaka authored
      entries in the relocation table before they are written out to the file. 
      
      llvm-svn: 153345
      64ad2cf1
  2. Mar 23, 2012
  3. Mar 22, 2012
Loading