亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? optimize.c

?? C語言編譯器的源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
														if (!floatrecurse(ep->v.p[1])) {
                                sc = pwrof2(ep->v.p[0]->v.i);
                                if( sc != -1 )
                                        {
																				ENODE *temp = ep->v.p[0];
																				ep->v.p[0 ] = ep->v.p[1];
																				ep->v.p[1] = temp;
                                        ep->v.p[1]->v.i = sc;
																				switch(ep->nodetype) {
																					case en_mul:
																						ep->nodetype = en_alsh;
																						break;
																					case en_asmul:
																						ep->nodetype = en_asalsh;
																						break;
																					case en_umul:
																					case en_pmul:
																						ep->nodetype = en_lsh;
																						break;
																					case en_asumul:
																						ep->nodetype = en_aslsh;
																						break;
																				}
																				break;
                                        }
                            }
														val = ep->v.p[0]->v.i;
														if (val == 0)
															*node = ep->v.p[0];
														else if (val == 1)
															*node = ep->v.p[1];
														else if (val == -1)
															*node = makenode(en_uminus,(char *)ep->v.p[1],0);
														else dooper(node,mode);
														break;
													case 6:
														dval = ep->v.p[0]->v.f;
														if (dval == 0)
															*node = ep->v.p[0];
														else if (dval == 1)
															*node = ep->v.p[1];
														else if (dval == -1)
															*node = makenode(en_uminus,(char *)ep->v.p[1],0);
														else dooper(node,mode);
														break;
													case 7:
														if (!floatrecurse(ep->v.p[0])) {
                                sc = pwrof2(ep->v.p[1]->v.i);
                                if( sc != -1 )
                                        {
                                        ep->v.p[1]->v.i = sc;
																				switch(ep->nodetype) {
																					case en_mul:
																						ep->nodetype = en_alsh;
																						break;
																					case en_asmul:
																						ep->nodetype = en_asalsh;
																						break;
																					case en_umul:
																					case en_pmul:
																						ep->nodetype = en_lsh;
																						break;
																					case en_asumul:
																						ep->nodetype = en_aslsh;
																						break;
																				}
																				break;
                                        }
                            }
														val = ep->v.p[1]->v.i;
														if (val == 0)
															*node = ep->v.p[1];
														else if (val == 1)
															*node = ep->v.p[0];
														else if (val == -1)
															*node = makenode(en_uminus,(char *)ep->v.p[0],0);
														else dooper(node,mode);
														break;
													case 8:
														dval = ep->v.p[1]->v.f;
														if (dval == 0)
															*node = ep->v.p[1];
														else if (dval == 1)
															*node = ep->v.p[0];
														else if (dval == -1)
															*node = makenode(en_uminus,(char *)ep->v.p[0],0);
														else dooper(node,mode);
														break;
												}
                        break;
								case en_pdiv:
                case en_div:
								case en_udiv:
								case en_asdiv:
								case en_asudiv:
                        opt0(&(ep->v.p[0]));
                        opt0(&(ep->v.p[1]));
												mode = getmode(ep->v.p[0],ep->v.p[1]);
												switch(mode) {
													case 1:
													case 2:
													case 3:
													case 4: 
														dooper(node,mode);
														break;
													case 5:
														if (ep->v.p[0]->v.i == 0)
															*node = ep->v.p[0];
														else
															dooper(node,mode);
														break;
													case 6:
														if (ep->v.p[0]->v.f == 0)
															*node = ep->v.p[0];
														else
															dooper(node,mode);
														break;
													case 7:
														if (!floatrecurse(ep->v.p[0])) {
                                sc = pwrof2(ep->v.p[1]->v.i);
                                if( sc != -1 )
                                        {
                                        ep->v.p[1]->v.i = sc;
																				switch(ep->nodetype) {
																					case en_div:
																						ep->nodetype = en_arsh;
																						break;
																					case en_asdiv:
																						ep->nodetype = en_asarsh;
																						break;
																					case en_udiv:
																					case en_pdiv:
																						ep->nodetype = en_rsh;
																						break;
																					case en_asudiv:
																						ep->nodetype = en_asrsh;
																						break;
																				}
																				break;
                                        }
                            }
														val = ep->v.p[1]->v.i;
														if (val == 1)
															*node = ep->v.p[0];
														else if (val == -1)
															*node = makenode(en_uminus,(char *)ep->v.p[0],0);
														else dooper(node,mode);
														break;
													case 8:
														dval = ep->v.p[1]->v.f;
														if (dval == 1)
															*node = ep->v.p[0];
														else if (dval == -1)
															*node = makenode(en_uminus,(char *)ep->v.p[0],0);
														else dooper(node,mode);
														break;
												}
                        break;
                case en_mod:
								case en_umod:
								case en_asmod: case en_asumod:
                        opt0(&(ep->v.p[0]));
                        opt0(&(ep->v.p[1]));
												mode = getmode(ep->v.p[0],ep->v.p[1]);
												switch(mode) {
													case 7:
														if (!floatrecurse(ep->v.p[0])) {
                                sc = pwrof2(ep->v.p[1]->v.i);
                                if( sc != -1 )
                                        {
                                        ep->v.p[1]->v.i = mod_mask(sc);
																				if (ep->nodetype == en_asmod || ep->nodetype == en_asumod)
                                        	ep->nodetype = en_asand;
																				else
                                        	ep->nodetype = en_and;
																				break;
                                        }
                                }
													case 1:
													case 2:
													case 3:
													case 4: 
													case 5: case 6: case 8:
														dooper(node,mode);
												}
                        break;
                case en_and:    case en_or:
                case en_xor:    case en_rsh:
                case en_lsh:    case en_arsh: case en_alsh:
                        opt0(&(ep->v.p[0]));
                        opt0(&(ep->v.p[1]));
                        if( isintconst(ep->v.p[0]->nodetype) &&
                                isintconst(ep->v.p[1]->nodetype) )
                                dooper(node,getmode(ep->v.p[0],ep->v.p[1]));
                        break;
                case en_land:   case en_lor:
				case en_lt:		case en_le:
				case en_ugt:	case en_uge: case en_ult: case en_ule:
				case en_gt:		case en_ge:
				case en_eq:		case en_ne:
								case en_asalsh: case en_asarsh:
                case en_asand:  case en_asor:  case en_asxor:
                case en_asadd:  case en_assub:
                case en_asrsh:
                case en_aslsh:  case en_cond:
                case en_fcall:  case en_void: case en_trapcall: case en_intcall:
								case en_pfcall: case en_pfcallb:
                case en_assign: case en_moveblock: case en_stackblock: case en_callblock:
								case en_fcallb: case en_refassign: case en_pcallblock:
                        opt0(&(ep->v.p[0]));
                        opt0(&(ep->v.p[1]));
                        break;
                }
}
long     xfold2(ENODE * node)
/*
 *      xfold2 will remove constant nodes and return the values to
 *      the calling routines.
 */
{       long     i;
        if( node == 0 )
                return 0;
        switch( node->nodetype )
                {
                case en_icon:
								case en_lcon:
								case en_iucon:
								case en_lucon:
								case en_ccon:
                        i = node->v.i;
                        node->v.i = 0;
                        return i;
                case en_add:
                        return xfold2(node->v.p[0]) + xfold2(node->v.p[1]);
                case en_sub:
                        return xfold2(node->v.p[0]) - xfold2(node->v.p[1]);
								case en_or:
                        return xfold2(node->v.p[0]) | xfold2(node->v.p[1]);
								case en_xor:
                        return xfold2(node->v.p[0]) ^ xfold2(node->v.p[1]);
                case en_uminus:
                        return - xfold2(node->v.p[0]);
                case en_mul:
								case en_pmul:
								case en_umul:
                case en_lsh:
								case en_alsh:
								case en_asalsh: case en_asarsh: case en_arsh:
                case en_rsh:    case en_div:  case en_pdiv:
                case en_mod:    case en_asadd:
                case en_assub:  case en_asmul:
                case en_asdiv:  case en_asmod:
                case en_land: case en_lor:
                case en_asand:	case en_and:
                case en_asor:   case en_void:  case en_asxor:
								case en_pfcall: case en_pfcallb:
                case en_fcall:  case en_assign: case en_moveblock: case en_trapcall:
								case en_stackblock: case en_intcall: case en_callblock: case en_fcallb:
								case en_asumul: case en_asudiv: case en_asumod: case en_refassign:
								case en_udiv: case en_pcallblock:
                        fold_const2(&node->v.p[0]);
                        fold_const2(&node->v.p[1]);
                        return 0;
                case en_b_ref:  case en_w_ref:
                case en_ub_ref:  case en_uw_ref:
                case en_l_ref:  case en_compl: case en_ul_ref:
								case en_floatref: case en_doubleref: case en_longdoubleref:
                case en_not: case en_bits:
                        fold_const2(&node->v.p[0]);
                        return 0;
                }
        return 0;
}

void fold_const2(ENODE ** node)
/*
 *      reorganize an expression for optimal constant grouping.
 */
{       ENODE    *ep;
        long   i;
        ep = *node;
        if( ep == 0 )
                return;
				switch (ep->nodetype) {
						case en_add:
								if (ep->v.p[0]->nodetype == en_cp && isintconst(ep->v.p[0]->v.p[0]->nodetype)) {
												ep->v.p[0]->v.p[0]->v.i += xfold2(ep->v.p[1]);
												return;
												}
								else if (ep->v.p[1]->nodetype == en_cp && isintconst(ep->v.p[1]->v.p[0]->nodetype)) {
												ep->v.p[1]->v.p[0]->v.i += xfold2(ep->v.p[1]);
												return;
												}
                else if( isintconst(ep->v.p[0]->nodetype))
                        {
                        ep->v.p[0]->v.i += xfold2(ep->v.p[1]);
                        return;
                        }

                else if( isintconst(ep->v.p[1]->nodetype))
                        {
                        ep->v.p[1]->v.i += xfold2(ep->v.p[0]);
                        return;
                        }

								break;
						case en_sub:
								if (ep->v.p[0]->nodetype == en_cp && isintconst(ep->v.p[0]->v.p[0]->nodetype == en_icon)) {
												ep->v.p[0]->v.p[0]->v.i -= xfold2(ep->v.p[1]);
												return;
												}
								else if (ep->v.p[1]->nodetype == en_cp && isintconst(ep->v.p[1]->v.p[0]->nodetype)) {
												ep->v.p[1]->v.p[0]->v.i -= xfold2(ep->v.p[1]);
												return;
												}
                else if( isintconst(ep->v.p[0]->nodetype))
                        {
                        ep->v.p[0]->v.i -= xfold2(ep->v.p[1]);
                        return;
                        }
                else if( isintconst(ep->v.p[1]->nodetype))
                        {
                        ep->v.p[1]->v.i -= xfold2(ep->v.p[0]);
                        return;
                        }

								break;
						case en_or:
                if(isintconst( ep->v.p[0]->nodetype) )
                        {
                        ep->v.p[0]->v.i |= xfold2(ep->v.p[1]);
                        return;
                        }
                else if(isintconst( ep->v.p[1]->nodetype) )
                        {
                        ep->v.p[1]->v.i |= xfold2(ep->v.p[0]);
                        return;
                        }
								break;
						case en_xor:
                if( isintconst(ep->v.p[0]->nodetype))
                        {
                        ep->v.p[0]->v.i ^= xfold2(ep->v.p[1]);
                        return;
                        }
                else if( isintconst(ep->v.p[1]->nodetype))
                        {
                        ep->v.p[1]->v.i ^= xfold2(ep->v.p[0]);
                        return;
                        }
								break;
				}
        i = xfold2(ep);
        if( i != 0 ) {
									ep = xalloc(sizeof(ENODE));
									ep->nodetype = en_icon;
									ep->v.i = i;
                	ep = makenode(en_add,ep,*node);
                *node = ep;
        }
}
void opt4(ENODE ** node)
/*
 *      apply all constant optimizations.
 */
{
		opt0(node);
        fold_const2(node);
        opt0(node);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区视频在线观看视频| 一区二区三区**美女毛片| 欧美日韩的一区二区| 欧美日韩在线免费视频| 白白色 亚洲乱淫| 99久精品国产| 色欧美88888久久久久久影院| 94-欧美-setu| 91精品国产综合久久香蕉麻豆| 久久99精品一区二区三区三区| 欧美国产激情一区二区三区蜜月| 日韩三级精品电影久久久| 宅男在线国产精品| 欧美一区二区三区小说| 一本一道波多野结衣一区二区| 色综合久久中文字幕综合网| 欧美在线色视频| 欧美va亚洲va| 亚洲三级在线观看| 亚洲va在线va天堂| 国产a久久麻豆| 欧美三级日韩三级国产三级| 精品噜噜噜噜久久久久久久久试看| 久久久三级国产网站| 亚洲福利国产精品| 国产激情偷乱视频一区二区三区 | 欧美亚洲动漫制服丝袜| 精品日韩成人av| 亚洲自拍与偷拍| 国产美女在线精品| 26uuu久久综合| 亚洲福利视频导航| 91久久久免费一区二区| 国产亚洲一区字幕| 日本成人在线看| 欧美美女一区二区| 亚洲欧美韩国综合色| 国产美女在线精品| 欧美精品一区二| 蜜桃av一区二区三区| 91国偷自产一区二区三区观看| 欧美激情在线一区二区三区| 久国产精品韩国三级视频| 91蜜桃免费观看视频| 欧美日韩久久一区二区| 久久久精品一品道一区| 久久福利视频一区二区| 91免费在线播放| 国产精品免费aⅴ片在线观看| 激情伊人五月天久久综合| 日韩一区二区三区视频| 国产一二三精品| 久久久夜色精品亚洲| 国产精品 欧美精品| 国产区在线观看成人精品| 成人午夜碰碰视频| 亚洲精品国久久99热| 555www色欧美视频| 国产在线一区二区| 亚洲黄色片在线观看| 欧美调教femdomvk| 国产精一品亚洲二区在线视频| 国产清纯美女被跳蛋高潮一区二区久久w | 欧美性色aⅴ视频一区日韩精品| 亚洲成人一区二区| 国产日产欧美一区二区三区| 99re热视频精品| 国产一区二区剧情av在线| 国产精品免费视频一区| 精品视频一区二区不卡| 久久黄色级2电影| 亚洲嫩草精品久久| 国产精品久久久久影院色老大| 色吧成人激情小说| 亚洲国产日韩综合久久精品| 欧美一区二区日韩一区二区| 99国产麻豆精品| 国产精品自拍网站| 精品一区二区在线观看| 亚洲精品v日韩精品| 色天使色偷偷av一区二区| 亚洲国产精品久久艾草纯爱| 国产精品久久久99| 自拍偷拍国产精品| 亚洲图片一区二区| 午夜日韩在线观看| 青草国产精品久久久久久| 日韩电影在线观看电影| 另类成人小视频在线| 国产精品第四页| 亚洲免费视频成人| 午夜影院久久久| 激情偷乱视频一区二区三区| 九九久久精品视频| 丁香婷婷深情五月亚洲| 成人黄色综合网站| 欧美日韩在线亚洲一区蜜芽| 欧美日韩国产免费一区二区| 日韩欧美国产综合一区 | 久久电影网站中文字幕| 国产不卡视频在线播放| 99国产麻豆精品| 2020国产精品久久精品美国| 国产欧美日产一区| 婷婷夜色潮精品综合在线| 国产精品99久久不卡二区| 成人av小说网| www激情久久| 日本亚洲一区二区| 91麻豆免费观看| 国产婷婷色一区二区三区| 午夜欧美视频在线观看| av不卡在线观看| 久久九九久久九九| 国模无码大尺度一区二区三区| 91一区二区在线| 国产区在线观看成人精品 | 一本色道久久综合亚洲精品按摩| 91精品国产全国免费观看| 亚洲成人免费看| 在线看日本不卡| 亚洲在线免费播放| 94色蜜桃网一区二区三区| 久久精品一区二区三区不卡牛牛| 视频在线观看一区二区三区| 一本一道久久a久久精品综合蜜臀| 国产蜜臀97一区二区三区| 国产乱码精品一区二区三区忘忧草 | 懂色av一区二区三区免费观看| 日韩欧美一区电影| 热久久一区二区| 欧美成人a在线| 国产一区在线视频| 欧美国产日韩在线观看| 成人av午夜影院| 亚洲第一成年网| 欧美一级高清片| 成人黄色在线网站| 亚洲精品中文在线| 日韩久久久精品| 成人自拍视频在线| 亚洲午夜羞羞片| 欧美成人一区二区三区在线观看| 国产成人免费视频网站高清观看视频| 久久男人中文字幕资源站| 色婷婷精品大视频在线蜜桃视频| 亚洲电影一区二区| 国产欧美日韩一区二区三区在线观看| 成人丝袜视频网| 精品一区二区免费视频| 亚洲一区二区三区免费视频| xf在线a精品一区二区视频网站| 麻豆视频观看网址久久| 欧美国产日本视频| 久久久噜噜噜久久中文字幕色伊伊| 在线精品观看国产| 亚洲午夜国产一区99re久久| 日韩一区二区三区电影| 日韩和欧美一区二区三区| 91精品国产综合久久久久久| 久久综合综合久久综合| 欧美成人video| 国产精品456露脸| 综合久久综合久久| 日韩片之四级片| 国产亚洲一区二区三区四区| 蜜臀精品一区二区三区在线观看 | 91精品国产91热久久久做人人| 欧美亚洲综合久久| 国产成人精品午夜视频免费| 欧美激情一区三区| 91精品久久久久久久91蜜桃| thepron国产精品| 三级影片在线观看欧美日韩一区二区 | 一区二区三区在线视频免费 | 一区二区三区四区在线免费观看 | 中文字幕在线观看不卡视频| 精品国产伦一区二区三区免费| 91国产福利在线| 国产成人日日夜夜| 久久激情五月激情| 日本中文一区二区三区| 日韩av一区二区在线影视| 午夜精品成人在线视频| 亚洲日本乱码在线观看| 一区二区国产视频| 亚洲国产一二三| 狠狠色丁香久久婷婷综| 香港成人在线视频| 国产视频一区在线观看| 国产精品传媒入口麻豆| 中文字幕成人网| 三级精品在线观看| 成人丝袜视频网| 欧美日韩午夜在线视频| 国产人成亚洲第一网站在线播放| 国产性色一区二区| 日韩av成人高清| 在线视频你懂得一区| 欧美激情一区三区|