This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [DRAGONEGG] Expose 4 functions in i386.c
In this unusual case, it may even be "better" to put the patch on the
release branch alone, and not on the trunk. That gives Duncan the
opportunity to fix this properly in DragonEgg for GCC 4.6, while
having a working interface in the released FSF GCC 4.5.1.
That sounds like a perfectly reasonable compromise.
Here's the patch rediffed against the gcc-4.5 branch. It passes bootstrap.
OK to apply to the 4.5 branch only?
Ciao,
Duncan.
Index: gcc-4_5-branch/gcc/ChangeLog
===================================================================
--- gcc-4_5-branch.orig/gcc/ChangeLog 2010-04-13 22:08:42.018841614 +0200
+++ gcc-4_5-branch/gcc/ChangeLog 2010-04-13 22:10:02.878840451 +0200
@@ -1,3 +1,10 @@
+2010-04-13 Duncan Sands <baldrick@free.fr>
+
+ * config/i386/i386.c (type_natural_mode): Make non-static. Declare.
+ (classify_argument): Likewise.
+ (examine_argument): Likewise.
+ (contains_aligned_value_p): Likewise.
+
2010-04-13 Michael Matz <matz@suse.de>
PR middle-end/43730
Index: gcc-4_5-branch/gcc/config/i386/i386.c
===================================================================
--- gcc-4_5-branch.orig/gcc/config/i386/i386.c 2010-04-13 22:08:50.188860326 +0200
+++ gcc-4_5-branch/gcc/config/i386/i386.c 2010-04-13 22:09:40.098844481 +0200
@@ -4992,7 +4992,8 @@
case, we return the original mode and warn ABI change if CUM isn't
NULL. */
-static enum machine_mode
+enum machine_mode type_natural_mode (const_tree, CUMULATIVE_ARGS *);
+enum machine_mode
type_natural_mode (const_tree type, CUMULATIVE_ARGS *cum)
{
enum machine_mode mode = TYPE_MODE (type);
@@ -5123,7 +5124,9 @@
See the x86-64 PS ABI for details.
*/
-static int
+int classify_argument (enum machine_mode, const_tree,
+ enum x86_64_reg_class [MAX_CLASSES], int);
+int
classify_argument (enum machine_mode mode, const_tree type,
enum x86_64_reg_class classes[MAX_CLASSES], int bit_offset)
{
@@ -5504,7 +5507,8 @@
/* Examine the argument and return set number of register required in each
class. Return 0 iff parameter should be passed in memory. */
-static int
+int examine_argument (enum machine_mode, const_tree, int, int *, int *);
+int
examine_argument (enum machine_mode mode, const_tree type, int in_return,
int *int_nregs, int *sse_nregs)
{
@@ -6186,7 +6190,8 @@
/* Return true when TYPE should be 128bit aligned for 32bit argument passing
ABI. */
-static bool
+bool contains_aligned_value_p (tree);
+bool
contains_aligned_value_p (tree type)
{
enum machine_mode mode = TYPE_MODE (type);