PATCH: PR target/43921: Bootstrap comparison fails when using -march=atom

H.J. Lu hjl.tools@gmail.com
Wed Apr 28 19:29:00 GMT 2010


On Wed, Apr 28, 2010 at 11:46 AM, Jakub Jelinek <jakub@redhat.com> wrote:
> On Wed, Apr 28, 2010 at 11:23:09AM -0700, H.J. Lu wrote:
>
>> @@ -26765,7 +26765,7 @@ extended_reg_mentioned_1 (rtx *p, void *data ATTRIBUTE_UNUSED)
>>  bool
>>  x86_extended_reg_mentioned_p (rtx insn)
>>  {
>> -  return for_each_rtx (INSN_P (insn) ? &PATTERN (insn) : &insn,
>> +  return for_each_rtx (NONDEBUG_INSN_P (insn) ? &PATTERN (insn) : &insn,
>>                      extended_reg_mentioned_1, NULL);
>>  }
>
> This hunk is IMHO wrong, for NONDEBUG_INSN_P just PATTERN should be
> scanned and nothing else.  The rest looks good to me, though you need
> someone to approve it.
>
>        Jakub
>

I am testing this on Linux/x86.  OK for trunk and 4.5 if no regressions?

Thanks.


-- 
H.J.
-------------- next part --------------
2010-04-28  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/43921
	* config/i386/i386.c (get_some_local_dynamic_name): Replace
	INSN_P with NONDEBUG_INSN_P.
	(distance_non_agu_define): Likewise.
	(distance_agu_use): Likewise.

diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 56226c0..4861eaf 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -11383,7 +11383,7 @@ get_some_local_dynamic_name (void)
     return cfun->machine->some_ld_name;
 
   for (insn = get_insns (); insn ; insn = NEXT_INSN (insn))
-    if (INSN_P (insn)
+    if (NONDEBUG_INSN_P (insn)
 	&& for_each_rtx (&PATTERN (insn), get_some_local_dynamic_name_1, 0))
       return cfun->machine->some_ld_name;
 
@@ -13629,7 +13629,7 @@ distance_non_agu_define (unsigned int regno1, unsigned int regno2,
       rtx prev = PREV_INSN (insn);
       while (prev && distance < LEA_SEARCH_THRESHOLD)
 	{
-	  if (INSN_P (prev))
+	  if (NONDEBUG_INSN_P (prev))
 	    {
 	      distance++;
               for (def_rec = DF_INSN_DEFS (prev); *def_rec; def_rec++)
@@ -13669,7 +13669,7 @@ distance_non_agu_define (unsigned int regno1, unsigned int regno2,
 		 && prev != insn
 		 && distance < LEA_SEARCH_THRESHOLD)
 	    {
-	      if (INSN_P (prev))
+	      if (NONDEBUG_INSN_P (prev))
 		{
 		  distance++;
 		  for (def_rec = DF_INSN_DEFS (prev); *def_rec; def_rec++)
@@ -13715,7 +13715,7 @@ distance_agu_use (unsigned int regno0, rtx insn)
       rtx next = NEXT_INSN (insn);
       while (next && distance < LEA_SEARCH_THRESHOLD)
 	{
-	  if (INSN_P (next))
+	  if (NONDEBUG_INSN_P (next))
 	    {
 	      distance++;
 
@@ -13764,7 +13764,7 @@ distance_agu_use (unsigned int regno0, rtx insn)
 		 && next != insn
 		 && distance < LEA_SEARCH_THRESHOLD)
 	    {
-	      if (INSN_P (next))
+	      if (NONDEBUG_INSN_P (next))
 		{
 		  distance++;
 


More information about the Gcc-patches mailing list