Deleted Added
full compact
i386.c (18335) i386.c (18349)
1/* Subroutines for insn-output.c for Intel X86.
2 Copyright (C) 1988, 1992, 1994, 1995 Free Software Foundation, Inc.
3
4This file is part of GNU CC.
5
6GNU CC is free software; you can redistribute it and/or modify
7it under the terms of the GNU General Public License as published by
8the Free Software Foundation; either version 2, or (at your option)

--- 1446 unchanged lines hidden (view full) ---

1455function_prologue (file, size)
1456 FILE *file;
1457 int size;
1458{
1459 register int regno;
1460 int limit;
1461 rtx xops[4];
1462 int pic_reg_used = flag_pic && (current_function_uses_pic_offset_table
1/* Subroutines for insn-output.c for Intel X86.
2 Copyright (C) 1988, 1992, 1994, 1995 Free Software Foundation, Inc.
3
4This file is part of GNU CC.
5
6GNU CC is free software; you can redistribute it and/or modify
7it under the terms of the GNU General Public License as published by
8the Free Software Foundation; either version 2, or (at your option)

--- 1446 unchanged lines hidden (view full) ---

1455function_prologue (file, size)
1456 FILE *file;
1457 int size;
1458{
1459 register int regno;
1460 int limit;
1461 rtx xops[4];
1462 int pic_reg_used = flag_pic && (current_function_uses_pic_offset_table
1463 || current_function_uses_const_pool);
1463 || current_function_uses_const_pool
1464 || profile_flag || profile_block_flag);
1464
1465 xops[0] = stack_pointer_rtx;
1466 xops[1] = frame_pointer_rtx;
1467 xops[2] = GEN_INT (size);
1468 if (frame_pointer_needed)
1469 {
1470 output_asm_insn ("push%L1 %1", xops);
1471 output_asm_insn (AS2 (mov%L0,%0,%1), xops);

--- 44 unchanged lines hidden (view full) ---

1516
1517int
1518simple_386_epilogue ()
1519{
1520 int regno;
1521 int nregs = 0;
1522 int reglimit = (frame_pointer_needed
1523 ? FRAME_POINTER_REGNUM : STACK_POINTER_REGNUM);
1465
1466 xops[0] = stack_pointer_rtx;
1467 xops[1] = frame_pointer_rtx;
1468 xops[2] = GEN_INT (size);
1469 if (frame_pointer_needed)
1470 {
1471 output_asm_insn ("push%L1 %1", xops);
1472 output_asm_insn (AS2 (mov%L0,%0,%1), xops);

--- 44 unchanged lines hidden (view full) ---

1517
1518int
1519simple_386_epilogue ()
1520{
1521 int regno;
1522 int nregs = 0;
1523 int reglimit = (frame_pointer_needed
1524 ? FRAME_POINTER_REGNUM : STACK_POINTER_REGNUM);
1524 int pic_reg_used = flag_pic && (current_function_uses_pic_offset_table
1525 || current_function_uses_const_pool);
1526
1525
1526#ifdef FUNCTION_PROFILER_EPILOGUE
1527 if (profile_flag)
1528 return 0;
1529#endif
1530
1531 if (flag_pic && (current_function_uses_pic_offset_table
1532 || current_function_uses_const_pool
1533 || profile_flag || profile_block_flag))
1534 return 0;
1535
1527#ifdef NON_SAVING_SETJMP
1528 if (NON_SAVING_SETJMP && current_function_calls_setjmp)
1529 return 0;
1530#endif
1531
1532 if (! reload_completed)
1533 return 0;
1534
1535 for (regno = reglimit - 1; regno >= 0; regno--)
1536#ifdef NON_SAVING_SETJMP
1537 if (NON_SAVING_SETJMP && current_function_calls_setjmp)
1538 return 0;
1539#endif
1540
1541 if (! reload_completed)
1542 return 0;
1543
1544 for (regno = reglimit - 1; regno >= 0; regno--)
1536 if ((regs_ever_live[regno] && ! call_used_regs[regno])
1537 || (regno == PIC_OFFSET_TABLE_REGNUM && pic_reg_used))
1545 if (regs_ever_live[regno] && ! call_used_regs[regno])
1538 nregs++;
1539
1540 return nregs == 0 || ! frame_pointer_needed;
1541}
1542
1543
1544/* This function generates the assembly code for function exit.
1545 FILE is an stdio stream to output the code to.

--- 6 unchanged lines hidden (view full) ---

1552{
1553 register int regno;
1554 register int nregs, limit;
1555 int offset;
1556 rtx xops[3];
1557 int pic_reg_used = flag_pic && (current_function_uses_pic_offset_table
1558 || current_function_uses_const_pool);
1559
1546 nregs++;
1547
1548 return nregs == 0 || ! frame_pointer_needed;
1549}
1550
1551
1552/* This function generates the assembly code for function exit.
1553 FILE is an stdio stream to output the code to.

--- 6 unchanged lines hidden (view full) ---

1560{
1561 register int regno;
1562 register int nregs, limit;
1563 int offset;
1564 rtx xops[3];
1565 int pic_reg_used = flag_pic && (current_function_uses_pic_offset_table
1566 || current_function_uses_const_pool);
1567
1568#ifdef FUNCTION_PROFILER_EPILOGUE
1569 if (profile_flag)
1570 FUNCTION_PROFILER_EPILOGUE (file);
1571#endif
1572
1560 /* Compute the number of registers to pop */
1561
1562 limit = (frame_pointer_needed
1563 ? FRAME_POINTER_REGNUM
1564 : STACK_POINTER_REGNUM);
1565
1566 nregs = 0;
1567

--- 1678 unchanged lines hidden ---
1573 /* Compute the number of registers to pop */
1574
1575 limit = (frame_pointer_needed
1576 ? FRAME_POINTER_REGNUM
1577 : STACK_POINTER_REGNUM);
1578
1579 nregs = 0;
1580

--- 1678 unchanged lines hidden ---