Skip to content

Commit

Permalink
[IntrinsicEmitter] Remove GET_INTRINSIC_MODREF_BEHAVIOR table
Browse files Browse the repository at this point in the history
There is no need to generate separate table for intrinsics mod ref behaviour.
It can now be determined purely from function attributes.

Differential Revision: http://reviews.llvm.org/D13917



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@251040 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
igor-laevsky committed Oct 22, 2015
1 parent d43c001 commit a4e4343
Showing 1 changed file with 0 additions and 41 deletions.
41 changes: 0 additions & 41 deletions utils/TableGen/IntrinsicEmitter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,6 @@ class IntrinsicEmitter {
raw_ostream &OS);
void EmitAttributes(const std::vector<CodeGenIntrinsic> &Ints,
raw_ostream &OS);
void EmitModRefBehavior(const std::vector<CodeGenIntrinsic> &Ints,
raw_ostream &OS);
void EmitIntrinsicToGCCBuiltinMap(const std::vector<CodeGenIntrinsic> &Ints,
raw_ostream &OS);
void EmitIntrinsicToMSBuiltinMap(const std::vector<CodeGenIntrinsic> &Ints,
Expand Down Expand Up @@ -92,9 +90,6 @@ void IntrinsicEmitter::run(raw_ostream &OS) {
// Emit the intrinsic parameter attributes.
EmitAttributes(Ints, OS);

// Emit intrinsic alias analysis mod/ref behavior.
EmitModRefBehavior(Ints, OS);

// Emit code to translate GCC builtins into LLVM intrinsics.
EmitIntrinsicToGCCBuiltinMap(Ints, OS);

Expand Down Expand Up @@ -705,42 +700,6 @@ EmitAttributes(const std::vector<CodeGenIntrinsic> &Ints, raw_ostream &OS) {
OS << "#endif // GET_INTRINSIC_ATTRIBUTES\n\n";
}

/// EmitModRefBehavior - Determine intrinsic alias analysis mod/ref behavior.
void IntrinsicEmitter::
EmitModRefBehavior(const std::vector<CodeGenIntrinsic> &Ints, raw_ostream &OS){
OS << "// Determine intrinsic alias analysis mod/ref behavior.\n"
<< "#ifdef GET_INTRINSIC_MODREF_BEHAVIOR\n"
<< "assert(iid <= Intrinsic::" << Ints.back().EnumName << " && "
<< "\"Unknown intrinsic.\");\n\n";

OS << "static const uint8_t IntrinsicModRefBehavior[] = {\n"
<< " /* invalid */ FMRB_UnknownModRefBehavior,\n";
for (unsigned i = 0, e = Ints.size(); i != e; ++i) {
OS << " /* " << TargetPrefix << Ints[i].EnumName << " */ ";
switch (Ints[i].ModRef) {
case CodeGenIntrinsic::NoMem:
OS << "FMRB_DoesNotAccessMemory,\n";
break;
case CodeGenIntrinsic::ReadArgMem:
OS << "FMRB_OnlyReadsArgumentPointees,\n";
break;
case CodeGenIntrinsic::ReadMem:
OS << "FMRB_OnlyReadsMemory,\n";
break;
case CodeGenIntrinsic::ReadWriteArgMem:
OS << "FMRB_OnlyAccessesArgumentPointees,\n";
break;
case CodeGenIntrinsic::ReadWriteMem:
OS << "FMRB_UnknownModRefBehavior,\n";
break;
}
}
OS << "};\n\n"
<< "return "
"static_cast<FunctionModRefBehavior>(IntrinsicModRefBehavior[iid]);\n"
<< "#endif // GET_INTRINSIC_MODREF_BEHAVIOR\n\n";
}

/// EmitTargetBuiltins - All of the builtins in the specified map are for the
/// same target, and we already checked it.
static void EmitTargetBuiltins(const std::map<std::string, std::string> &BIM,
Expand Down

0 comments on commit a4e4343

Please sign in to comment.