@@ -2444,53 +2444,6 @@ struct GTY(()) stack_local_entry {
2444
2444
struct stack_local_entry *next;
2445
2445
};
2446
2446
2447
- /* Structure describing stack frame layout.
2448
- Stack grows downward:
2449
-
2450
- [arguments]
2451
- <- ARG_POINTER
2452
- saved pc
2453
-
2454
- saved static chain if ix86_static_chain_on_stack
2455
-
2456
- saved frame pointer if frame_pointer_needed
2457
- <- HARD_FRAME_POINTER
2458
- [saved regs]
2459
- <- regs_save_offset
2460
- [padding0]
2461
-
2462
- [saved SSE regs]
2463
- <- sse_regs_save_offset
2464
- [padding1] |
2465
- | <- FRAME_POINTER
2466
- [va_arg registers] |
2467
- |
2468
- [frame] |
2469
- |
2470
- [padding2] | = to_allocate
2471
- <- STACK_POINTER
2472
- */
2473
- struct ix86_frame
2474
- {
2475
- int nsseregs;
2476
- int nregs;
2477
- int va_arg_size;
2478
- int red_zone_size;
2479
- int outgoing_arguments_size;
2480
-
2481
- /* The offsets relative to ARG_POINTER. */
2482
- HOST_WIDE_INT frame_pointer_offset;
2483
- HOST_WIDE_INT hard_frame_pointer_offset;
2484
- HOST_WIDE_INT stack_pointer_offset;
2485
- HOST_WIDE_INT hfp_save_offset;
2486
- HOST_WIDE_INT reg_save_offset;
2487
- HOST_WIDE_INT sse_reg_save_offset;
2488
-
2489
- /* When save_regs_using_mov is set, emit prologue using
2490
- move instead of push instructions. */
2491
- bool save_regs_using_mov;
2492
- };
2493
-
2494
2447
/* Which cpu are we scheduling for. */
2495
2448
enum attr_cpu ix86_schedule;
2496
2449
@@ -2582,7 +2535,7 @@ static unsigned int ix86_function_arg_boundary (machine_mode,
2582
2535
const_tree);
2583
2536
static rtx ix86_static_chain (const_tree, bool);
2584
2537
static int ix86_function_regparm (const_tree, const_tree);
2585
- static void ix86_compute_frame_layout (struct ix86_frame * );
2538
+ static void ix86_compute_frame_layout (void );
2586
2539
static bool ix86_expand_vector_init_one_nonzero (bool, machine_mode,
2587
2540
rtx, rtx, int);
2588
2541
static void ix86_add_new_builtins (HOST_WIDE_INT, HOST_WIDE_INT);
@@ -11903,7 +11856,8 @@ ix86_can_use_return_insn_p (void)
11903
11856
if (crtl->args.pops_args && crtl->args.size >= 32768)
11904
11857
return 0;
11905
11858
11906
- ix86_compute_frame_layout (&frame);
11859
+ ix86_compute_frame_layout ();
11860
+ frame = cfun->machine->frame;
11907
11861
return (frame.stack_pointer_offset == UNITS_PER_WORD
11908
11862
&& (frame.nregs + frame.nsseregs) == 0);
11909
11863
}
@@ -12389,8 +12343,8 @@ ix86_can_eliminate (const int from, const int to)
12389
12343
HOST_WIDE_INT
12390
12344
ix86_initial_elimination_offset (int from, int to)
12391
12345
{
12392
- struct ix86_frame frame ;
12393
- ix86_compute_frame_layout (& frame) ;
12346
+ ix86_compute_frame_layout () ;
12347
+ struct ix86_frame frame = cfun->machine->frame ;
12394
12348
12395
12349
if (from == ARG_POINTER_REGNUM && to == HARD_FRAME_POINTER_REGNUM)
12396
12350
return frame.hard_frame_pointer_offset;
@@ -12429,8 +12383,9 @@ ix86_builtin_setjmp_frame_value (void)
12429
12383
/* Fill structure ix86_frame about frame of currently computed function. */
12430
12384
12431
12385
static void
12432
- ix86_compute_frame_layout (struct ix86_frame *frame )
12386
+ ix86_compute_frame_layout (void )
12433
12387
{
12388
+ struct ix86_frame *frame = &cfun->machine->frame;
12434
12389
unsigned HOST_WIDE_INT stack_alignment_needed;
12435
12390
HOST_WIDE_INT offset;
12436
12391
unsigned HOST_WIDE_INT preferred_alignment;
@@ -13737,7 +13692,8 @@ ix86_expand_prologue (void)
13737
13692
m->fs.sp_offset = INCOMING_FRAME_SP_OFFSET;
13738
13693
m->fs.sp_valid = true;
13739
13694
13740
- ix86_compute_frame_layout (&frame);
13695
+ ix86_compute_frame_layout ();
13696
+ frame = m->frame;
13741
13697
13742
13698
if (!TARGET_64BIT && ix86_function_ms_hook_prologue (current_function_decl))
13743
13699
{
@@ -14405,7 +14361,8 @@ ix86_expand_epilogue (int style)
14405
14361
bool using_drap;
14406
14362
14407
14363
ix86_finalize_stack_realign_flags ();
14408
- ix86_compute_frame_layout (&frame);
14364
+ ix86_compute_frame_layout ();
14365
+ frame = m->frame;
14409
14366
14410
14367
m->fs.sp_valid = (!frame_pointer_needed
14411
14368
|| (crtl->sp_is_unchanging
@@ -14915,7 +14872,8 @@ ix86_expand_split_stack_prologue (void)
14915
14872
gcc_assert (flag_split_stack && reload_completed);
14916
14873
14917
14874
ix86_finalize_stack_realign_flags ();
14918
- ix86_compute_frame_layout (&frame);
14875
+ ix86_compute_frame_layout ();
14876
+ frame = cfun->machine->frame;
14919
14877
allocate = frame.stack_pointer_offset - INCOMING_FRAME_SP_OFFSET;
14920
14878
14921
14879
/* This is the label we will branch to if we have enough stack
0 commit comments