Alexander Kabaev wrote:
On Sun, 13 May 2007 10:53:44 +0200
Andreas Schwab <[EMAIL PROTECTED]> wrote:

Alexander Kabaev <[EMAIL PROTECTED]> writes:

The instruction below appears to be the problematic one, but I
cannot tell why:

[MMI]  st8 [r16]=r17
This insn looks completely benign, I'd rather it's the next insn that
is the problem:

        chk.a.clr r14, .L1063

This is a speculation check (see
<http://download.intel.com/design/Itanium/manuals/24531905.pdf> for
the Itanium Instruction Set Descriptions).  The insn checks the
result of a preceding advanced load and branches to the label if the
check failed. The branching behaviour of the insn may be
unimplemented, and would have to be emulated in the kernel, but
apparently FreeBSD doesn't support it.

As a workaround you can supply '-mno-sched-ar-in-data-spec' switch to the compiler which will turn of data speculations that require chk.a instructions to check them.

Am I right that you are using Itanium1 machine for compilation? I understand that Itanium2 should not have this issue as it supports chk.[as] instructions in hardware.

Considering the long term solution I will post a patch that will turn off speculations requiring chk.[as] instruction for Itanium1.

Can you please file a PR in the bugzilla if you haven't done so yet?


Thanks,

Maxim

Reply via email to