From: Stepan D. <stp...@na...> - 2013-06-27 10:34:52
|
Agh!! MY grammar: Subject: One more differencE in clang. Would you fix it in your reply please. Thanks. -Stepan. Stepan Dyatkovskiy wrote: > Hi guys. > > Today I went through whole AVR-Libc Inline Assembler Cookbook chapter. > I have checked all examples with two commands: > 1. clang -S -o - -emit-llvm example.c > 2. avr-clang -S -o - -emit-llvm example.c > > I've found two difference: > > 1. As I mentioned before difference for memory constraint. > For string "asm("instr %0": "=Q"(a):)" > > clang emits: > %0 = call i32 asm "instr $0", "=Q,~{dirflag},~{fpsr},~{flags}"() > > arm-linux-gnueabi emits: > call void asm "instr $0", "=*Q"(i32* @a) #1, !srcloc !0 > > avr-clang: > %0 = call i16 asm "instr $0", "=Q"() > > I'll try to use current syntax here. Though ARM syntax is working well > now, but I din't find explanation of =*Q sequence yet. > > 2. asm names. > > // example.c: > extern long Calc(void) asm ("CALCULATE"); > void f() { Calc(); } > > clang emits: > %call = call i64 @CALCULATE() > ... > declare i64 @CALCULATE() > > avr-clang emits: > %call = call i32 @"\01CALCULATE"() > ... > declare i32 @"\01CALCULATE"() > > Does somebody know what \01 is used for here? > > -Stepan > > ------------------------------------------------------------------------------ > This SF.net email is sponsored by Windows: > > Build for Windows Store. > > http://p.sf.net/sfu/windows-dev2dev > _______________________________________________ > avr-llvm-devel mailing list > avr...@li... > https://lists.sourceforge.net/lists/listinfo/avr-llvm-devel > |