Skip to content
  1. Oct 31, 2013
    • NAKAMURA Takumi's avatar
      160cef8d
    • Rafael Espindola's avatar
      Fix a use after free on invalid input. · 26b43cac
      Rafael Espindola authored
      llvm-svn: 193737
      26b43cac
    • Rafael Espindola's avatar
      Fix most memory leaks in tablegen. · 8fb73c87
      Rafael Espindola authored
      Found by the valgrind bot.
      
      llvm-svn: 193736
      8fb73c87
    • Rafael Espindola's avatar
      Merge CallGraph and BasicCallGraph. · 6554e5a9
      Rafael Espindola authored
      llvm-svn: 193734
      6554e5a9
    • Yuchen Wu's avatar
      Updated llvm-cov's OVERVIEW description · 9194d7b0
      Yuchen Wu authored
      llvm-svn: 193732
      9194d7b0
    • Richard Smith's avatar
      Factor out custom parsing for iboutletcollection and vec_type_hint attributes · b1f9a283
      Richard Smith authored
      into a separate "parse an attribute that takes a type argument" codepath. This
      results in both codepaths being a lot cleaner and simpler, and fixes some bugs
      where the type argument handling bled into the expression argument handling and
      caused us to both accept invalid and reject valid attribute arguments.
      
      llvm-svn: 193731
      b1f9a283
    • Evgeniy Stepanov's avatar
      [sanitizer] Intercept getline, getdelim. · 1cb37c4e
      Evgeniy Stepanov authored
      llvm-svn: 193730
      1cb37c4e
    • Alexey Samsonov's avatar
    • Jim Grosbach's avatar
      Legalize: Improve legalization of long vector extends. · 72366786
      Jim Grosbach authored
      When an extend more than doubles the size of the elements (e.g., a zext
      from v16i8 to v16i32), the normal legalization method of splitting the
      vectors will run into problems as by the time the destination vector is
      legal, the source vector is illegal. The end result is the operation
      often becoming scalarized, with the typical horrible performance. For
      example, on x86_64, the simple input of:
      define void @bar(<16 x i8> %a, <16 x i32>* %p) nounwind {
        %tmp = zext <16 x i8> %a to <16 x i32>
        store <16 x i32> %tmp, <16 x i32>*%p
        ret void
      }
      
      Generates:
        .section  __TEXT,__text,regular,pure_instructions
        .section  __TEXT,__const
        .align  5
      LCPI0_0:
        .long 255                     ## 0xff
        .long 255                     ## 0xff
        .long 255                     ## 0xff
        .long 255                     ## 0xff
        .long 255                     ## 0xff
        .long 255                     ## 0xff
        .long 255                     ## 0xff
        .long 255                     ## 0xff
        .section  __TEXT,__text,regular,pure_instructions
        .globl  _bar
        .align  4, 0x90
      _bar:
        vpunpckhbw  %xmm0, %xmm0, %xmm1
        vpunpckhwd  %xmm0, %xmm1, %xmm2
        vpmovzxwd %xmm1, %xmm1
        vinsertf128 $1, %xmm2, %ymm1, %ymm1
        vmovaps LCPI0_0(%rip), %ymm2
        vandps  %ymm2, %ymm1, %ymm1
        vpmovzxbw %xmm0, %xmm3
        vpunpckhwd  %xmm0, %xmm3, %xmm3
        vpmovzxbd %xmm0, %xmm0
        vinsertf128 $1, %xmm3, %ymm0, %ymm0
        vandps  %ymm2, %ymm0, %ymm0
        vmovaps %ymm0, (%rdi)
        vmovaps %ymm1, 32(%rdi)
        vzeroupper
        ret
      
      So instead we can check if there are legal types that enable us to split
      more cleverly when the input vector is already legal such that we don't
      turn it into an illegal type. If the extend is such that it's more than
      doubling the size of the input we check if
        - the number of vector elements is even,
        - the source type is legal,
        - the type of a split source is illegal,
        - the type of an extended (by doubling element size) source is legal, and
        - the type of that extended source when split is legal.
      If the conditions are met, instead of just splitting both the
      destination and the source types, we create an extend that only goes up
      one "step" (doubling the element width), and the continue legalizing the
      rest of the operation normally. The result is that this operates as a
      new, more effecient, termination condition for the loop of "split the
      operation until the destination type is legal."
      
      With this change, the above example now compiles to:
      _bar:
        vpxor %xmm1, %xmm1, %xmm1
        vpunpcklbw  %xmm1, %xmm0, %xmm2
        vpunpckhwd  %xmm1, %xmm2, %xmm3
        vpunpcklwd  %xmm1, %xmm2, %xmm2
        vinsertf128 $1, %xmm3, %ymm2, %ymm2
        vpunpckhbw  %xmm1, %xmm0, %xmm0
        vpunpckhwd  %xmm1, %xmm0, %xmm3
        vpunpcklwd  %xmm1, %xmm0, %xmm0
        vinsertf128 $1, %xmm3, %ymm0, %ymm0
        vmovaps %ymm0, 32(%rdi)
        vmovaps %ymm2, (%rdi)
        vzeroupper
        ret
      
      This generalizes a custom lowering that was added a while back to the
      ARM backend. That lowering is no longer necessary, and is removed. The
      testcases for it, however, provide excellent ARM tests for this change
      and so remain.
      
      rdar://14735100
      
      llvm-svn: 193727
      72366786
    • Fariborz Jahanian's avatar
      ObjectiveC migrator: annotate all protocols/methods in · 9d2ffea4
      Fariborz Jahanian authored
      a category with NSxxxDeprecated name with deprecated
      annotation. // rdar://15337661
      
      llvm-svn: 193726
      9d2ffea4
    • Argyrios Kyrtzidis's avatar
      [libclang/python] Add __contains__ to SourceRange class. · 28d5b6bb
      Argyrios Kyrtzidis authored
      Patch by Loïc Jaquemet!
      
      llvm-svn: 193725
      28d5b6bb
    • Enrico Granata's avatar
      This checkin introduces the notion of hardcoded formatters, which LLDB can... · 686f3deb
      Enrico Granata authored
      This checkin introduces the notion of hardcoded formatters, which LLDB can bind to a ValueObject internally depending on any criteria
      User-vended by-type formatters still would prevail on these hardcoded ones
      
      For the time being, while the infrastructure is there, no such formatters exist
      
      This can be useful for cases such as expanding vtables for C++ class pointers, when there is no clear cut notion of a typename matching, and the feature is low-level enough that it makes sense for the debugger core to be vending it
      
      llvm-svn: 193724
      686f3deb
    • Matt Arsenault's avatar
      Fix a few typos · 909d0c06
      Matt Arsenault authored
      llvm-svn: 193723
      909d0c06
    • Mark Lacey's avatar
      Fix Windows build by including CGFunctionInfo.h. · fbbc738e
      Mark Lacey authored
      CodeGenTypes.h instantiates llvm::FoldingSet<> with CGFunctionInfo,
      and VC++ doesn't like the static_cast from FoldingSetImpl::Node* to
      CGFunctionInfo* since it hasn't seen the definition of CGFunctionInfo
      and that it inherits from FoldingSetImpl::Node.
      
      llvm-svn: 193722
      fbbc738e
    • Matt Arsenault's avatar
      Fix CodeGen for unaligned loads with address spaces · 2ba54c3d
      Matt Arsenault authored
      llvm-svn: 193721
      2ba54c3d
  2. Oct 30, 2013
Loading