summaryrefslogtreecommitdiffstats
path: root/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99348.patch
blob: f99938a7f1ca53d3bc40d3fa4565998ec9bb019a (plain)
1
2
3
4
5
6
7
8
9
10
11
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
	2010-02-23  Julian Brown  <julian@codesourcery.com>

	gcc/
	* calls.c (precompute_register_parameters): Avoid generating a
	register move if optimizing for size.

2010-07-26  Julian Brown  <julian@codesourcery.com>

	Merge from Sourcery G++ 4.4:

 	2010-02-15  Julian Brown  <julian@codesourcery.com>
 
 	Issue #7486

=== modified file 'gcc/calls.c'
--- old/gcc/calls.c	2010-04-02 18:54:46 +0000
+++ new/gcc/calls.c	2010-08-13 10:50:45 +0000
@@ -703,7 +703,9 @@
 
 	   For small register classes, also do this if this call uses
 	   register parameters.  This is to avoid reload conflicts while
-	   loading the parameters registers.  */
+	   loading the parameters registers.
+	   
+	   Avoid creating the extra move if optimizing for size.  */
 
 	else if ((! (REG_P (args[i].value)
 		     || (GET_CODE (args[i].value) == SUBREG
@@ -711,6 +713,7 @@
 		 && args[i].mode != BLKmode
 		 && rtx_cost (args[i].value, SET, optimize_insn_for_speed_p ())
 		    > COSTS_N_INSNS (1)
+		 && !optimize_size
 		 && ((SMALL_REGISTER_CLASSES && *reg_parm_seen)
 		     || optimize))
 	  args[i].value = copy_to_mode_reg (args[i].mode, args[i].value);