Skip to content
  • Shuxin Yang's avatar
    Fix an assertion in MemCpyOpt pass. · bd254f26
    Shuxin Yang authored
      The MemCpyOpt pass is capable of optimizing:
          callee(&S); copy N bytes from S to D.
        into:
          callee(&D);
    subject to some legality constraints. 
    
      Assertion is triggered when the compiler tries to evalute "sizeof(typeof(D))",
    while D is an opaque-typed, 'sret' formal argument of function being compiled.
    i.e. the signature of the func being compiled is something like this:
      T caller(...,%opaque* noalias nocapture sret %D, ...)
    
      The fix is that when come across such situation, instead of calling some
    utility functions to get the size of D's type (which will crash), we simply
    assume D has at least N bytes as implified by the copy-instruction.
    
    rdar://14073661 
    
    llvm-svn: 183584
    bd254f26
Loading