Skip to content
Snippets Groups Projects
  • Richard Smith's avatar
    7da28aef
    Re-commit r282556, reverted in r282564, with a fix to CallArgList::addFrom to · 7da28aef
    Richard Smith authored
    function correctly when targeting MS ABIs (this appears to have never mattered
    prior to this change).
    
    Update test case to always cover both 32-bit and 64-bit Windows ABIs, since
    they behave somewhat differently from each other here.
    
    Update test case to also cover operators , && and ||, which it appears are also
    affected by P0145R3 (they're not explicitly called out by the design document,
    but this is the emergent behavior of the existing wording).
    
    
    Original commit message:
    
    P0145R3 (C++17 evaluation order tweaks): evaluate the right-hand side of
    assignment and compound-assignment operators before the left-hand side. (Even
    if it's an overloaded operator.)
    
    This completes the implementation of P0145R3 + P0400R0 for all targets except
    Windows, where the evaluation order guarantees for <<, >>, and ->* are
    unimplementable as the ABI requires the function arguments are evaluated from
    right to left (because parameter destructors are run from left to right in the
    callee).
    
    
    git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@282619 91177308-0d34-0410-b5e6-96231b3b80d8
    7da28aef
    History
    Re-commit r282556, reverted in r282564, with a fix to CallArgList::addFrom to
    Richard Smith authored
    function correctly when targeting MS ABIs (this appears to have never mattered
    prior to this change).
    
    Update test case to always cover both 32-bit and 64-bit Windows ABIs, since
    they behave somewhat differently from each other here.
    
    Update test case to also cover operators , && and ||, which it appears are also
    affected by P0145R3 (they're not explicitly called out by the design document,
    but this is the emergent behavior of the existing wording).
    
    
    Original commit message:
    
    P0145R3 (C++17 evaluation order tweaks): evaluate the right-hand side of
    assignment and compound-assignment operators before the left-hand side. (Even
    if it's an overloaded operator.)
    
    This completes the implementation of P0145R3 + P0400R0 for all targets except
    Windows, where the evaluation order guarantees for <<, >>, and ->* are
    unimplementable as the ABI requires the function arguments are evaluated from
    right to left (because parameter destructors are run from left to right in the
    callee).
    
    
    git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@282619 91177308-0d34-0410-b5e6-96231b3b80d8
Code owners
Assign users and groups as approvers for specific file changes. Learn more.