diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2019-01-18 21:04:59 +0000 |
---|---|---|
committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2019-01-18 21:04:59 +0000 |
commit | bd3a5b29cb809fc6117569a2801d41c1d12dfe9a (patch) | |
tree | 0ad4f702ea80b95d8101621334eb9f408acd1288 /llvm/lib/CodeGen/MachineVerifier.cpp | |
parent | d3f3e16293e59b54c835e20e32050b805b9ade65 (diff) | |
download | bcm5719-llvm-bd3a5b29cb809fc6117569a2801d41c1d12dfe9a.tar.gz bcm5719-llvm-bd3a5b29cb809fc6117569a2801d41c1d12dfe9a.zip |
GlobalISel: Verify G_BITCAST
llvm-svn: 351594
Diffstat (limited to 'llvm/lib/CodeGen/MachineVerifier.cpp')
-rw-r--r-- | llvm/lib/CodeGen/MachineVerifier.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/MachineVerifier.cpp b/llvm/lib/CodeGen/MachineVerifier.cpp index a36c13f537d..a19049c7cd3 100644 --- a/llvm/lib/CodeGen/MachineVerifier.cpp +++ b/llvm/lib/CodeGen/MachineVerifier.cpp @@ -1022,6 +1022,19 @@ void MachineVerifier::visitMachineInstrBefore(const MachineInstr *MI) { MI); break; } + case TargetOpcode::G_BITCAST: { + LLT DstTy = MRI->getType(MI->getOperand(0).getReg()); + LLT SrcTy = MRI->getType(MI->getOperand(1).getReg()); + if (!DstTy.isValid() || !SrcTy.isValid()) + break; + + if (SrcTy.isPointer() != DstTy.isPointer()) + report("bitcast cannot convert between pointers and other types", MI); + + if (SrcTy.getSizeInBits() != DstTy.getSizeInBits()) + report("bitcast sizes must match", MI); + break; + } case TargetOpcode::G_SEXT: case TargetOpcode::G_ZEXT: case TargetOpcode::G_ANYEXT: |