This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/16194] [3.4/3.5 Regression] In case of H8/300 target, internal compiler error (ICE): asm clobber conflict with output operand
- From: "prafullat at kpitcummins dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 1 Jul 2004 05:25:50 -0000
- Subject: [Bug target/16194] [3.4/3.5 Regression] In case of H8/300 target, internal compiler error (ICE): asm clobber conflict with output operand
- References: <20040625091107.16194.prafullat@kpitcummins.com>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From prafullat at kpitcummins dot com 2004-07-01 05:25 -------
Following code was causing ICE for H8 target. Same is confirmed for SH target.
Logically, it seems that compiler will give ICE for any asm instruction with
following format and if you are pointing to memory addressed by the input or
output operands that conflict with clobber list.
General Instruction format:
asm ("INSN" : O/P Operand : I/P operand : Clobber List);
for H8 target:
///////////////////////////////////////////////////////////////////////////
void bug(void)
{
register char* _dst __asm ("r6");
__asm__ ("eepmov.b":"=g"(*_dst)::"r4","er5","er6"); //for H8 target
}
///////////////////////////////////////////////////////////////////////////
For SH target
///////////////////////////////////////////////////////////////////////////
void bug(void)
{
register char* _dst __asm ("r1");
register char* _dst1 __asm ("r0");
__asm__ ("mov.b %0,%1":"=g"(*_dst):"g"(*_dst1):"r0","r1");
}
///////////////////////////////////////////////////////////////////////////
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16194