Quick Search:

Mode

Context

Displaying 3 lines of context. None | Less | More | Full

Other Diffs

Ignore

Blank Lines Whitespace: Expand:

Diff

1.78
 
1.79
 
MAIN:gmcgarry:20080625012918
 
local.c
_>10371037                 constructor = destructor = 0;
 10381038         }
 10391039 }
<_ 1040+
  1041+NODE *
  1042+i386_builtin_return_address(NODE *f, NODE *a)
  1043+{
  1044+        int nframes;
  1045+
  1046+        if (a == NULL || a->n_op != ICON)
  1047+                goto bad;
  1048+
  1049+        nframes = a->n_lval;
  1050+
  1051+        tfree(f);
  1052+        tfree(a);
  1053+
  1054+        f = block(REG, NIL, NIL, PTR+VOID, 0, MKSUE(VOID));
  1055+        regno(f) = FPREG;
  1056+
  1057+        while (nframes--)
  1058+                f = block(UMUL, f, NIL, PTR+VOID, 0, MKSUE(VOID));
  1059+
  1060+        f = block(PLUS, f, bcon(4), INCREF(PTR+VOID), 0, MKSUE(VOID));
  1061+        f = buildtree(UMUL, f, NIL);
  1062+
  1063+        return f;
  1064+bad:
  1065+        uerror("bad argument to __builtin_return_address");
  1066+        return bcon(0);
  1067+}
  1068+
  1069+NODE *
  1070+i386_builtin_frame_address(NODE *f, NODE *a)
  1071+{
  1072+        int nframes;
  1073+
  1074+        if (a == NULL || a->n_op != ICON)
  1075+                goto bad;
  1076+
  1077+        nframes = a->n_lval;
  1078+
  1079+        tfree(f);
  1080+        tfree(a);
  1081+
  1082+        f = block(REG, NIL, NIL, PTR+VOID, 0, MKSUE(VOID));
  1083+        regno(f) = FPREG;
  1084+
  1085+        while (nframes--)
  1086+                f = block(UMUL, f, NIL, PTR+VOID, 0, MKSUE(VOID));
  1087+
  1088+        return f;
  1089+bad:
  1090+        uerror("bad argument to __builtin_frame_address");
  1091+        return bcon(0);
  1092+}
FishEye: Open Source License registered to PCC.
Your maintenance has expired. You can renew your license at http://www.atlassian.com/fisheye/renew
Atlassian FishEye, CVS analysis. (Version:1.6.3 Build:build-336 2008-11-04) - Administration - Page generated 2014-08-23 07:33 +0200