gcc 4.9.0 do not build on OSX
Jesper Broge Jørgensen
jesperbroge@gmail.com
Thu Jan 7 23:21:00 GMT 2016
Since this is still a problem with new versions of GCC would it be
welcomed if i tried making a solution that generated a switch statement
where ever a big list of || expressions would be generated?
I have a solution now that does generate a working switch but the
formatting of completely off especially where nested expressions are made.
On 05/05/14 16:12, Jakub Jelinek wrote:
> On Mon, May 05, 2014 at 11:45:46PM +1000, Chris Johns wrote:
>> On 4/05/2014 12:34 pm, Andrew Pinski wrote:
>>> On Sat, May 3, 2014 at 5:48 PM, Chris Johns <chrisj@rtems.org> wrote:
>>>> On 3/05/2014 10:57 pm, Franzi Edo. wrote:
>>>>> Hi,
>>>>> I am trying to build a gcc-4.9.0 ARM cross compiler on OSX Mavericks
>>>>> unsuccessfully.
>>>>> My toolchain works fine with the previous version 4.8.2 but on the 4.9.0 I
>>>>> have this error during the gcc building pass 1.
>>>>>
>>>>> /opt/uKOS/Packages/gcc-4.9.0/gcc/config/arm/neon.md:3486:10917: fatal
>>>>> error:
>>>>> bracket nesting level exceeded maximum of 256
>>>>> /opt/uKOS/Packages/gcc-4.9.0/gcc/config/arm/neon.md:3486:10917: note: use
>>>>> -fbracket-depth=N to increase maximum nesting level
>>>>> 32 warnings and 1 error generated.
>>>>> make[1]: *** [insn-attrtab.o] Error 1
>>>>> make: *** [all-gcc] Error 2
>>>>> Error building gcc pass 1
>>> There is some large conditionals inside insn-attrtab.c but I don't see
>>> any which have more than 30 depth of parenthesis. The max level of {}
>>> is 4 in that file too.
>> I have generated a preprocessed source file as asked by clang and it
>> is attached to the PR I raised there. The file shows 288 brackets
>> at line 51623 in the file.
>>
>>> So this sounds like a bug in clang. Please report it to them.
>> The PR is http://llvm.org/bugs/show_bug.cgi?id=19650.
> Looking at that line, guess it would be better if the generator (is that
> genattrtab?) generated a switch rather than
> if ((x == 1) || ((x == 2) || ((x == 3) || ((x == 4) || ((x == 5)...)))))
> (at least I believe GCC doesn't yet transform a series of if conditions into
> a switch (it optimizes the other direction)).
> And, even if it doesn't generate a switch for say some attribute compared to
> more than 10 values, there is no point in adding the extra ()s when
> the operator || and operator || used in the rhs of it are the same.
>
> Jakub
More information about the Gcc
mailing list