https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119779
--- Comment #11 from Zbigniew <zbigniew2011 at gmail dot com> --- (* gm2 exampleadd2.mod -o exampleadd2 -masm=intel *) MODULE exampleadd2 ; FROM libc IMPORT printf, exit ; PROCEDURE Example (foo, bar: LONGCARD) : CARDINAL ; VAR myout: LONGCARD ; BEGIN ASM VOLATILE ( "mov rax, %[left]; add rax, %[right]; mov %[output], rax;" : [output] "=rm" (myout) (* outputs *) : [left] "rm" (foo), [right] "rm" (bar) (* inputs *) : "rax") ; (* we trash *) RETURN( myout ) END Example ; VAR a, b, c: CARDINAL ; BEGIN a := 1 ; b := 2 ; c := Example (a, b) ; IF c # 3 THEN printf ("Example procedure function failed to return 3, seen %d", c) ; exit (1) ELSE printf ("It's OK, procedure function returned 3, seen %d", c) ; exit (0) END END exampleadd2.