skan marked 3 inline comments as done. skan added inline comments.
================ Comment at: llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp:1759 // It is widely common for MS InlineAsm to use a global variable and one/two // registers in a mmory expression, and though unaccessible via rip/eip. if (IsGlobalLV && (BaseReg || IndexReg)) { ---------------- xiangzhangllvm wrote: > skan wrote: > > xiangzhangllvm wrote: > > > Let me generally tell out my understand here, (If wrong PLS correct me) > > > Here from the comments we can see, the old code want to keep the origin > > > symbol of global variable to let linker (relocation) handle it. Here you > > > describe it with a pointer (with decl), it change to form of $ID <--> > > > (decl), So which need constrain it with "*m". But if the pointer can not > > > be access from BaseReg(Rip) + Index(Ip) how do you descript the pointer > > > you generate out ? > > > > > I think you may misunderstand this code. > > > > This code handles the memory that can not be represented by Disp(RIP) b/c > > there is already a BaseReg or IndexReg there. > > > > Before this patch, the memory is represented like `arr[edx*4]` and there is > > no identifer bound to it. And after this patch, we bind the memory to > > identifer arr. > Yes, that is why I mean t change ( arr[edx*4] ) to form of $ID <--> (decl). > So what the problem if we let the old form ( arr[edx*4] ) being ? Then the definition of arr would be deleted by C Front end, and result in "undefined reference to xxx" issue during link stage. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D113096/new/ https://reviews.llvm.org/D113096 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits