mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-27 14:34:58 +00:00
[TABLEGEN] Do not crash on intrinsics with names longer than 40 characters
Differential Revision: http://reviews.llvm.org/D4537 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@213253 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
6c701b9aca
commit
df50f4150b
32
test/TableGen/intrinsic-long-name.td
Normal file
32
test/TableGen/intrinsic-long-name.td
Normal file
@ -0,0 +1,32 @@
|
||||
// RUN: llvm-tblgen -gen-intrinsic %s | FileCheck %s
|
||||
// XFAIL: vg_leak
|
||||
|
||||
class IntrinsicProperty;
|
||||
|
||||
class ValueType<int size, int value> {
|
||||
string Namespace = "MVT";
|
||||
int Size = size;
|
||||
int Value = value;
|
||||
}
|
||||
|
||||
class LLVMType<ValueType vt> {
|
||||
ValueType VT = vt;
|
||||
}
|
||||
|
||||
class Intrinsic<string name, list<LLVMType> param_types = []> {
|
||||
string LLVMName = name;
|
||||
bit isTarget = 0;
|
||||
string TargetPrefix = "";
|
||||
list<LLVMType> RetTypes = [];
|
||||
list<LLVMType> ParamTypes = param_types;
|
||||
list<IntrinsicProperty> Properties = [];
|
||||
}
|
||||
|
||||
def iAny : ValueType<0, 254>;
|
||||
def llvm_anyint_ty : LLVMType<iAny>;
|
||||
|
||||
// Make sure we generate the long name without crashing
|
||||
// CHECK: this_is_a_really_long_intrinsic_name_but_we_should_still_not_crash // llvm.this.is.a.really.long.intrinsic.name.but.we.should.still.not.crash
|
||||
def int_foo : Intrinsic<"llvm.foo", [llvm_anyint_ty]>;
|
||||
def int_this_is_a_really_long_intrinsic_name_but_we_should_still_not_crash : Intrinsic<"llvm.this.is.a.really.long.intrinsic.name.but.we.should.still.not.crash", [llvm_anyint_ty]>;
|
||||
|
@ -129,8 +129,9 @@ void IntrinsicEmitter::EmitEnumInfo(const std::vector<CodeGenIntrinsic> &Ints,
|
||||
for (unsigned i = 0, e = Ints.size(); i != e; ++i) {
|
||||
OS << " " << Ints[i].EnumName;
|
||||
OS << ((i != e-1) ? ", " : " ");
|
||||
OS << std::string(40-Ints[i].EnumName.size(), ' ')
|
||||
<< "// " << Ints[i].Name << "\n";
|
||||
if (Ints[i].EnumName.size() < 40)
|
||||
OS << std::string(40-Ints[i].EnumName.size(), ' ');
|
||||
OS << " // " << Ints[i].Name << "\n";
|
||||
}
|
||||
OS << "#endif\n\n";
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user