diff mbox

[v2] trousers: Pass "-mno-compact-casesi" when building for ARCv1

Message ID 1479811345-23400-1-git-send-email-vzakhar@synopsys.com
State Accepted
Headers show

Commit Message

Zakharov Vlad Nov. 22, 2016, 10:42 a.m. UTC
Compact casesi patterns don't have a reload version. This causes build
failures of "trousers" package for ARC.

Current patch disables compact casesi patterns for ARCv1 (750D and 770D)
via passing "-mno-compact-casesi" option when compiling "trousers".

This change is a temporary workaround and the feature is going to be
fixed in the next ARC toolchain release version.

Fixes:
http://autobuild.buildroot.org/results/d2c/d2c16d8ba022b070c4dbeba5e7ea41f14d706691//

Signed-off-by: Vlad Zakharov <vzakhar@synopsys.com>
---
Changes v1..v2:
- Replaced CFLAGS="$(CFLAGS) ..." with CFLAGS="$(TARGET_CFLAGS) ..."
- Added a link to autobuilder failure 

 package/trousers/trousers.mk | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Thomas Petazzoni Nov. 23, 2016, 10:31 p.m. UTC | #1
Hello,

On Tue, 22 Nov 2016 13:42:25 +0300, Vlad Zakharov wrote:
> Compact casesi patterns don't have a reload version. This causes build
> failures of "trousers" package for ARC.
> 
> Current patch disables compact casesi patterns for ARCv1 (750D and 770D)
> via passing "-mno-compact-casesi" option when compiling "trousers".
> 
> This change is a temporary workaround and the feature is going to be
> fixed in the next ARC toolchain release version.
> 
> Fixes:
> http://autobuild.buildroot.org/results/d2c/d2c16d8ba022b070c4dbeba5e7ea41f14d706691//
> 
> Signed-off-by: Vlad Zakharov <vzakhar@synopsys.com>
> ---
> Changes v1..v2:
> - Replaced CFLAGS="$(CFLAGS) ..." with CFLAGS="$(TARGET_CFLAGS) ..."
> - Added a link to autobuilder failure 

Applied to master, thanks.

Thomas
Thomas Petazzoni Nov. 25, 2016, 9:13 p.m. UTC | #2
Hello,

On Tue, 22 Nov 2016 13:42:25 +0300, Vlad Zakharov wrote:
> Compact casesi patterns don't have a reload version. This causes build
> failures of "trousers" package for ARC.
> 
> Current patch disables compact casesi patterns for ARCv1 (750D and 770D)
> via passing "-mno-compact-casesi" option when compiling "trousers".
> 
> This change is a temporary workaround and the feature is going to be
> fixed in the next ARC toolchain release version.
> 
> Fixes:
> http://autobuild.buildroot.org/results/d2c/d2c16d8ba022b070c4dbeba5e7ea41f14d706691//
> 
> Signed-off-by: Vlad Zakharov <vzakhar@synopsys.com>

We still have a build failure of the trousers package on ARC, see:

  http://autobuild.buildroot.net/results/1e7/1e730465c79f50143b0ca2366a3c07ea5e8648b1/build-end.log

The failure is:

(jump_insn 34 262 35 5 (parallel [
            (set (pc)
                (unspec:SI [
                        (reg:SI 14 r14 [165])
                    ] UNSPEC_ARC_CASESI))
            (use (label_ref 35))
            (clobber (scratch:SI))
        ]) tspi_context.c:145 130 {casesi_compact_jump}
     (expr_list:REG_DEAD (reg:SI 14 r14 [165])
        (nil))
 -> 35)
tspi_context.c:325:1: internal compiler error: in find_reloads, at reload.c:3830
Please submit a full bug report,
with preprocessed source if appropriate.

Best regards,

Thomas
Zakharov Vlad Nov. 28, 2016, 10:03 a.m. UTC | #3
Hi Thomas,

On Fri, 2016-11-25 at 22:13 +0100, Thomas Petazzoni wrote:
> Hello,

> 

> On Tue, 22 Nov 2016 13:42:25 +0300, Vlad Zakharov wrote:

> > 

> > Compact casesi patterns don't have a reload version. This causes build

> > failures of "trousers" package for ARC.

> > 

> > Current patch disables compact casesi patterns for ARCv1 (750D and 770D)

> > via passing "-mno-compact-casesi" option when compiling "trousers".

> > 

> > This change is a temporary workaround and the feature is going to be

> > fixed in the next ARC toolchain release version.

> > 

> > Fixes:

> > http://autobuild.buildroot.org/results/d2c/d2c16d8ba022b070c4dbeba5e7ea41f14d706691//

> > 

> > Signed-off-by: Vlad Zakharov <vzakhar@synopsys.com>

> 

> We still have a build failure of the trousers package on ARC, see:

> 

>   http://autobuild.buildroot.net/results/1e7/1e730465c79f50143b0ca2366a3c07ea5e8648b1/build-end.log

> 

> The failure is:

> 

> (jump_insn 34 262 35 5 (parallel [

>             (set (pc)

>                 (unspec:SI [

>                         (reg:SI 14 r14 [165])

>                     ] UNSPEC_ARC_CASESI))

>             (use (label_ref 35))

>             (clobber (scratch:SI))

>         ]) tspi_context.c:145 130 {casesi_compact_jump}

>      (expr_list:REG_DEAD (reg:SI 14 r14 [165])

>         (nil))

>  -> 35)

> tspi_context.c:325:1: internal compiler error: in find_reloads, at reload.c:3830

> Please submit a full bug report,

> with preprocessed source if appropriate.

> 

> Best regards,

> 

> Thomas


Thank you for sending us this observation.
I mentioned this SNAFU too and have already investigated the situation a bit.

This happens because either "-Os" overrides "-mno-compact-casesi" option or the latter option doesn't work at all. 
In any case we are working at the issue and will soon either provide some fix or send another workaround for "trousers"
package. 

Thanks.

-- 
Best regards,
Vlad Zakharov <vzakhar@synopsys.com>
diff mbox

Patch

diff --git a/package/trousers/trousers.mk b/package/trousers/trousers.mk
index 3d9e0ba..4fc9499 100644
--- a/package/trousers/trousers.mk
+++ b/package/trousers/trousers.mk
@@ -18,6 +18,10 @@  ifeq ($(BR2_PACKAGE_LIBICONV),y)
 TROUSERS_DEPENDENCIES += libiconv
 endif
 
+ifeq ($(BR2_arc770d)$(BR2_arc750d),y)
+TROUSERS_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -mno-compact-casesi"
+endif
+
 # The TrouSerS build system attempts to create the tss user and group
 # on the host system. Disable the user checking feature as a
 # workaround.