Project

General

Profile

Bug #12120

[target/sh4] error: 'asm' operand requires impossible reload

Added by glaubitz (John Paul Adrian Glaubitz) over 3 years ago. Updated about 1 month ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-core:74024]

Description

Hello!

ruby2.3 fails to build from source on sh4 (Hitachi/Renesas SuperH), the build fails with 1:

gcc -mieee -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -fPIC  -D_FORTIFY_SOURCE=2 -fstack-protector -fno-strict-overflow -fvisibility=hidden -DRUBY_EXPORT -Wdate-time -D_FORTIFY_SOURCE=2   -I. -I.ext/include/sh4-linux-gnu -I./include -I. -o vm.o -c vm.c
In file included from probes.h:10:0,
                 from vm.c:23:
vm_exec.c: In function 'vm_exec_core':
probes.h:21:1: error: 'asm' operand requires impossible reload
 DTRACE_PROBE4 (ruby, method__entry, arg1, arg2, arg3, arg4)
 ^

This appears to be a regression in ruby from version 2.2 to 2.3 since ruby2.2 builds fine on the exact same machine 2. Let me know if you need any more input. The logs can be directly viewed in 1 and 2 and you can set up your own sh4 chroot with the documentation in 3.

Thanks,
Adrian

History

Updated by nobu (Nobuyoshi Nakada) over 3 years ago

  • Description updated (diff)
  • Status changed from Open to Feedback

What constraints does DTRACE_PROBE4 macro have?

Updated by glaubitz (John Paul Adrian Glaubitz) over 3 years ago

Hi Nobuyosh!

Nobuyoshi Nakada wrote:

What constraints does DTRACE_PROBE4 macro have?

Sorry for the late reply, I apparently didn't get a notification.

I'm not sure where to retrieve that information. Can you point me to where that macro is defined?

Thanks,
Adrian

Updated by glaubitz (John Paul Adrian Glaubitz) over 3 years ago

Hi!

Just a quick update: I have started a discussion in the gcc bug tracker [1] since I am not so sure whether this is actually a bug in ruby or in gcc. One of the gcc developers, Oleg Endo, has suggested adding "-mlra" to gcc to use the local register allocator and it turns out that vm.c will then build without any issue.

However, adding -mlra as a global gcc option for the whole ruby tree will trigger a different compiler problem. So, unless there is a simple way to pass -mlra to gcc for just vm.c, I haven't found a solution yet.

I'll wait for more feedback from the gcc developers though as I have provided them with the preprocessed source for vm.c. Maybe they'll figure out this is something to be fixed in gcc.

Thanks,
Adrian

[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70416

#4

Updated by jeremyevans0 (Jeremy Evans) about 1 month ago

  • Status changed from Feedback to Closed

Also available in: Atom PDF