This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/16194] [3.4/3.5 Regression] In case of H8/300 target, internal compiler error (ICE): asm clobber conflict with output operand


------- 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]