ahatanak added a comment. This patch doesn't detect more complex conflicts (like the following code), but I think it's OK for now.
asm ("foo" : "=Q" (x) : : "%rax", "%rbx", "%rcx", "%rdx"); // Q: Any register accessible as rh: a, b, c, and d. > TargetInfo.h:593 > /// > /// For example, on x86 it will return "ax" when "eax" is passed in. > + StringRef getNormalizedGCCRegisterName(StringRef Name, It looks like this comment was wrong: it didn't return "ax" when "eax" was passed in Name. > TargetInfo.cpp:406 > StringRef > -TargetInfo::getNormalizedGCCRegisterName(StringRef Name) const { > +TargetInfo::getNormalizedGCCRegisterName(StringRef Name, > +bool ReturnCannonical) const { I think it's spelled "Canonical" rather than "Cannonical". The comment added here doesn't seem correct to me. ReturnCanonical is used to make this function return the "canonical" register instead of the register passed in Name (e.g., when ReturnCanonical=true and Name="rax", it returns "ax"). > Targets.cpp:2718 > + switch (Constraint[i]) { > + // Ignore these > + case '*': Can we skip the checks for all these non-alphabet characters and handle them in "default"? Would doing so be incorrect? > asm.c:34 > + int a,b,c; > + asm ("nop" : "=r" (no_clobber_conflict) : "r" (clobber_conflict) : > "%rcx"); // expected-error {{asm-specifier for input or output variable > conflicts with asm clobber list}} > + asm ("nop" : "=r" (clobber_conflict) : "r" (no_clobber_conflict) : > "%rcx"); // expected-error {{asm-specifier for input or output variable > conflicts with asm clobber list}} Do you think you can improve the error message using '^' so that it's clear which constraint has a conflict with the clobbers? I was thinking about something like this: error: inline-asm constraint "=r" conflicts with clobber list asm ("nop" : "=r" (no_clobber_conflict) : "r" (clobber_conflict) : "%rcx"); ^ https://reviews.llvm.org/D15075 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits