Hi,<div>  I'm almost there with my Yasm printer, however, I've stumbled upon this.  </div><div><br></div><div>Using this:</div><div><div><br></div><div><br></div><div>; ModuleID = 'data.u'</div><div><br></div>

<div>%window = type { %visobj, %vec2, %vec2, %vec2, %string, %color, i32, i32, %string, %string, %string, i1, i1, i1, i1, i1, i1, i32, i8* }</div><div>%visobj = type { %object, i1, i1, i1, i1, %color, %vec4, %vec4, %vec4, %vec4, i32, %mat4, %mat4, %mat4, %mat4, %material*, %effect*, i32, i32, i32, float, i8, %visobj*, %vec3, %vec3, %vec3, %vec3, %vec3, %vec3, %quat, float, float, float, float, float, float, %map, i8* }</div>

<div>%object = type { i8, i8, i8, i8, i8, i8, i8, i8, %string, %string, i8* }</div><div>%string = type { i8* }</div><div>%color = type { i8, i8, i8, i8 }</div><div>%vec4 = type { float, float, float, float }</div><div>%mat4 = type { float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, i8 }</div>

<div>%material = type { %object, %color, %color, %color, %color, float, float, %texture, %texture, %texture, %texture, %effect*, i32, i32, i1, i32, i32, i1, i1, i8* }</div><div>%texture = type { %object, float, float, %vec3, %vec3, %vec3, i1, i1, i1, i1, i1, i1, i8* }</div>

<div>%vec3 = type { float, float, float }</div><div>%effect = type { %object, i1, i1, i32, i32, i32, i32, i8* }</div><div>%quat = type { float, float, float, float }</div><div>%map = type { i8*, i32, i8* }</div><div>%vec2 = type { float, float }</div>

<div>%program = type { %object, %string, %string, %list, i8*, i32 }</div><div>%list = type { i8, i8, i8, i8 }</div><div><br></div><div>@G__window__PZ6window = external global %window</div><div>@G__program__PZ7program = external global %program</div>

<div>@"data.u\00" = internal constant [7 x i8] c"data.u\00"</div><div>@g_touch_window_y = global i32 0</div><div>@_language_text = global %string zeroinitializer</div><div>@"Hello\00" = internal constant [6 x i8] c"Hello\00"</div>

<div>@is_foreign_lang = global i1 false</div><div>@"english\00" = internal constant [8 x i8] c"english\00"</div><div>@"cstr\00" = internal constant [5 x i8] c"cstr\00"</div><div><br>

</div><div>declare %string* @to__PZ6string__PKc(i8*) nounwind</div><div><br></div><div>declare void @AddPointer__v__iPKci(i32, i8*, i32) nounwind</div><div><br></div><div>declare void @dL__v__PZ6string(%string*) nounwind</div>

<div><br></div><div>declare zeroext i1 @ne__b__PZ6stringPZ6string(%string*, %string*) nounwind</div><div><br></div><div>declare void @aS__v__PZ6stringPKc(%string*, i8*) nounwind</div><div><br></div><div>declare void @C1__v__PZ6string(%string*) nounwind</div>

<div><br></div><div>define i32 @main__i__v() nounwind {</div><div>locals:</div><div>  store i8* getelementptr inbounds ([7 x i8]* @"data.u\00", i32 0, i32 0), i8** getelementptr inbounds (%program* @G__program__PZ7program, i32 0, i32 4)</div>

<div>  %0 = load float* getelementptr inbounds (%window* @G__window__PZ6window, i32 0, i32 1, i32 1)</div><div>  %1 = fptosi float %0 to i64</div><div>  %2 = trunc i64 %1 to i32</div><div>  store i32 %2, i32* @g_touch_window_y</div>

<div>  store i32 2, i32* getelementptr inbounds (%program* @G__program__PZ7program, i32 0, i32 5)</div><div>  tail call void @C1__v__PZ6string(%string* @_language_text) nounwind</div><div>  tail call void @aS__v__PZ6stringPKc(%string* @_language_text, i8* getelementptr inbounds ([6 x i8]* @"Hello\00", i32 0, i32 0)) nounwind</div>

<div>  store i32 3, i32* getelementptr inbounds (%program* @G__program__PZ7program, i32 0, i32 5)</div><div>  %3 = tail call %string* @to__PZ6string__PKc(i8* getelementptr inbounds ([8 x i8]* @"english\00", i32 0, i32 0))</div>

<div>  %4 = tail call i1 @ne__b__PZ6stringPZ6string(%string* @_language_text, %string* %3) nounwind</div><div>  store i1 %4, i1* @is_foreign_lang</div><div>  tail call void @dL__v__PZ6string(%string* %3) nounwind</div><div>

  ret i32 0</div><div>}</div><div><br></div><div>define void @typesInit__v__v() nounwind {</div><div>entry:</div><div>  tail call void @AddPointer__v__iPKci(i32 1927, i8* getelementptr inbounds ([5 x i8]* @"cstr\00", i32 0, i32 0), i32 -59) nounwind</div>

<div>  ret void</div><div>}</div></div><div><br></div><div><br></div><div><br></div><div>The intel asm printer in 2.9 would emit:</div><div><br></div><div><div><span style="white-space:pre-wrap">       </span>mov<span style="white-space:pre-wrap">     </span>BYTE PTR [RIP + _is_foreign_lang], AL</div>

<div><br></div></div><div>for the </div><div>  store i1 %4, i1* @is_foreign_lang
</div><div><br></div><div>yet, 3.0 emits:</div><div>   mov<span style="white-space:pre-wrap"> </span>_is_foreign_lang, AL</div><div><br></div><div>Now, I've tried diffing 2.9 and 3.0, there is a lot of changes, could someone give me a hint as to where to look? <br>
Thanks in advance<br><br>Matthew.</div><div><br></div>