* Patrik Torstensson (Patrik.Torstesson at gmail.com)
*
* (C) 2005 Ximian, Inc. http://www.ximian.com
+ * Copyright 2011 Xamarin Inc. http://www.xamarin.com
*/
#include "mini.h"
OP_CMOV_LGT_UN
};
-static int
+static G_GNUC_UNUSED int
br_to_br_un (int opcode)
{
switch (opcode) {
static void
replace_out_block_in_code (MonoBasicBlock *bb, MonoBasicBlock *orig, MonoBasicBlock *repl) {
MonoInst *ins;
+
+#if defined(__native_client_codegen__)
+ /* Need to maintain this flag for the new block because */
+ /* we can't jump indirectly to a non-aligned block. */
+ if (orig->flags & BB_INDIRECT_JUMP_TARGET)
+ {
+ repl->flags |= BB_INDIRECT_JUMP_TARGET;
+ }
+#endif
for (ins = bb->code; ins != NULL; ins = ins->next) {
switch (ins->opcode) {
/* the block are in sequence anyway ... */
/* branches to the following block can be removed */
- if (bb->last_ins && bb->last_ins->opcode == OP_BR) {
+ if (bb->last_ins && bb->last_ins->opcode == OP_BR && !bbn->out_of_line) {
bb->last_ins->opcode = OP_NOP;
changed = TRUE;
if (cfg->verbose_level > 2)