Dbginfo.dbgInit();
    public static void main (String[] args) {	System.out.println("\nCreating an IR graph: IfElseExample...");  /* init library: Java did not support the callback, so ALWAYS use 0 here */	Firm.initFirm(0);	/** Build type information for the compilation unit. **/	/* FIRM was designed for oo languages where all methods belong to a class.	 * For imperative languages like C we view a file as a large class	 * containing all functions in this file as methods.	 * This class is generated automatically.	 */	int owner = Irprog.getGlobType();	/* Basic type information for primitive type int. */	int primIntTypeName = Ident.idFromStr("int", 3);	int primIntType = Type.newTypePrimitive(primIntTypeName, Irmode.getModeIs());	/* The type of the method */	int tpName = Ident.idFromStr("IF_ELSE_EXAMPLE_main_p", 23);	int procMain = Type.newTypeMethod(tpName, 0, 2);	Type.setMethodResType(procMain, 0, primIntType);	Type.setMethodResType(procMain, 1, primIntType);	/* An entity representing the method.  Owner of the entity is the global	    class type mentioned above. */	int name = Ident.idFromStr("IF_ELSE_EXAMPLE_main", 20);	int ent = Entity.newEntity (owner, name, procMain);	/** Build code for the procedure. **/	int irg = Irgraph.newIrGraph (ent, 2);	/* Generate two constants */	int c0 = Ircons.newConst (Irmode.getModeIs(), Tv.tarvalFromLong (Irmode.getModeIs(), 0));	int c1 = Ircons.newConst (Irmode.getModeIs(), Tv.tarvalFromLong (Irmode.getModeIs(), 1));	/* Set a and b to constants */	Ircons.setValue (0, c0);  /* this (0) is variable a */	Ircons.setValue (1, c1);  /* this (1) is variable b */	/* The expression that evaluates the condition */	int c2 = Ircons.newConst(Irmode.getModeIs(),				 Tv.tarvalFromLong (Irmode.getModeIs(), 2));	int cmpGt = Ircons.newProj(Ircons.newCmp(Ircons.getValue(0, Irmode.getModeIs()), c2),				   Irmode.getModeb(), Irnode.Gt);	int x = Ircons.newCond (cmpGt);	int f = Ircons.newProj (x, Irmode.getModeX(), 0); /* if condition is false */	int t = Ircons.newProj (x, Irmode.getModeX(), 1); /* if condition is true */	Ircons.matureBlock (Irgraph.getIrgCurrentBlock(irg));	/* generate and fill the then block */	int b = Ircons.newImmBlock ();	Ircons.addInEdge (b, t);	Ircons.setValue (0, Ircons.getValue(1, Irmode.getModeIs()));	Ircons.matureBlock (b);	int x_then = Ircons.newJmp ();	/* generate and fill the else block */	b = Ircons.newImmBlock ();	Ircons.addInEdge (b, f);	Ircons.setValue (1, Ircons.newConst (Irmode.getModeIs(),					     Tv.tarvalFromLong (Irmode.getModeIs(), 2)));	Ircons.matureBlock (b);	int x_else = Ircons.newJmp ();	/* generate the join block and add all cfg edges */	b = Ircons.newImmBlock ();	Ircons.addInEdge (b, x_then);	Ircons.addInEdge (b, x_else);	int[] in = new int[2]; /* this is the array containing the return parameters */	in[0] = Ircons.getValue(0, Irmode.getModeIs());	in[1] = Ircons.getValue(1, Irmode.getModeIs());	x = Ircons.newReturn (Ircons.getStore(), 2, in);	/* Now generate all instructions for this block and all its predecessor	   blocks so we can mature it. */	Ircons.matureBlock (Irgraph.getIrgCurrentBlock(irg));	/* This adds the in edge of the end block which originates at the	   return statement.  The return node passes control flow to the	   end block.  */	Ircons.addInEdge (Irgraph.getIrgEndBlock(irg), x);	/* Now we can mature the end block as all it's predecessors are known. */	Ircons.matureBlock (Irgraph.getIrgEndBlock(irg));	Irvrfy.irgVrfy(irg);	Ircons.finalizeCons (irg);	System.out.println("Done building the graph.  Optimizing it.");	Irgopt.localOptimizeGraph(irg);	Irgopt.deadNodeElimination(irg);	Irdump.dumpIrBlockGraph (irg);	Irdump.dumpAllTypes();	System.out.println("use xvcg to view this graph:");	System.out.println("/ben/goetz/bin/xvcg GRAPHNAME\n");    }