diff options
author | Owen Anderson <resistor@mac.com> | 2015-05-26 23:48:40 +0000 |
---|---|---|
committer | Owen Anderson <resistor@mac.com> | 2015-05-26 23:48:40 +0000 |
commit | 85fa7d5037fed8191ef67c2b4d954218b942a7d1 (patch) | |
tree | 7e3c7d6e771cbbe3926c0411cd3d1ee678a493b6 /llvm/utils/TableGen/IntrinsicEmitter.cpp | |
parent | 3abb86da627a01b1e2091c08a9117dc273f9473f (diff) | |
download | bcm5719-llvm-85fa7d5037fed8191ef67c2b4d954218b942a7d1.tar.gz bcm5719-llvm-85fa7d5037fed8191ef67c2b4d954218b942a7d1.zip |
Add initial support for the convergent attribute.
llvm-svn: 238264
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 1a2555ebbf6..3f62f205fe5 100644 --- a/llvm/utils/TableGen/IntrinsicEmitter.cpp +++ b/llvm/utils/TableGen/IntrinsicEmitter.cpp @@ -537,6 +537,9 @@ struct AttributeComparator { if (L->isNoReturn != R->isNoReturn) return R->isNoReturn; + if (L->isConvergent != R->isConvergent) + return R->isConvergent; + // Try to order by readonly/readnone attribute. ModRefKind LK = getModRefKind(*L); ModRefKind RK = getModRefKind(*R); @@ -649,7 +652,7 @@ EmitAttributes(const std::vector<CodeGenIntrinsic> &Ints, raw_ostream &OS) { ModRefKind modRef = getModRefKind(intrinsic); if (!intrinsic.canThrow || modRef || intrinsic.isNoReturn || - intrinsic.isNoDuplicate) { + intrinsic.isNoDuplicate || intrinsic.isConvergent) { OS << " const Attribute::AttrKind Atts[] = {"; bool addComma = false; if (!intrinsic.canThrow) { @@ -668,6 +671,12 @@ EmitAttributes(const std::vector<CodeGenIntrinsic> &Ints, raw_ostream &OS) { OS << "Attribute::NoDuplicate"; addComma = true; } + if (intrinsic.isConvergent) { + if (addComma) + OS << ","; + OS << "Attribute::Convergent"; + addComma = true; + } switch (modRef) { case MRK_none: break; |