make CondJmps and Switches pinned, now we can do code_placement in the backend again
authorMatthias Braun <matze@braunis.de>
Thu, 22 Mar 2007 14:01:55 +0000 (14:01 +0000)
committerMatthias Braun <matze@braunis.de>
Thu, 22 Mar 2007 14:01:55 +0000 (14:01 +0000)
ir/be/ia32/ia32_spec.pl
ir/be/ia32/ia32_x87.c

index dcfcc04..927fd45 100644 (file)
@@ -654,6 +654,7 @@ Not => {
 # other operations
 
 CondJmp => {
+       state     => "pinned",
        op_flags  => "L|X|Y",
        comment   => "construct conditional jump: CMP A, B && JMPxx LABEL",
        reg_req   => { in => [ "gp", "gp", "gp", "gp", "none" ] },
@@ -663,6 +664,7 @@ CondJmp => {
 },
 
 TestJmp => {
+       state     => "pinned",
        op_flags  => "L|X|Y",
        comment   => "construct conditional jump: TEST A, B && JMPxx LABEL",
        reg_req  => { in => [ "gp", "gp" ] },
@@ -672,6 +674,7 @@ TestJmp => {
 },
 
 CJmpAM => {
+       state     => "pinned",
        op_flags  => "L|X|Y",
        comment   => "construct conditional jump without CMP (replaces CondJmp): JMPxx LABEL",
        reg_req   => { in => [ "gp", "gp", "gp", "gp", "none" ], out => [ "none", "none" ] },
@@ -680,6 +683,7 @@ CJmpAM => {
 },
 
 CJmp => {
+       state     => "pinned",
        op_flags  => "L|X|Y",
        comment   => "construct conditional jump without CMP (replaces TestJmp): JMPxx LABEL",
        reg_req   => { in => [ "gp", "gp" ] },
@@ -687,6 +691,7 @@ CJmp => {
 },
 
 SwitchJmp => {
+       state     => "pinned",
        op_flags  => "L|X|Y",
        comment   => "construct switch",
        reg_req   => { in => [ "gp" ], out => [ "none" ] },
@@ -1053,6 +1058,7 @@ xCmp => {
 },
 
 xCondJmp => {
+       state     => "pinned",
        op_flags  => "L|X|Y",
        comment   => "construct conditional jump: UCOMIS A, B && JMPxx LABEL",
        reg_req   => { in => [ "gp", "gp", "xmm", "xmm", "none" ], out => [ "none", "none" ] },
@@ -1548,6 +1554,7 @@ vfConst => {
 # other
 
 vfCondJmp => {
+       state     => "pinned",
        op_flags  => "L|X|Y",
        comment   => "represents a virtual floating point compare",
        reg_req   => { in => [ "gp", "gp", "vfp", "vfp", "none" ], out => [ "none", "none", "eax" ] },
index 33624a0..9c7d60b 100644 (file)
@@ -870,7 +870,7 @@ static void vfp_dump_live(vfp_liveness live) {
  * @param tmpl   the template containing the 4 possible x87 opcodes
  */
 static int sim_binop(x87_state *state, ir_node *n, const exchange_tmpl *tmpl) {
-       int op2_idx, op1_idx;
+       int op2_idx = 0, op1_idx;
        int out_idx, do_pop = 0;
        ia32_attr_t *attr;
        ir_node *patched_insn;