diff options
author | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2016-12-15 16:08:49 +0000 |
---|---|---|
committer | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2016-12-15 16:08:49 +0000 |
commit | 0ca19879778c7f958a6d0fd9f04d98f249187fca (patch) | |
tree | 93b7ea96f7b02a2d2b7a4f1c42051e564b683927 /llvm | |
parent | d7518896fff080d49d4c04e38af691b12be93e14 (diff) | |
download | bcm5719-llvm-0ca19879778c7f958a6d0fd9f04d98f249187fca.tar.gz bcm5719-llvm-0ca19879778c7f958a6d0fd9f04d98f249187fca.zip |
Fix ubsan failures in lane mask shifts
llvm-svn: 289826
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/utils/TableGen/RegisterInfoEmitter.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/llvm/utils/TableGen/RegisterInfoEmitter.cpp b/llvm/utils/TableGen/RegisterInfoEmitter.cpp index 73ac332261d..c82eddc6537 100644 --- a/llvm/utils/TableGen/RegisterInfoEmitter.cpp +++ b/llvm/utils/TableGen/RegisterInfoEmitter.cpp @@ -778,8 +778,10 @@ RegisterInfoEmitter::emitComposeSubRegIndexLaneMask(raw_ostream &OS, " LaneBitmask Result;\n" " for (const MaskRolOp *Ops = CompositeSequences[IdxA]; !Ops->Mask.none(); ++Ops) {\n" " LaneBitmask::Type M = LaneMask.getAsInteger() & Ops->Mask.getAsInteger();\n" - " unsigned S = Ops->RotateLeft;\n" - " Result |= LaneBitmask((M << S) | (M >> (LaneBitmask::BitWidth - S)));\n" + " if (unsigned S = Ops->RotateLeft)\n" + " Result |= LaneBitmask((M << S) | (M >> (LaneBitmask::BitWidth - S)));\n" + " else\n" + " Result |= LaneBitmask(M);\n" " }\n" " return Result;\n" "}\n\n"; @@ -793,8 +795,10 @@ RegisterInfoEmitter::emitComposeSubRegIndexLaneMask(raw_ostream &OS, " LaneBitmask Result;\n" " for (const MaskRolOp *Ops = CompositeSequences[IdxA]; !Ops->Mask.none(); ++Ops) {\n" " LaneBitmask::Type M = LaneMask.getAsInteger();\n" - " unsigned S = Ops->RotateLeft;\n" - " Result |= LaneBitmask((M >> S) | (M << (LaneBitmask::BitWidth - S)));\n" + " if (unsigned S = Ops->RotateLeft)\n" + " Result |= LaneBitmask((M >> S) | (M << (LaneBitmask::BitWidth - S)));\n" + " else\n" + " Result |= LaneBitmask(M);\n" " }\n" " return Result;\n" "}\n\n"; |