Commit 2e24efd3 by Alexander Monakov Committed by Alexander Monakov

i386.h (enum reg_class): Move CLOBBERED_REGS prior to Q_REGS.

	* config/i386/i386.h (enum reg_class): Move CLOBBERED_REGS prior to
	Q_REGS.  Expand comment.
	(REG_CLASS_NAMES): Ditto.
	(REG_CLASS_CONTENTS): Ditto.
testsuite:
	* gcc.target/i386/pr66232-1.c: Adjust scan pattern.
	* gcc.target/i386/pr66232-3.c: Likewise.

From-SVN: r223650
parent 979455ea
2015-05-25 Alexander Monakov <amonakov@ispras.ru>
* config/i386/i386.h (enum reg_class): Move CLOBBERED_REGS prior to
Q_REGS. Expand comment.
(REG_CLASS_NAMES): Ditto.
(REG_CLASS_CONTENTS): Ditto.
2015-05-25 Uros Bizjak <ubizjak@gmail.com> 2015-05-25 Uros Bizjak <ubizjak@gmail.com>
PR target/66274 PR target/66274
......
...@@ -1298,7 +1298,9 @@ extern const char *host_detect_local_cpu (int argc, const char **argv); ...@@ -1298,7 +1298,9 @@ extern const char *host_detect_local_cpu (int argc, const char **argv);
The classes must be numbered in nondecreasing order; that is, The classes must be numbered in nondecreasing order; that is,
a larger-numbered class must never be contained completely a larger-numbered class must never be contained completely
in a smaller-numbered class. in a smaller-numbered class. This is why CLOBBERED_REGS class
is listed early, even though in 64-bit mode it contains more
registers than just %eax, %ecx, %edx.
For any two classes, it is very desirable that there be another For any two classes, it is very desirable that there be another
class that represents their union. class that represents their union.
...@@ -1314,11 +1316,11 @@ enum reg_class ...@@ -1314,11 +1316,11 @@ enum reg_class
NO_REGS, NO_REGS,
AREG, DREG, CREG, BREG, SIREG, DIREG, AREG, DREG, CREG, BREG, SIREG, DIREG,
AD_REGS, /* %eax/%edx for DImode */ AD_REGS, /* %eax/%edx for DImode */
CLOBBERED_REGS, /* call-clobbered integer registers */
Q_REGS, /* %eax %ebx %ecx %edx */ Q_REGS, /* %eax %ebx %ecx %edx */
NON_Q_REGS, /* %esi %edi %ebp %esp */ NON_Q_REGS, /* %esi %edi %ebp %esp */
INDEX_REGS, /* %eax %ebx %ecx %edx %esi %edi %ebp */ INDEX_REGS, /* %eax %ebx %ecx %edx %esi %edi %ebp */
LEGACY_REGS, /* %eax %ebx %ecx %edx %esi %edi %ebp %esp */ LEGACY_REGS, /* %eax %ebx %ecx %edx %esi %edi %ebp %esp */
CLOBBERED_REGS, /* call-clobbered integer registers */
GENERAL_REGS, /* %eax %ebx %ecx %edx %esi %edi %ebp %esp GENERAL_REGS, /* %eax %ebx %ecx %edx %esi %edi %ebp %esp
%r8 %r9 %r10 %r11 %r12 %r13 %r14 %r15 */ %r8 %r9 %r10 %r11 %r12 %r13 %r14 %r15 */
FP_TOP_REG, FP_SECOND_REG, /* %st(0) %st(1) */ FP_TOP_REG, FP_SECOND_REG, /* %st(0) %st(1) */
...@@ -1375,10 +1377,10 @@ enum reg_class ...@@ -1375,10 +1377,10 @@ enum reg_class
"AREG", "DREG", "CREG", "BREG", \ "AREG", "DREG", "CREG", "BREG", \
"SIREG", "DIREG", \ "SIREG", "DIREG", \
"AD_REGS", \ "AD_REGS", \
"CLOBBERED_REGS", \
"Q_REGS", "NON_Q_REGS", \ "Q_REGS", "NON_Q_REGS", \
"INDEX_REGS", \ "INDEX_REGS", \
"LEGACY_REGS", \ "LEGACY_REGS", \
"CLOBBERED_REGS", \
"GENERAL_REGS", \ "GENERAL_REGS", \
"FP_TOP_REG", "FP_SECOND_REG", \ "FP_TOP_REG", "FP_SECOND_REG", \
"FLOAT_REGS", \ "FLOAT_REGS", \
...@@ -1414,11 +1416,11 @@ enum reg_class ...@@ -1414,11 +1416,11 @@ enum reg_class
{ 0x10, 0x0, 0x0 }, /* SIREG */ \ { 0x10, 0x0, 0x0 }, /* SIREG */ \
{ 0x20, 0x0, 0x0 }, /* DIREG */ \ { 0x20, 0x0, 0x0 }, /* DIREG */ \
{ 0x03, 0x0, 0x0 }, /* AD_REGS */ \ { 0x03, 0x0, 0x0 }, /* AD_REGS */ \
{ 0x07, 0x0, 0x0 }, /* CLOBBERED_REGS */ \
{ 0x0f, 0x0, 0x0 }, /* Q_REGS */ \ { 0x0f, 0x0, 0x0 }, /* Q_REGS */ \
{ 0x1100f0, 0x1fe0, 0x0 }, /* NON_Q_REGS */ \ { 0x1100f0, 0x1fe0, 0x0 }, /* NON_Q_REGS */ \
{ 0x7f, 0x1fe0, 0x0 }, /* INDEX_REGS */ \ { 0x7f, 0x1fe0, 0x0 }, /* INDEX_REGS */ \
{ 0x1100ff, 0x0, 0x0 }, /* LEGACY_REGS */ \ { 0x1100ff, 0x0, 0x0 }, /* LEGACY_REGS */ \
{ 0x07, 0x0, 0x0 }, /* CLOBBERED_REGS */ \
{ 0x1100ff, 0x1fe0, 0x0 }, /* GENERAL_REGS */ \ { 0x1100ff, 0x1fe0, 0x0 }, /* GENERAL_REGS */ \
{ 0x100, 0x0, 0x0 }, /* FP_TOP_REG */ \ { 0x100, 0x0, 0x0 }, /* FP_TOP_REG */ \
{ 0x0200, 0x0, 0x0 }, /* FP_SECOND_REG */ \ { 0x0200, 0x0, 0x0 }, /* FP_SECOND_REG */ \
......
2015-05-25 Alexander Monakov <amonakov@ispras.ru>
* gcc.target/i386/pr66232-1.c: Adjust scan pattern.
* gcc.target/i386/pr66232-3.c: Likewise.
2015-05-25 Uros Bizjak <ubizjak@gmail.com> 2015-05-25 Uros Bizjak <ubizjak@gmail.com>
PR target/66274 PR target/66274
......
...@@ -10,4 +10,4 @@ foo (void) ...@@ -10,4 +10,4 @@ foo (void)
} }
/* { dg-final { scan-assembler "jmp\[ \t\]*.bar@GOTPCREL" { target { ! ia32 } } } } */ /* { dg-final { scan-assembler "jmp\[ \t\]*.bar@GOTPCREL" { target { ! ia32 } } } } */
/* { dg-final { scan-assembler "call\[ \t\]*.bar@GOT\\(" { target ia32 } } } */ /* { dg-final { scan-assembler "jmp\[ \t\]*.bar@GOT\\(" { target ia32 } } } */
...@@ -10,4 +10,4 @@ foo (void) ...@@ -10,4 +10,4 @@ foo (void)
} }
/* { dg-final { scan-assembler "jmp\[ \t\]*.bar@GOTPCREL" { target { ! ia32 } } } } */ /* { dg-final { scan-assembler "jmp\[ \t\]*.bar@GOTPCREL" { target { ! ia32 } } } } */
/* { dg-final { scan-assembler "call\[ \t\]*.bar@GOT\\(" { target ia32 } } } */ /* { dg-final { scan-assembler "jmp\[ \t\]*.bar@GOT\\(" { target ia32 } } } */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment