diff options
author | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-03-13 10:05:52 +0000 |
---|---|---|
committer | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-03-13 10:05:52 +0000 |
commit | f841d957fa13c022a4d429dbd1175eaf99e71f7e (patch) | |
tree | ace5efda332ae3167aaba2dba9f9dd0caaf93f67 /gcc/ira-conflicts.c | |
parent | b85138f664a42a39b0a062dc01d845e0f1c140e0 (diff) | |
download | gcc-f841d957fa13c022a4d429dbd1175eaf99e71f7e.tar.gz |
2009-03-13 Basile Starynkevitch <basile@starynkevitch.net>
MELT branch merged with trunk r144830
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/melt-branch@144832 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ira-conflicts.c')
-rw-r--r-- | gcc/ira-conflicts.c | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/gcc/ira-conflicts.c b/gcc/ira-conflicts.c index b5537bfe8df..05870ab4b16 100644 --- a/gcc/ira-conflicts.c +++ b/gcc/ira-conflicts.c @@ -800,29 +800,33 @@ ira_build_conflicts (void) } FOR_EACH_ALLOCNO (a, ai) { - if (ALLOCNO_CALLS_CROSSED_NUM (a) == 0) - continue; - if (! flag_caller_saves) + reg_attrs *attrs; + tree decl; + + if ((! flag_caller_saves && ALLOCNO_CALLS_CROSSED_NUM (a) != 0) + /* For debugging purposes don't put user defined variables in + callee-clobbered registers. */ + || (optimize <= 1 + && (attrs = REG_ATTRS (regno_reg_rtx [ALLOCNO_REGNO (a)])) != NULL + && (decl = attrs->decl) != NULL + && VAR_OR_FUNCTION_DECL_P (decl) + && ! DECL_ARTIFICIAL (decl))) { IOR_HARD_REG_SET (ALLOCNO_TOTAL_CONFLICT_HARD_REGS (a), call_used_reg_set); - if (ALLOCNO_CALLS_CROSSED_NUM (a) != 0) - IOR_HARD_REG_SET (ALLOCNO_CONFLICT_HARD_REGS (a), - call_used_reg_set); + IOR_HARD_REG_SET (ALLOCNO_CONFLICT_HARD_REGS (a), + call_used_reg_set); } - else + else if (ALLOCNO_CALLS_CROSSED_NUM (a) != 0) { IOR_HARD_REG_SET (ALLOCNO_TOTAL_CONFLICT_HARD_REGS (a), no_caller_save_reg_set); IOR_HARD_REG_SET (ALLOCNO_TOTAL_CONFLICT_HARD_REGS (a), temp_hard_reg_set); - if (ALLOCNO_CALLS_CROSSED_NUM (a) != 0) - { - IOR_HARD_REG_SET (ALLOCNO_CONFLICT_HARD_REGS (a), - no_caller_save_reg_set); - IOR_HARD_REG_SET (ALLOCNO_CONFLICT_HARD_REGS (a), - temp_hard_reg_set); - } + IOR_HARD_REG_SET (ALLOCNO_CONFLICT_HARD_REGS (a), + no_caller_save_reg_set); + IOR_HARD_REG_SET (ALLOCNO_CONFLICT_HARD_REGS (a), + temp_hard_reg_set); } } if (optimize && ira_conflicts_p |