File tree Expand file tree Collapse file tree 1 file changed +22
-10
lines changed
compiler/src/dmd/backend/x86 Expand file tree Collapse file tree 1 file changed +22
-10
lines changed Original file line number Diff line number Diff line change @@ -1680,23 +1680,35 @@ static if (0)
16801680 if ((retregs & cgstate.regcon.mvar) == retregs) // if exactly in reg vars
16811681 {
16821682 reg_t outreg;
1683- if (size <= REGSIZE || (retregs & XMMREGS ) || (retregs & INSTR .FLOATREGS ))
1684- {
1685- outreg = findreg(retregs);
1686- assert (retregs == mask(outreg)); /* no more bits are set */
1687- }
1688- else if (size <= 2 * REGSIZE )
1683+ if (AArch64)
16891684 {
1690- if (AArch64 )
1685+ if (tycomplex(tym) )
16911686 {
16921687 outreg = findreg(retregs & INSTR .MSW );
16931688 assert (retregs & INSTR .LSW );
16941689 }
1695- else
1690+ else if (size <= REGSIZE || (retregs & INSTR .FLOATREGS ))
1691+ {
1692+ outreg = findreg(retregs);
1693+ assert (retregs == mask(outreg));
1694+ }
1695+ else if (size <= 2 * REGSIZE )
16961696 {
1697- outreg = findregmsw (retregs);
1698- assert (retregs & mLSW );
1697+ outreg = findreg (retregs & INSTR . MSW );
1698+ assert (retregs & INSTR . LSW );
16991699 }
1700+ else
1701+ assert (0 );
1702+ }
1703+ else if (size <= REGSIZE || (retregs & XMMREGS ))
1704+ {
1705+ outreg = findreg(retregs);
1706+ assert (retregs == mask(outreg)); /* no more bits are set */
1707+ }
1708+ else if (size <= 2 * REGSIZE )
1709+ {
1710+ outreg = findregmsw(retregs);
1711+ assert (retregs & mLSW);
17001712 }
17011713 else
17021714 assert (0 );
You can’t perform that action at this time.
0 commit comments