+#if (MONO_APPLY_SSAPRE_TO_SINGLE_EXPRESSION)
+static void
+snprint_argument (GString *string, MonoSsapreExpressionArgument *argument) {
+ switch (argument->type) {
+ case MONO_SSAPRE_EXPRESSION_ARGUMENT_ANY:
+ g_string_append_printf (string, "ANY");
+ break;
+ case MONO_SSAPRE_EXPRESSION_ARGUMENT_NOT_PRESENT:
+ g_string_append_printf (string, "NONE");
+ break;
+ case MONO_SSAPRE_EXPRESSION_ARGUMENT_ORIGINAL_VARIABLE:
+ g_string_append_printf (string, "ORIGINAL_VARIABLE %d", argument->argument.original_variable);
+ break;
+ case MONO_SSAPRE_EXPRESSION_ARGUMENT_SSA_VARIABLE:
+ g_string_append_printf (string, "SSA_VARIABLE %d", argument->argument.ssa_variable);
+ break;
+ case MONO_SSAPRE_EXPRESSION_ARGUMENT_INTEGER_CONSTANT:
+ g_string_append_printf (string, "INTEGER_CONSTANT %d", argument->argument.integer_constant);
+ break;
+ case MONO_SSAPRE_EXPRESSION_ARGUMENT_LONG_COSTANT:
+ g_string_append_printf (string, "LONG_COSTANT %lld", *(argument->argument.long_constant));
+ break;
+ case MONO_SSAPRE_EXPRESSION_ARGUMENT_FLOAT_COSTANT:
+ g_string_append_printf (string, "FLOAT_COSTANT %f", *(argument->argument.float_constant));
+ break;
+ case MONO_SSAPRE_EXPRESSION_ARGUMENT_DOUBLE_COSTANT:
+ g_string_append_printf (string, "DOUBLE_COSTANT %f", *(argument->argument.double_constant));
+ break;
+ default:
+ g_string_append_printf (string, "UNKNOWN: %d", argument->type);
+ }
+}
+
+static void
+snprint_expression_description (GString *string, MonoSsapreExpressionDescription *expression_description) {
+ if (expression_description->opcode != 0) {
+ g_string_append_printf (string, "%s ([", mono_inst_name (expression_description->opcode) );
+ snprint_argument (string, &(expression_description->left_argument));
+ g_string_append_printf (string, "],[");
+ snprint_argument (string, &(expression_description->right_argument));
+ g_string_append_printf (string, "])");
+ } else {
+ g_string_append_printf (string, "ANY");
+ }
+}
+#endif
+