On Fri, Jul 11, 2014 at 07:52:06PM +0100, Franzi Edo. wrote:
> Hi All,
> Thank you for your suggestions.
> Unfortunately, no way!
> 
> 4. I can generate my cross compiler based on the "gcc 4.8.3” without problem
> (using both the apple-gcc4.2 or the XCode llvm) So, what has changed of
> fundamental between the 4.8.3 and the 4.9 versions?
(Sorry for any duplicate mails, my mailer is having difficulty with
certain symbols in the body of the mail).

The fundamental change was a patch I put in to 4.9 in October of 2013 [1].

In this patch, we use a large define_attr to group together all of the Neon
types used for (set_attr "type") expressions in the ARM backend in the
"is_neon_type" attribute, which we use later to decide if an instruction is
predicable. We end up with a define_attr with around 290 elements for the
"yes" case.

As you can see in the preprocessed source on the LLVM bug [2], each element
in the define_attr is expanded as

  ((cached_type == TYPE_NEON_FOO) || ...   )

So after three elements we have 3 levels of nesting. After six, we have 6.
After around 290 we have 290 levels of bracket nesting, and Clang errors.

If there is a better way for me to write the "is_neon_type" attribute, I'll
happily spin a patch for it. Certainly, I don't like the size of that
generated "if" statement.

Alternatively, perhaps the code which generates the if statement could be
rewritten to build a switch rather than the large "||" expression. I don't
know anything about the gen* programs and how define_attr can be used in
the general case to say how feasible that change would be.

None of this solves your problem in the interim, for that I think your best
bet is to set -fbracket-depth=1024 in your BUILD_CFLAGS, as suggested by
Chris.

Thanks,
James

[1] 
https://gcc.gnu.org/viewcvs/gcc/branches/gcc-4_9-branch/gcc/config/arm/arm.md?r1=203059&r2=203613
[2] http://llvm.org/bugs/show_bug.cgi?id=19650

> 
> So, I am a bit without ideas
> Cheers,
>    Edo
> 
> 
> On 11 Jul 2014, at 00:29, Joel Sherrill <joel.sherr...@oarcorp.com> wrote:
> 
> > 
> > On 7/10/2014 5:14 PM, pins...@gmail.com wrote:
> >> 
> >>> On Jul 10, 2014, at 3:13 PM, Ian Lance Taylor <i...@google.com> wrote:
> >>> 
> >>>> On Thu, Jul 10, 2014 at 11:40 AM, Franzi Edo. <edo.fra...@ukos.ch> wrote:
> >>>> 
> >>>> As for the version 4.9.0, on OSX stil remain a problem.
> >>>> I cannot build an ARM a cross compiler!
> >>>> Here is the message (same as for the 4.9.0)
<snipped>
> >>> You did not include enough context to be sure, but I don't think that
> >>> error message is coming from GCC.  At least, I don't see that error
> >>> message in the GCC sources.
> >>> 
> >>> I think that error message is coming from the host compiler you are
> >>> using, in which case, based on the error message, the solution would
> >>> seem to be
<snipped>
> >> Also i thought we did not support cross building with anything besides 
> >> gcc. 
> > The RTEMS community sees this when using clang/llvm on FreeBSD.
> > 
> > Franzi.. did the suggestion from Chris Johns to increase the limit
> > to 1024, not work?
> > 
> > https://gcc.gnu.org/ml/gcc/2014-05/msg00018.html
> > 
> > This ended up being reported at http://llvm.org/bugs/show_bug.cgi?id=19650
> > 
> > --joel
> >> Thanks,
> >> Andrew
> >> 
> >>> Ian
> > 

Reply via email to