bespillslots.h 1.58 KB
Newer Older
Matthias Braun's avatar
Matthias Braun committed
1
2
3
4
5
6
7
8
9
10
11
/*
 * Author:      Matthias Braun
 * Date:		27.7.2006
 * Copyright:   (c) Universitaet Karlsruhe
 * Licence:     This file protected by GPL -  GNU GENERAL PUBLIC LICENSE.
 */
#ifndef BESPILLSLOTS_H_
#define BESPILLSLOTS_H_

#include "bechordal.h"

12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
typedef struct _be_fec_env_t be_fec_env_t;

/**
 * Initializes a new frame entity coalescer environment
 */
be_fec_env_t *be_new_frame_entity_coalescer(be_irg_t *birg);

/**
 * Frees a frame entity coalescer environment
 */
void be_free_frame_entity_coalescer(be_fec_env_t *env);

/**
 * Adds a node that needs a frame entity and consumes memory (Reload nodes). The
 * memory edges are followed to find memory-phis and the entities that produce
 * the memory values.
 *
 * @param env   The frame entity coalescer environment
 * @param node  The node that uses the frame entity
 * @param mode  The mode of the needed spillslot
 * @param align The alignment of the needed spillslot
 */
void be_node_needs_frame_entity(be_fec_env_t *env, ir_node *node,
                                const ir_mode *mode, int alignment);

/**
 * Assigned frame entities to all the nodes added by be_node_needs_frame_entity.
 * Adds memory perms where needed.
 */
void be_assign_entities(be_fec_env_t *env);

//-------------------------------------------------------------------
// Old API
//-------------------------------------------------------------------

Matthias Braun's avatar
Matthias Braun committed
47
/**
48
49
50
 * Assigns frame entities to all spill nodes in the irg.
 * Coalesces spillslots and minimizes the number of memcopies induced by
 * memory-phis.
Matthias Braun's avatar
Matthias Braun committed
51
 */
52
void be_coalesce_spillslots(const be_chordal_env_t *chordal_env);
Matthias Braun's avatar
Matthias Braun committed
53
54

#endif