1. Feb 06, 2019
    • Louis Dionne's avatar
      a3ec627a
    • James Y Knight's avatar
      [opaque pointer types] Pass function types for runtime function calls. · 9871db06
      James Y Knight authored
      Emit{Nounwind,}RuntimeCall{,OrInvoke} have been modified to take a
      FunctionCallee as an argument, and CreateRuntimeFunction has been
      modified to return a FunctionCallee. All callers have been updated.
      
      Additionally, CreateBuiltinFunction is removed, as it was redundant
      with CreateRuntimeFunction after some previous changes.
      
      Differential Revision: https://reviews.llvm.org/D57668
      
      llvm-svn: 353184
      9871db06
    • Sam Clegg's avatar
      [WebAssembly] Object: Remove redundant method. NFC. · d9c9dc03
      Sam Clegg authored
      Differential Revision: https://reviews.llvm.org/D57719
      
      llvm-svn: 353183
      d9c9dc03
    • Simon Pilgrim's avatar
      [X86][AVX] Add PR34041 subvector broadcast test cases · ec5a6761
      Simon Pilgrim authored
      llvm-svn: 353182
      ec5a6761
    • James Y Knight's avatar
      [opaque pointer types] Fix the CallInfo passed to EmitCall in some · b92d290e
      James Y Knight authored
      edge cases.
      
      Currently, EmitCall emits a call instruction with a function type
      derived from the pointee-type of the callee. This *should* be the same
      as the type created from the CallInfo parameter, but in some cases an
      incorrect CallInfo was being passed.
      
      All of these fixes were discovered by the addition of the assert in
      EmitCall which verifies that the passed-in CallInfo matches the
      Callee's function type.
      
      As far as I know, these issues caused no bugs at the moment, as the
      correct types were ultimately being emitted. But, some would become
      problematic when pointee types are removed.
      
      List of fixes:
      
      * arrangeCXXConstructorCall was passing an incorrect value for the
        number of Required args, when calling an inheriting constructor
        where the inherited constructor is variadic. (The inheriting
        constructor doesn't actually get passed any of the user's args, but
        the code was calculating it as if it did).
      
      * arrangeFreeFunctionLikeCall was not including the count of the
        pass_object_size arguments in the count of required args.
      
      * OpenCL uses other address spaces for the "this" pointer. However,
        commonEmitCXXMemberOrOperatorCall was not annotating the address
        space on the "this" argument of the call.
      
      * Destructor calls were being created with EmitCXXMemberOrOperatorCall
        instead of EmitCXXDestructorCall in a few places. This was a problem
        because the calling convention sometimes has destructors returning
        "this" rather than void, and the latter function knows about that,
        and sets up the types properly (through calling
        arrangeCXXStructorDeclaration), while the former does not.
      
      * generateObjCGetterBody: the 'objc_getProperty' function returns type
        'id', but was being called as if it returned the particular
        property's type. (That is of course the *dynamic* return type, and
        there's a downcast immediately after.)
      
      * OpenMP user-defined reduction functions (#pragma omp declare
        reduction) can be called with a subclass of the declared type. In
        such case, the call was being setup as if the function had been
        actually declared to take the subtype, rather than the base type.
      
      Differential Revision: https://reviews.llvm.org/D57664
      
      llvm-svn: 353181
      b92d290e
  2. Feb 05, 2019