On 7/10/13 5:51 AM, David Given wrote:
I think I have found a bug. This is in stock gcc 4.8.1...My backend does not use the 'enabled' attribute; therefore the following code in insn-attr.h kicks in: #ifndef HAVE_ATTR_enabled #define HAVE_ATTR_enabled 0 #endif Therefore the following code in gcc/lra-constraints.c is enabled: #ifdef HAVE_ATTR_enabled if (curr_id->alternative_enabled_p != NULL && ! curr_id->alternative_enabled_p[nalt]) continue; #endif ->alternative_enabled_p is bogus; therefore segfault. Elsewhere I see structures of the form: #if HAVE_ATTR_enabled ... #endif So I think that #ifdef above is a straight typo. Certainly, changing it to a #if makes the crash go away...
I faced exactly the same problem as yours. When I was trying to enable LRA on my target, I got segfault as well because I did not have 'enabled' attribute in my target.md file. I was told it was due to my faulty md design. The simplest workaround is to define 'enabled' attribute so I took it. But I suspected that may be a latent issue. It's so happy to see others have the same question and provide a solution. Certainly, whether your solution is correct should be reviewed by LRA maintainer, Vladmir Makarov, so I cc him in the list. Best regards, jasonwucj
