diff options
Diffstat (limited to 'llvm/utils/TableGen/IntrinsicEmitter.cpp')
| -rw-r--r-- | llvm/utils/TableGen/IntrinsicEmitter.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/llvm/utils/TableGen/IntrinsicEmitter.cpp b/llvm/utils/TableGen/IntrinsicEmitter.cpp index 06e44e3b57c..049282e5ebf 100644 --- a/llvm/utils/TableGen/IntrinsicEmitter.cpp +++ b/llvm/utils/TableGen/IntrinsicEmitter.cpp @@ -489,6 +489,9 @@ struct AttributeComparator { if (L->isNoReturn != R->isNoReturn) return R->isNoReturn; + if (L->isCold != R->isCold) + return R->isCold; + if (L->isConvergent != R->isConvergent) return R->isConvergent; @@ -622,7 +625,7 @@ void IntrinsicEmitter::EmitAttributes(const CodeGenIntrinsicTable &Ints, if (!intrinsic.canThrow || intrinsic.ModRef != CodeGenIntrinsic::ReadWriteMem || - intrinsic.isNoReturn || intrinsic.isNoDuplicate || + intrinsic.isNoReturn || intrinsic.isCold || intrinsic.isNoDuplicate || intrinsic.isConvergent || intrinsic.isSpeculatable) { OS << " const Attribute::AttrKind Atts[] = {"; bool addComma = false; @@ -636,6 +639,12 @@ void IntrinsicEmitter::EmitAttributes(const CodeGenIntrinsicTable &Ints, OS << "Attribute::NoReturn"; addComma = true; } + if (intrinsic.isCold) { + if (addComma) + OS << ","; + OS << "Attribute::Cold"; + addComma = true; + } if (intrinsic.isNoDuplicate) { if (addComma) OS << ","; |

