xiangzhangllvm added a comment.

!!! Hi, dear efriedma, very sorry! I just saw your reply.
line 2093: getTargetHooks().adjustInlineAsmType(... InputConstraint,...)  will 
just deal with the constrain string,  and it can't check the TiedOperand in the 
function.
So, this will make inconsistent adjust for the operand and its tied operand.
The error will not be found in the IR files, it will cause back end error. like:
"error in backend: Unsupported asm: input constraint with a matching output 
constraint of incompatible type!"

Please refer the adjustInlineAsmType() function, it will call the following 
function

  static llvm::Type* X86AdjustInlineAsmType(CodeGen::CodeGenFunction &CGF,
                                            StringRef Constraint,
                                            llvm::Type* Ty) {
    bool IsMMXCons = llvm::StringSwitch<bool>(Constraint)
                       .Cases("y", "&y", "^Ym", true)
                       .Default(false);
    if (IsMMXCons && Ty->isVectorTy()) {
      if (cast<llvm::VectorType>(Ty)->getBitWidth() != 64) {
        // Invalid MMX constraint
        return nullptr;
      }
      return llvm::Type::getX86_MMXTy(CGF.getLLVMContext());
    }
    // No operation needed
    return Ty;
  }




Repository:
  rC Clang

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D56990/new/

https://reviews.llvm.org/D56990



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to