[Issue 1500] New: Template Arguments, Aliases, or Typedefs Generate Error when used inside inline ASM blocks
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Thu Sep 13 15:40:13 PDT 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1500
Summary: Template Arguments, Aliases, or Typedefs Generate Error
when used inside inline ASM blocks
Product: D
Version: 1.015
Platform: PC
OS/Version: Linux
Status: NEW
Keywords: rejects-valid, spec
Severity: major
Priority: P3
Component: DMD
AssignedTo: bugzilla at digitalmars.com
ReportedBy: johnkirollos at yahoo.com
Best to describe it using an example. Here is a copy of the post I've put in D
forum:
I made the following example to see how far can inline asm blocks use template
args: (Note: This bugzilla is about statement #1 only. For #4, I'll open
another one)
========================================
void asm_template(T)(T Tval,T* pDest)
{
asm{
fld Tval;
mov EAX,pDest;
fstp T ptr[EAX]; //#1
fstp float ptr[EAX]; //#2
mov EDX,T.sizeof; //#3
mov ECX,float.sizeof; //#4
}//asm
}//asm_template
void main()
{
float f1=4.0;
float f2=5.0;
asm_template!(float)(f1,&f2);
}
========================================
Here is the compilation result of the 4 statements marked above:
#1: ERROR: "cannot use type float as an operand"
#2: OK
#3: OK!!!
#4: ERROR: "ptr expected"
For me, if #1 would be illegal, then the error should not have mentioned "type
float". In other words, why would it fail if T is correctly interpreted to
float? In conclusion, it would make sense if such statement would be accepted,
thus enabling writing general ASM code.
--
More information about the Digitalmars-d-bugs
mailing list