mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-27 04:18:42 +00:00
llvmc: Properly handle (error) in edge properties.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111827 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -1950,7 +1950,6 @@ struct ActionHandlingCallbackBase
|
||||
|
||||
/// EmitActionHandlersCallback - Emit code that handles actions. Used by
|
||||
/// EmitGenerateActionMethod() as an argument to EmitCaseConstructHandler().
|
||||
|
||||
class EmitActionHandlersCallback;
|
||||
|
||||
typedef void (EmitActionHandlersCallback::* EmitActionHandlersCallbackHandler)
|
||||
@@ -2649,21 +2648,18 @@ void EmitPopulateLanguageMap (const RecordKeeper& Records, raw_ostream& O)
|
||||
O << "}\n\n";
|
||||
}
|
||||
|
||||
/// IncDecWeight - Helper function passed to EmitCaseConstructHandler()
|
||||
/// by EmitEdgeClass().
|
||||
void IncDecWeight (const Init* i, unsigned IndentLevel,
|
||||
raw_ostream& O) {
|
||||
/// EmitEdgePropertyHandlerCallback - Emits code that handles edge
|
||||
/// properties. Helper function passed to EmitCaseConstructHandler() by
|
||||
/// EmitEdgeClass().
|
||||
void EmitEdgePropertyHandlerCallback (const Init* i, unsigned IndentLevel,
|
||||
raw_ostream& O) {
|
||||
const DagInit& d = InitPtrToDag(i);
|
||||
const std::string& OpName = GetOperatorName(d);
|
||||
|
||||
if (OpName == "inc_weight") {
|
||||
O.indent(IndentLevel) << "ret += ";
|
||||
}
|
||||
else if (OpName == "dec_weight") {
|
||||
O.indent(IndentLevel) << "ret -= ";
|
||||
}
|
||||
else if (OpName == "error") {
|
||||
// TODO: fix this
|
||||
CheckNumberOfArguments(d, 1);
|
||||
O.indent(IndentLevel) << "PrintError(\""
|
||||
<< InitPtrToString(d.getArg(0))
|
||||
@@ -2696,11 +2692,12 @@ void EmitEdgeClass (unsigned N, const std::string& Target,
|
||||
|
||||
// Function Weight().
|
||||
O.indent(Indent1)
|
||||
<< "unsigned Weight(const InputLanguagesSet& InLangs) const {\n";
|
||||
<< "int Weight(const InputLanguagesSet& InLangs) const {\n";
|
||||
O.indent(Indent2) << "unsigned ret = 0;\n";
|
||||
|
||||
// Handle the 'case' construct.
|
||||
EmitCaseConstructHandler(Case, Indent2, IncDecWeight, false, OptDescs, O);
|
||||
EmitCaseConstructHandler(Case, Indent2, EmitEdgePropertyHandlerCallback,
|
||||
false, OptDescs, O);
|
||||
|
||||
O.indent(Indent2) << "return ret;\n";
|
||||
O.indent(Indent1) << "}\n\n};\n\n";
|
||||
|
||||
Reference in New Issue
Block a user