summaryrefslogtreecommitdiff
path: root/omega/code_gen/src
diff options
context:
space:
mode:
Diffstat (limited to 'omega/code_gen/src')
-rw-r--r--omega/code_gen/src/CG.cc1163
-rw-r--r--omega/code_gen/src/CG_roseBuilder.cc1533
-rw-r--r--omega/code_gen/src/CG_roseRepr.cc176
-rw-r--r--omega/code_gen/src/CG_stringBuilder.cc487
-rw-r--r--omega/code_gen/src/CG_stringRepr.cc54
-rw-r--r--omega/code_gen/src/CG_suifBuilder.cc678
-rw-r--r--omega/code_gen/src/CG_suifRepr.cc81
-rwxr-xr-xomega/code_gen/src/CG_utils.cc1735
-rw-r--r--omega/code_gen/src/code_gen.cc656
-rwxr-xr-xomega/code_gen/src/codegen.cc378
-rw-r--r--omega/code_gen/src/cscope.out89773
-rw-r--r--omega/code_gen/src/output_repr.cc1931
-rw-r--r--omega/code_gen/src/rose_attributes.cc183
-rw-r--r--omega/code_gen/src/tags158
14 files changed, 98986 insertions, 0 deletions
diff --git a/omega/code_gen/src/CG.cc b/omega/code_gen/src/CG.cc
new file mode 100644
index 0000000..42bd172
--- /dev/null
+++ b/omega/code_gen/src/CG.cc
@@ -0,0 +1,1163 @@
+/*****************************************************************************
+ Copyright (C) 1994-2000 the Omega Project Team
+ Copyright (C) 2005-2011 Chun Chen
+ All Rights Reserved.
+
+ Purpose:
+ CG node classes, used to build AST tree from polyhedra scanning.
+
+ Notes:
+ Parameter "restriction" is always tighter than "known" since CG_split
+ node does not correspond to any code for enforcement. This property is
+ destroyed after hoistGuard since "restriction" is not used anymore.
+ CG node's children are guaranteed not to be NULL, either NULL child is
+ removed from the children or the parent node itself becomes NULL.
+
+ History:
+ 04/20/96 printRepr added by D people. Lei Zhou
+ 10/24/06 hoistGuard added by chun
+ 08/03/10 collect CG classes into one place, by Chun Chen
+ 08/04/10 track dynamically substituted variables in printRepr, by chun
+ 04/02/11 rewrite the CG node classes, by chun
+ *****************************************************************************/
+
+#include <typeinfo>
+#include <assert.h>
+#include <omega.h>
+#include <code_gen/codegen.h>
+#include <code_gen/CG.h>
+#include <code_gen/CG_outputBuilder.h>
+#include <code_gen/CG_stringBuilder.h>
+#include <code_gen/CG_utils.h>
+#include <code_gen/codegen_error.h>
+#include <stack>
+#include <string.h>
+
+namespace omega {
+
+extern std::vector<std::vector<int> > smtNonSplitLevels;
+extern std::vector<std::vector<std::string> > loopIdxNames; //per stmt
+extern std::vector<std::pair<int, std::string> > syncs;
+
+extern int checkLoopLevel;
+extern int stmtForLoopCheck;
+extern int upperBoundForLevel;
+extern int lowerBoundForLevel;
+extern bool fillInBounds;
+
+//-----------------------------------------------------------------------------
+// Class: CG_result
+//-----------------------------------------------------------------------------
+
+CG_outputRepr *CG_result::printRepr(CG_outputBuilder *ocg,
+ const std::vector<CG_outputRepr *> &stmts) const {
+ return printRepr(1, ocg, stmts,
+ std::vector<std::pair<CG_outputRepr *, int> >(num_level(),
+ std::make_pair(static_cast<CG_outputRepr *>(NULL), 0)));
+}
+
+std::string CG_result::printString() const {
+ CG_stringBuilder ocg;
+ std::vector<CG_outputRepr *> stmts(codegen_->xforms_.size());
+ for (int i = 0; i < stmts.size(); i++)
+ stmts[i] = new CG_stringRepr("s" + to_string(i));
+ CG_stringRepr *repr = static_cast<CG_stringRepr *>(printRepr(&ocg, stmts));
+ for (int i = 0; i < stmts.size(); i++)
+ delete stmts[i];
+
+ if (repr != NULL) {
+ std::string s = repr->GetString();
+ delete repr;
+ return s;
+ } else
+ return std::string();
+}
+
+int CG_result::num_level() const {
+ return codegen_->num_level();
+}
+
+//-----------------------------------------------------------------------------
+// Class: CG_split
+//-----------------------------------------------------------------------------
+
+CG_result *CG_split::recompute(const BoolSet<> &parent_active,
+ const Relation &known, const Relation &restriction) {
+ active_ &= parent_active;
+ if (active_.empty()) {
+ delete this;
+ return NULL;
+ }
+
+
+ int i = 0;
+ while (i < restrictions_.size()) {
+ Relation new_restriction = Intersection(copy(restrictions_[i]),
+ copy(restriction));
+
+ new_restriction.simplify(2, 4);
+ //new_restriction.simplify();
+ clauses_[i] = clauses_[i]->recompute(active_, copy(known),
+ new_restriction);
+ if (clauses_[i] == NULL) {
+ restrictions_.erase(restrictions_.begin() + i);
+ clauses_.erase(clauses_.begin() + i);
+ } else
+ i++;
+ }
+
+
+ if (restrictions_.size() == 0) {
+ delete this;
+ return NULL;
+ } else
+ return this;
+}
+
+int CG_split::populateDepth() {
+ int max_depth = 0;
+ for (int i = 0; i < clauses_.size(); i++) {
+ int t = clauses_[i]->populateDepth();
+ if (t > max_depth)
+ max_depth = t;
+ }
+ return max_depth;
+}
+
+std::pair<CG_result *, Relation> CG_split::liftOverhead(int depth,
+ bool propagate_up) {
+ for (int i = 0; i < clauses_.size();) {
+ std::pair<CG_result *, Relation> result = clauses_[i]->liftOverhead(
+ depth, propagate_up);
+ if (result.first == NULL)
+ clauses_.erase(clauses_.begin() + i);
+ else {
+ clauses_[i] = result.first;
+ if (!result.second.is_obvious_tautology())
+ return std::make_pair(this, result.second);
+ i++;
+ }
+
+ }
+
+ if (clauses_.size() == 0) {
+ delete this;
+ return std::make_pair(static_cast<CG_result *>(NULL),
+ Relation::True(num_level()));
+ } else
+ return std::make_pair(this, Relation::True(num_level()));
+}
+
+Relation CG_split::hoistGuard() {
+ std::vector<Relation> guards;
+ for (int i = 0; i < clauses_.size(); i++)
+ guards.push_back(clauses_[i]->hoistGuard());
+
+ return SimpleHull(guards, true, true);
+}
+
+void CG_split::removeGuard(const Relation &guard) {
+ for (int i = 0; i < clauses_.size(); i++)
+ clauses_[i]->removeGuard(guard);
+}
+
+std::vector<CG_result *> CG_split::findNextLevel() const {
+ std::vector<CG_result *> result;
+ for (int i = 0; i < clauses_.size(); i++) {
+ CG_split *splt = dynamic_cast<CG_split *>(clauses_[i]);
+ if (splt != NULL) {
+ std::vector<CG_result *> t = splt->findNextLevel();
+ result.insert(result.end(), t.begin(), t.end());
+ } else
+ result.push_back(clauses_[i]);
+ }
+
+ return result;
+}
+
+CG_outputRepr *CG_split::printRepr(int indent, CG_outputBuilder *ocg,
+ const std::vector<CG_outputRepr *> &stmts,
+ const std::vector<std::pair<CG_outputRepr *, int> > &assigned_on_the_fly) const {
+ CG_outputRepr *stmtList = NULL;
+ std::vector<CG_result *> next_level = findNextLevel();
+
+ std::vector<CG_loop *> cur_loops;
+ for (int i = 0; i < next_level.size(); i++) {
+ CG_loop *lp = dynamic_cast<CG_loop *>(next_level[i]);
+ if (lp != NULL) {
+ cur_loops.push_back(lp);
+ } else {
+ stmtList = ocg->StmtListAppend(stmtList,
+ loop_print_repr(cur_loops, 0, cur_loops.size(),
+ Relation::True(num_level()), NULL, indent, ocg,
+ stmts, assigned_on_the_fly));
+ stmtList = ocg->StmtListAppend(stmtList,
+ next_level[i]->printRepr(indent, ocg, stmts,
+ assigned_on_the_fly));
+ cur_loops.clear();
+ }
+ }
+
+ stmtList = ocg->StmtListAppend(stmtList,
+ loop_print_repr(cur_loops, 0, cur_loops.size(),
+ Relation::True(num_level()), NULL, indent, ocg, stmts,
+ assigned_on_the_fly));
+ return stmtList;
+}
+
+CG_result *CG_split::clone() const {
+ std::vector<CG_result *> clauses(clauses_.size());
+ for (int i = 0; i < clauses_.size(); i++)
+ clauses[i] = clauses_[i]->clone();
+ return new CG_split(codegen_, active_, restrictions_, clauses);
+}
+
+void CG_split::dump(int indent) const {
+ std::string prefix;
+ for (int i = 0; i < indent; i++)
+ prefix += " ";
+ std::cout << prefix << "SPLIT: " << active_ << std::endl;
+ for (int i = 0; i < restrictions_.size(); i++) {
+ std::cout << prefix << "restriction: ";
+ const_cast<CG_split *>(this)->restrictions_[i].print();
+ clauses_[i]->dump(indent + 1);
+ }
+
+}
+
+//-----------------------------------------------------------------------------
+// Class: CG_loop
+//-----------------------------------------------------------------------------
+
+CG_result *CG_loop::recompute(const BoolSet<> &parent_active,
+ const Relation &known, const Relation &restriction) {
+ known_ = copy(known);
+ restriction_ = copy(restriction);
+ active_ &= parent_active;
+
+ std::vector<Relation> Rs;
+ for (BoolSet<>::iterator i = active_.begin(); i != active_.end(); i++) {
+ Relation r = Intersection(copy(restriction),
+ copy(codegen_->projected_IS_[level_ - 1][*i]));
+
+ //r.simplify(2, 4);
+ r.simplify();
+ if (!r.is_upper_bound_satisfiable()) {
+ active_.unset(*i);
+ continue;
+ }
+ Rs.push_back(copy(r));
+ }
+
+ if (active_.empty()) {
+ delete this;
+ return NULL;
+ }
+
+ Relation hull = SimpleHull(Rs, true, true);
+
+ //hull.simplify(2,4);
+
+ // check if actual loop is needed
+ std::pair<EQ_Handle, int> result = find_simplest_assignment(hull,
+ hull.set_var(level_));
+ if (result.second < INT_MAX) {
+ needLoop_ = false;
+
+ bounds_ = Relation(hull.n_set());
+ F_Exists *f_exists = bounds_.add_and()->add_exists();
+ F_And *f_root = f_exists->add_and();
+ std::map<Variable_ID, Variable_ID> exists_mapping;
+ EQ_Handle h = f_root->add_EQ();
+ for (Constr_Vars_Iter cvi(result.first); cvi; cvi++) {
+ Variable_ID v = cvi.curr_var();
+ switch (v->kind()) {
+ case Input_Var:
+ h.update_coef(bounds_.input_var(v->get_position()),
+ cvi.curr_coef());
+ break;
+ case Wildcard_Var: {
+ Variable_ID v2 = replicate_floor_definition(hull, v, bounds_,
+ f_exists, f_root, exists_mapping);
+ h.update_coef(v2, cvi.curr_coef());
+ break;
+ }
+ case Global_Var: {
+ Global_Var_ID g = v->get_global_var();
+ Variable_ID v2;
+ if (g->arity() == 0)
+ v2 = bounds_.get_local(g);
+ else
+ v2 = bounds_.get_local(g, v->function_of());
+ h.update_coef(v2, cvi.curr_coef());
+ break;
+ }
+ default:
+ assert(false);
+ }
+ }
+ h.update_const(result.first.get_const());
+ bounds_.simplify();
+ }
+ // loop iterates more than once, extract bounds now
+ else {
+ needLoop_ = true;
+
+ bounds_ = Relation(hull.n_set());
+ F_Exists *f_exists = bounds_.add_and()->add_exists();
+ F_And *f_root = f_exists->add_and();
+ std::map<Variable_ID, Variable_ID> exists_mapping;
+
+ Relation b = Gist(copy(hull), copy(known), 1);
+ bool has_unresolved_bound = false;
+
+ std::set<Variable_ID> excluded_floor_vars;
+ excluded_floor_vars.insert(b.set_var(level_));
+ for (GEQ_Iterator e(b.single_conjunct()->GEQs()); e; e++)
+ if ((*e).get_coef(b.set_var(level_)) != 0) {
+ bool is_bound = true;
+ for (Constr_Vars_Iter cvi(*e, true); cvi; cvi++) {
+ std::pair<bool, GEQ_Handle> result = find_floor_definition(
+ b, cvi.curr_var(), excluded_floor_vars);
+ if (!result.first) {
+ is_bound = false;
+ has_unresolved_bound = true;
+ break;
+ }
+ }
+
+ if (!is_bound)
+ continue;
+
+ GEQ_Handle h = f_root->add_GEQ();
+ for (Constr_Vars_Iter cvi(*e); cvi; cvi++) {
+ Variable_ID v = cvi.curr_var();
+ switch (v->kind()) {
+ case Input_Var:
+ h.update_coef(bounds_.input_var(v->get_position()),
+ cvi.curr_coef());
+ break;
+ case Wildcard_Var: {
+ Variable_ID v2 = replicate_floor_definition(b, v,
+ bounds_, f_exists, f_root, exists_mapping);
+ h.update_coef(v2, cvi.curr_coef());
+ break;
+ }
+ case Global_Var: {
+ Global_Var_ID g = v->get_global_var();
+ Variable_ID v2;
+ if (g->arity() == 0)
+ v2 = bounds_.get_local(g);
+ else
+ v2 = bounds_.get_local(g, v->function_of());
+ h.update_coef(v2, cvi.curr_coef());
+ break;
+ }
+ default:
+ assert(false);
+ }
+ }
+ h.update_const((*e).get_const());
+ }
+
+ if (has_unresolved_bound) {
+ b = Approximate(b);
+ b.simplify(2, 4);
+ //Simplification of Hull
+ hull = Approximate(hull);
+ hull.simplify(2, 4);
+ //end : Anand
+ for (GEQ_Iterator e(b.single_conjunct()->GEQs()); e; e++)
+ if ((*e).get_coef(b.set_var(level_)) != 0)
+ f_root->add_GEQ(*e);
+ }
+ bounds_.simplify();
+ hull.simplify(2,4);
+ // Since current SimpleHull does not support max() upper bound or min() lower bound,
+ // we have to forcefully split the loop when hull approximation does not return any bound.
+ bool has_lb = false;
+ bool has_ub = false;
+ for (GEQ_Iterator e = bounds_.single_conjunct()->GEQs(); e; e++) {
+ if ((*e).get_coef(bounds_.set_var(level_)) > 0)
+ has_lb = true;
+ else if ((*e).get_coef(bounds_.set_var(level_)) < 0)
+ has_ub = true;
+ if (has_lb && has_ub)
+ break;
+ }
+
+ if (!has_lb) {
+ for (int i = 0; i < Rs.size(); i++) {
+ Relation r = Approximate(copy(Rs[i]));
+ r.simplify(2, 4);
+ for (GEQ_Iterator e = r.single_conjunct()->GEQs(); e; e++)
+ if ((*e).get_coef(r.input_var(level_)) > 0) {
+ Relation r2 = Relation::True(num_level());
+ r2.and_with_GEQ(*e);
+ r2.simplify();
+ std::vector<Relation> restrictions(2);
+ restrictions[0] = Complement(copy(r2));
+ restrictions[0].simplify();
+ restrictions[1] = r2;
+ std::vector<CG_result *> clauses(2);
+ clauses[0] = this;
+ clauses[1] = this->clone();
+ CG_result *cgr = new CG_split(codegen_, active_,
+ restrictions, clauses);
+ cgr = cgr->recompute(active_, copy(known),
+ copy(restriction));
+ return cgr;
+ }
+ }
+ for (int i = 0; i < Rs.size(); i++) {
+ Relation r = Approximate(copy(Rs[i]));
+ r.simplify(2, 4);
+ for (EQ_Iterator e = r.single_conjunct()->EQs(); e; e++)
+ if ((*e).get_coef(r.input_var(level_)) != 0) {
+ Relation r2 = Relation::True(num_level());
+ r2.and_with_GEQ(*e);
+ r2.simplify();
+ std::vector<Relation> restrictions(2);
+ if ((*e).get_coef(r.input_var(level_)) > 0) {
+ restrictions[0] = Complement(copy(r2));
+ restrictions[0].simplify();
+ restrictions[1] = r2;
+ } else {
+ restrictions[0] = r2;
+ restrictions[1] = Complement(copy(r2));
+ restrictions[1].simplify();
+ }
+ std::vector<CG_result *> clauses(2);
+ clauses[0] = this;
+ clauses[1] = this->clone();
+ CG_result *cgr = new CG_split(codegen_, active_,
+ restrictions, clauses);
+ cgr = cgr->recompute(active_, copy(known),
+ copy(restriction));
+ return cgr;
+ }
+ }
+ } else if (!has_ub) {
+ for (int i = 0; i < Rs.size(); i++) {
+ Relation r = Approximate(copy(Rs[i]));
+ r.simplify(2, 4);
+ for (GEQ_Iterator e = r.single_conjunct()->GEQs(); e; e++)
+ if ((*e).get_coef(r.input_var(level_)) < 0) {
+ Relation r2 = Relation::True(num_level());
+ r2.and_with_GEQ(*e);
+ r2.simplify();
+ std::vector<Relation> restrictions(2);
+ restrictions[1] = Complement(copy(r2));
+ restrictions[1].simplify();
+ restrictions[0] = r2;
+ std::vector<CG_result *> clauses(2);
+ clauses[0] = this;
+ clauses[1] = this->clone();
+ CG_result *cgr = new CG_split(codegen_, active_,
+ restrictions, clauses);
+ cgr = cgr->recompute(active_, copy(known),
+ copy(restriction));
+ return cgr;
+ }
+ }
+ for (int i = 0; i < Rs.size(); i++) {
+ Relation r = Approximate(copy(Rs[i]));
+ r.simplify(2, 4);
+ for (EQ_Iterator e = r.single_conjunct()->EQs(); e; e++)
+ if ((*e).get_coef(r.input_var(level_)) != 0) {
+ Relation r2 = Relation::True(num_level());
+ r2.and_with_GEQ(*e);
+ r2.simplify();
+ std::vector<Relation> restrictions(2);
+ if ((*e).get_coef(r.input_var(level_)) > 0) {
+ restrictions[0] = Complement(copy(r2));
+ restrictions[0].simplify();
+ restrictions[1] = r2;
+ } else {
+ restrictions[0] = r2;
+ restrictions[1] = Complement(copy(r2));
+ restrictions[1].simplify();
+ }
+ std::vector<CG_result *> clauses(2);
+ clauses[0] = this;
+ clauses[1] = this->clone();
+ CG_result *cgr = new CG_split(codegen_, active_,
+ restrictions, clauses);
+ cgr = cgr->recompute(active_, copy(known),
+ copy(restriction));
+ return cgr;
+ }
+ }
+ }
+
+ if (!has_lb && !has_ub)
+ throw codegen_error(
+ "can't find any bound at loop level " + to_string(level_));
+ else if (!has_lb)
+ throw codegen_error(
+ "can't find lower bound at loop level "
+ + to_string(level_));
+ else if (!has_ub)
+ throw codegen_error(
+ "can't find upper bound at loop level "
+ + to_string(level_));
+ }
+ bounds_.copy_names(hull);
+ bounds_.setup_names();
+
+ // additional guard/stride condition extraction
+ if (needLoop_) {
+ Relation cur_known = Intersection(copy(bounds_), copy(known_));
+ cur_known.simplify();
+ hull = Gist(hull, copy(cur_known), 1);
+
+ std::pair<EQ_Handle, Variable_ID> result = find_simplest_stride(hull,
+ hull.set_var(level_));
+ if (result.second != NULL)
+ if (abs(result.first.get_coef(hull.set_var(level_))) == 1) {
+ F_Exists *f_exists = bounds_.and_with_and()->add_exists();
+ F_And *f_root = f_exists->add_and();
+ std::map<Variable_ID, Variable_ID> exists_mapping;
+ EQ_Handle h = f_root->add_EQ();
+ for (Constr_Vars_Iter cvi(result.first); cvi; cvi++) {
+ Variable_ID v = cvi.curr_var();
+ switch (v->kind()) {
+ case Input_Var:
+ h.update_coef(bounds_.input_var(v->get_position()),
+ cvi.curr_coef());
+ break;
+ case Wildcard_Var: {
+ Variable_ID v2;
+ if (v == result.second)
+ v2 = f_exists->declare();
+ else
+ v2 = replicate_floor_definition(hull, v, bounds_,
+ f_exists, f_root, exists_mapping);
+ h.update_coef(v2, cvi.curr_coef());
+ break;
+ }
+ case Global_Var: {
+ Global_Var_ID g = v->get_global_var();
+ Variable_ID v2;
+ if (g->arity() == 0)
+ v2 = bounds_.get_local(g);
+ else
+ v2 = bounds_.get_local(g, v->function_of());
+ h.update_coef(v2, cvi.curr_coef());
+ break;
+ }
+ default:
+ assert(false);
+ }
+ }
+ h.update_const(result.first.get_const());
+ } else {
+ // since gist is not powerful enough on modular constraints for now,
+ // make an educated guess
+ coef_t stride = abs(result.first.get_coef(result.second))
+ / gcd(abs(result.first.get_coef(result.second)),
+ abs(
+ result.first.get_coef(
+ hull.set_var(level_))));
+
+ Relation r1(hull.n_inp());
+ F_Exists *f_exists = r1.add_and()->add_exists();
+ F_And *f_root = f_exists->add_and();
+ std::map<Variable_ID, Variable_ID> exists_mapping;
+ EQ_Handle h = f_root->add_EQ();
+ for (Constr_Vars_Iter cvi(result.first); cvi; cvi++) {
+ Variable_ID v = cvi.curr_var();
+ switch (v->kind()) {
+ case Input_Var:
+ h.update_coef(r1.input_var(v->get_position()),
+ cvi.curr_coef());
+ break;
+ case Wildcard_Var: {
+ Variable_ID v2;
+ if (v == result.second)
+ v2 = f_exists->declare();
+ else
+ v2 = replicate_floor_definition(hull, v, r1,
+ f_exists, f_root, exists_mapping);
+ h.update_coef(v2, cvi.curr_coef());
+ break;
+ }
+ case Global_Var: {
+ Global_Var_ID g = v->get_global_var();
+ Variable_ID v2;
+ if (g->arity() == 0)
+ v2 = r1.get_local(g);
+ else
+ v2 = r1.get_local(g, v->function_of());
+ h.update_coef(v2, cvi.curr_coef());
+ break;
+ }
+ default:
+ assert(false);
+ }
+ }
+ h.update_const(result.first.get_const());
+ r1.simplify();
+
+ bool guess_success = false;
+ for (GEQ_Iterator e(bounds_.single_conjunct()->GEQs()); e; e++)
+ if ((*e).get_coef(bounds_.set_var(level_)) == 1) {
+ Relation r2(hull.n_inp());
+ F_Exists *f_exists = r2.add_and()->add_exists();
+ F_And *f_root = f_exists->add_and();
+ std::map<Variable_ID, Variable_ID> exists_mapping;
+ EQ_Handle h = f_root->add_EQ();
+ h.update_coef(f_exists->declare(), stride);
+ for (Constr_Vars_Iter cvi(*e); cvi; cvi++) {
+ Variable_ID v = cvi.curr_var();
+ switch (v->kind()) {
+ case Input_Var:
+ h.update_coef(r2.input_var(v->get_position()),
+ cvi.curr_coef());
+ break;
+ case Wildcard_Var: {
+ Variable_ID v2 = replicate_floor_definition(
+ hull, v, r2, f_exists, f_root,
+ exists_mapping);
+ h.update_coef(v2, cvi.curr_coef());
+ break;
+ }
+ case Global_Var: {
+ Global_Var_ID g = v->get_global_var();
+ Variable_ID v2;
+ if (g->arity() == 0)
+ v2 = r2.get_local(g);
+ else
+ v2 = r2.get_local(g, v->function_of());
+ h.update_coef(v2, cvi.curr_coef());
+ break;
+ }
+ default:
+ assert(false);
+ }
+ }
+ h.update_const((*e).get_const());
+ r2.simplify();
+
+ if (Gist(copy(r1),
+ Intersection(copy(cur_known), copy(r2)), 1).is_obvious_tautology()
+ && Gist(copy(r2),
+ Intersection(copy(cur_known), copy(r1)),
+ 1).is_obvious_tautology()) {
+ bounds_ = Intersection(bounds_, r2);
+ bounds_.simplify();
+ guess_success = true;
+ break;
+ }
+ }
+
+ // this is really a stride with non-unit coefficient for this loop variable
+ if (!guess_success) {
+ // TODO: for stride ax = b mod n it might be beneficial to
+ // generate modular linear equation solver code for
+ // runtime to get the starting position in printRepr,
+ // and stride would be n/gcd(|a|,n), thus this stride
+ // can be put into bounds_ too.
+ }
+
+ }
+
+ hull = Project(hull, hull.set_var(level_));
+ hull.simplify(2, 4);
+ guard_ = Gist(hull, Intersection(copy(bounds_), copy(known_)), 1);
+ }
+ // don't generate guard for non-actual loop, postpone it. otherwise
+ // redundant if-conditions might be generated since for-loop semantics
+ // includes implicit comparison checking. -- by chun 09/14/10
+ else
+ guard_ = Relation::True(num_level());
+ guard_.copy_names(bounds_);
+ guard_.setup_names();
+
+ //guard_.simplify();
+ // recursively down the AST
+ Relation new_known = Intersection(copy(known),
+ Intersection(copy(bounds_), copy(guard_)));
+ new_known.simplify(2, 4);
+ Relation new_restriction = Intersection(copy(restriction),
+ Intersection(copy(bounds_), copy(guard_)));
+ new_restriction.simplify(2, 4);
+ body_ = body_->recompute(active_, new_known, new_restriction);
+ if (body_ == NULL) {
+ delete this;
+ return NULL;
+ } else
+ return this;
+}
+
+int CG_loop::populateDepth() {
+ int depth = body_->populateDepth();
+ if (needLoop_)
+ depth_ = depth + 1;
+ else
+ depth_ = depth;
+ return depth_;
+}
+
+std::pair<CG_result *, Relation> CG_loop::liftOverhead(int depth,
+ bool propagate_up) {
+ if (depth_ > depth) {
+ assert(propagate_up == false);
+ std::pair<CG_result *, Relation> result = body_->liftOverhead(depth,
+ false);
+ body_ = result.first;
+ return std::make_pair(this, Relation::True(num_level()));
+ } else { // (depth_ <= depth)
+ if (propagate_up) {
+ Relation r = pick_one_guard(guard_, level_);
+ if (!r.is_obvious_tautology())
+ return std::make_pair(this, r);
+ }
+
+ std::pair<CG_result *, Relation> result;
+ if (propagate_up || needLoop_)
+ result = body_->liftOverhead(depth, true);
+ else
+ result = body_->liftOverhead(depth, false);
+ body_ = result.first;
+ if (result.second.is_obvious_tautology())
+ return std::make_pair(this, result.second);
+
+ // loop is an assignment, replace this loop variable in overhead condition
+ if (!needLoop_) {
+ result.second = Intersection(result.second, copy(bounds_));
+ result.second = Project(result.second,
+ result.second.set_var(level_));
+ result.second.simplify(2, 4);
+ }
+
+
+ int max_level = 0;
+ bool has_wildcard = false;
+ bool direction = true;
+ for (EQ_Iterator e(result.second.single_conjunct()->EQs()); e; e++)
+ if ((*e).has_wildcards()) {
+ if (has_wildcard)
+ assert(false);
+ else
+ has_wildcard = true;
+ for (Constr_Vars_Iter cvi(*e); cvi; cvi++)
+ if (cvi.curr_var()->kind() == Input_Var
+ && cvi.curr_var()->get_position() > max_level)
+ max_level = cvi.curr_var()->get_position();
+ } else
+ assert(false);
+
+ if (!has_wildcard) {
+ int num_simple_geq = 0;
+ for (GEQ_Iterator e(result.second.single_conjunct()->GEQs()); e;
+ e++)
+ if (!(*e).has_wildcards()) {
+ num_simple_geq++;
+ for (Constr_Vars_Iter cvi(*e); cvi; cvi++)
+ if (cvi.curr_var()->kind() == Input_Var
+ && cvi.curr_var()->get_position() > max_level) {
+ max_level = cvi.curr_var()->get_position();
+ direction = (cvi.curr_coef() < 0) ? true : false;
+ }
+ } else {
+ has_wildcard = true;
+ for (Constr_Vars_Iter cvi(*e); cvi; cvi++)
+ if (cvi.curr_var()->kind() == Input_Var
+ && cvi.curr_var()->get_position() > max_level) {
+ max_level = cvi.curr_var()->get_position();
+ }
+ }
+ assert(
+ (has_wildcard && num_simple_geq == 0) || (!has_wildcard && num_simple_geq == 1));
+ }
+
+ // check if this is the top loop level for splitting for this overhead
+ if (!propagate_up || (has_wildcard && max_level == level_ - 1)
+ || (!has_wildcard && max_level == level_)) {
+ std::vector<Relation> restrictions(2);
+ std::vector<CG_result *> clauses(2);
+ int saved_num_level = num_level();
+ if (has_wildcard || direction) {
+ restrictions[1] = Complement(copy(result.second));
+ restrictions[1].simplify();
+ clauses[1] = this->clone();
+ restrictions[0] = result.second;
+ clauses[0] = this;
+ } else {
+ restrictions[0] = Complement(copy(result.second));
+ restrictions[0].simplify();
+ clauses[0] = this->clone();
+ restrictions[1] = result.second;
+ clauses[1] = this;
+ }
+ CG_result *cgr = new CG_split(codegen_, active_, restrictions,
+ clauses);
+ CG_result *new_cgr = cgr->recompute(active_, copy(known_),
+ copy(restriction_));
+ new_cgr->populateDepth();
+ assert(new_cgr==cgr);
+ if (static_cast<CG_split *>(new_cgr)->clauses_.size() == 1)
+ // infinite recursion detected, bail out
+ return std::make_pair(new_cgr, Relation::True(saved_num_level));
+ else
+ return cgr->liftOverhead(depth, propagate_up);
+ } else
+ return std::make_pair(this, result.second);
+ }
+}
+
+Relation CG_loop::hoistGuard() {
+
+ Relation r = body_->hoistGuard();
+
+ // TODO: should bookkeep catched contraints in loop output as enforced and check if anything missing
+ // if (!Gist(copy(b), copy(enforced)).is_obvious_tautology()) {
+ // fprintf(stderr, "need to generate extra guard inside the loop\n");
+ // }
+
+ if (!needLoop_)
+ r = Intersection(r, copy(bounds_));
+ r = Project(r, r.set_var(level_));
+ r = Gist(r, copy(known_), 1);
+
+ Relation eliminate_existentials_r;
+ Relation eliminate_existentials_known;
+
+ eliminate_existentials_r = copy(r);
+ if (!r.is_obvious_tautology()) {
+ eliminate_existentials_r = Approximate(copy(r));
+ eliminate_existentials_r.simplify(2,4);
+ eliminate_existentials_known = Approximate(copy(known_));
+ eliminate_existentials_known.simplify(2,4);
+
+ eliminate_existentials_r = Gist( eliminate_existentials_r, eliminate_existentials_known, 1);
+ }
+
+
+ if (!eliminate_existentials_r.is_obvious_tautology()) {
+ // if (!r.is_obvious_tautology()) {
+ body_->removeGuard(r);
+ guard_ = Intersection(guard_, copy(r));
+ guard_.simplify();
+ }
+
+ return guard_;
+
+ // return ifList;
+ // }
+
+
+}
+
+void CG_loop::removeGuard(const Relation &guard) {
+ known_ = Intersection(known_, copy(guard));
+ known_.simplify();
+
+ guard_ = Gist(guard_, copy(known_), 1);
+ guard_.copy_names(known_);
+ guard_.setup_names();
+}
+
+CG_outputRepr *CG_loop::printRepr(int indent, CG_outputBuilder *ocg,
+ const std::vector<CG_outputRepr *> &stmts,
+ const std::vector<std::pair<CG_outputRepr *, int> > &assigned_on_the_fly) const {
+ return printRepr(true, indent, ocg, stmts, assigned_on_the_fly);
+}
+
+CG_outputRepr *CG_loop::printRepr(bool do_print_guard, int indent,
+ CG_outputBuilder *ocg, const std::vector<CG_outputRepr *> &stmts,
+ const std::vector<std::pair<CG_outputRepr *, int> > &assigned_on_the_fly) const {
+ CG_outputRepr *guardRepr;
+ if (do_print_guard)
+ guardRepr = output_guard(ocg, guard_, assigned_on_the_fly);
+ else
+ guardRepr = NULL;
+
+ Relation cur_known = Intersection(copy(known_), copy(guard_));
+ cur_known.simplify();
+ if (needLoop_) {
+
+ if (checkLoopLevel)
+ if (level_ == checkLoopLevel)
+ if (active_.get(stmtForLoopCheck))
+ fillInBounds = true;
+
+ CG_outputRepr *ctrlRepr = output_loop(ocg, bounds_, level_, cur_known,
+ assigned_on_the_fly);
+
+ fillInBounds = false;
+
+ CG_outputRepr *bodyRepr = body_->printRepr(
+ (guardRepr == NULL) ? indent + 1 : indent + 2, ocg, stmts,
+ assigned_on_the_fly);
+ CG_outputRepr * loopRepr;
+
+ if (guardRepr == NULL)
+ loopRepr = ocg->CreateLoop(indent, ctrlRepr, bodyRepr);
+ else
+ loopRepr = ocg->CreateLoop(indent + 1, ctrlRepr, bodyRepr);
+
+ if (!smtNonSplitLevels.empty()) {
+ bool blockLoop = false;
+ bool threadLoop = false;
+ bool sync = false;
+ int firstActiveStmt = -1;
+ for (int s = 0; s < active_.size(); s++) {
+ if (active_.get(s)) {
+ if (firstActiveStmt < 0)
+ firstActiveStmt = s;
+ //We assume smtNonSplitLevels is only used to mark the first of
+ //the block or thread loops to be reduced in CUDA-CHiLL. Here we
+ //place some comments to help with final code generation.
+ //int idx = smtNonSplitLevels[s].index(level_);
+
+ if (s < smtNonSplitLevels.size()) {
+ if (smtNonSplitLevels[s].size() > 0)
+ if (smtNonSplitLevels[s][0] == level_) {
+ blockLoop = true;
+ }
+ //Assume every stmt marked with a thread loop index also has a block loop idx
+ if (smtNonSplitLevels[s].size() > 1)
+ if (smtNonSplitLevels[s][1] == level_) {
+ threadLoop = true;
+ }
+ }
+ }
+ }
+ if (blockLoop && threadLoop) {
+ fprintf(stderr,
+ "Warning, have %d level more than once in smtNonSplitLevels\n",
+ level_);
+ threadLoop = false;
+ }
+ std::string preferredIdx;
+ if (loopIdxNames.size()
+ && (level_ / 2) - 1 < loopIdxNames[firstActiveStmt].size())
+ preferredIdx = loopIdxNames[firstActiveStmt][(level_ / 2) - 1];
+ for (int s = 0; s < active_.size(); s++) {
+ if (active_.get(s)) {
+ for (int i = 0; i < syncs.size(); i++) {
+ if (syncs[i].first == s
+ && strcmp(syncs[i].second.c_str(),
+ preferredIdx.c_str()) == 0) {
+ sync = true;
+ //printf("FOUND SYNC\n");
+ }
+
+ }
+ }
+
+ }
+ if (threadLoop || blockLoop || preferredIdx.length() != 0) {
+ char buf[1024];
+ std::string loop;
+ if (blockLoop)
+ loop = "blockLoop ";
+ if (threadLoop)
+ loop = "threadLoop ";
+ if (preferredIdx.length() != 0 && sync) {
+ sprintf(buf, "~cuda~ %spreferredIdx: %s sync", loop.c_str(),
+ preferredIdx.c_str());
+ } else if (preferredIdx.length() != 0) {
+ sprintf(buf, "~cuda~ %spreferredIdx: %s", loop.c_str(),
+ preferredIdx.c_str());
+ } else {
+ sprintf(buf, "~cuda~ %s", loop.c_str());
+ }
+
+
+ loopRepr = ocg->CreateAttribute(loopRepr, buf);
+ }
+
+ }
+ if (guardRepr == NULL)
+ return loopRepr;
+ else
+ return ocg->CreateIf(indent, guardRepr, loopRepr, NULL);
+ } else {
+ std::pair<CG_outputRepr *, std::pair<CG_outputRepr *, int> > result =
+ output_assignment(ocg, bounds_, level_, cur_known,
+ assigned_on_the_fly);
+ guardRepr = ocg->CreateAnd(guardRepr, result.first);
+
+ if (result.second.second < CodeGen::var_substitution_threshold) {
+ std::vector<std::pair<CG_outputRepr *, int> > atof =
+ assigned_on_the_fly;
+ atof[level_ - 1] = result.second;
+ CG_outputRepr *bodyRepr = body_->printRepr(
+ (guardRepr == NULL) ? indent : indent + 1, ocg, stmts,
+ atof);
+ delete atof[level_ - 1].first;
+ if (guardRepr == NULL)
+ return bodyRepr;
+ else
+ return ocg->CreateIf(indent, guardRepr, bodyRepr, NULL);
+ } else {
+ CG_outputRepr *assignRepr = ocg->CreateAssignment(
+ (guardRepr == NULL) ? indent : indent + 1,
+ output_ident(ocg, bounds_,
+ const_cast<CG_loop *>(this)->bounds_.set_var(
+ level_), assigned_on_the_fly),
+ result.second.first);
+ CG_outputRepr *bodyRepr = body_->printRepr(
+ (guardRepr == NULL) ? indent : indent + 1, ocg, stmts,
+ assigned_on_the_fly);
+ if (guardRepr == NULL)
+ return ocg->StmtListAppend(assignRepr, bodyRepr);
+ else
+ return ocg->CreateIf(indent, guardRepr,
+ ocg->StmtListAppend(assignRepr, bodyRepr), NULL);
+ }
+
+ }
+}
+
+CG_result *CG_loop::clone() const {
+ return new CG_loop(codegen_, active_, level_, body_->clone());
+}
+
+void CG_loop::dump(int indent) const {
+ std::string prefix;
+ for (int i = 0; i < indent; i++)
+ prefix += " ";
+ std::cout << prefix << "LOOP (level " << level_ << "): " << active_
+ << std::endl;
+ std::cout << prefix << "known: ";
+ const_cast<CG_loop *>(this)->known_.print();
+ std::cout << prefix << "restriction: ";
+ const_cast<CG_loop *>(this)->restriction_.print();
+ std::cout << prefix << "bounds: ";
+ const_cast<CG_loop *>(this)->bounds_.print();
+ std::cout << prefix << "guard: ";
+ const_cast<CG_loop *>(this)->guard_.print();
+ body_->dump(indent + 1);
+}
+
+//-----------------------------------------------------------------------------
+// Class: CG_leaf
+//-----------------------------------------------------------------------------
+
+CG_result* CG_leaf::recompute(const BoolSet<> &parent_active,
+ const Relation &known, const Relation &restriction) {
+ active_ &= parent_active;
+ known_ = copy(known);
+
+ guards_.clear();
+ for (BoolSet<>::iterator i = active_.begin(); i != active_.end(); i++) {
+ Relation r = Intersection(
+ copy(codegen_->projected_IS_[num_level() - 1][*i]),
+ copy(restriction));
+ r.simplify(2, 4);
+ if (!r.is_upper_bound_satisfiable())
+ active_.unset(*i);
+ else {
+ r = Gist(r, copy(known), 1);
+ if (!r.is_obvious_tautology()) {
+ guards_[*i] = r;
+ guards_[*i].copy_names(known);
+ guards_[*i].setup_names();
+ }
+ }
+ }
+
+
+ if (active_.empty()) {
+ delete this;
+ return NULL;
+ } else
+ return this;
+}
+
+std::pair<CG_result *, Relation> CG_leaf::liftOverhead(int depth, bool) {
+ if (depth == 0)
+ return std::make_pair(this, Relation::True(num_level()));
+
+ for (std::map<int, Relation>::iterator i = guards_.begin();
+ i != guards_.end(); i++) {
+ Relation r = pick_one_guard(i->second);
+ if (!r.is_obvious_tautology()) {
+ bool has_wildcard = false;
+ int max_level = 0;
+ for (EQ_Iterator e(r.single_conjunct()->EQs()); e; e++) {
+ if ((*e).has_wildcards())
+ has_wildcard = true;
+ for (Constr_Vars_Iter cvi(*e); cvi; cvi++)
+ if (cvi.curr_var()->kind() == Input_Var
+ && cvi.curr_var()->get_position() > max_level)
+ max_level = cvi.curr_var()->get_position();
+ }
+ for (GEQ_Iterator e(r.single_conjunct()->GEQs()); e; e++) {
+ if ((*e).has_wildcards())
+ has_wildcard = true;
+ for (Constr_Vars_Iter cvi(*e); cvi; cvi++)
+ if (cvi.curr_var()->kind() == Input_Var
+ && cvi.curr_var()->get_position() > max_level)
+ max_level = cvi.curr_var()->get_position();
+ }
+
+ if (!(has_wildcard && max_level == codegen_->num_level()))
+ return std::make_pair(this, r);
+ }
+ }
+
+ return std::make_pair(this, Relation::True(num_level()));
+}
+
+Relation CG_leaf::hoistGuard() {
+ std::vector<Relation> guards;
+ for (BoolSet<>::iterator i = active_.begin(); i != active_.end(); i++) {
+ std::map<int, Relation>::iterator j = guards_.find(*i);
+ if (j == guards_.end()) {
+ Relation r = Relation::True(num_level());
+ r.copy_names(known_);
+ r.setup_names();
+ return r;
+ } else {
+ guards.push_back(j->second);
+ }
+ }
+
+ return SimpleHull(guards, true, true);
+}
+
+void CG_leaf::removeGuard(const Relation &guard) {
+ known_ = Intersection(known_, copy(guard));
+ known_.simplify();
+
+ std::map<int, Relation>::iterator i = guards_.begin();
+ while (i != guards_.end()) {
+ i->second = Gist(i->second, copy(known_), 1);
+ if (i->second.is_obvious_tautology())
+ guards_.erase(i++);
+ else
+ ++i;
+ }
+}
+
+CG_outputRepr *CG_leaf::printRepr(int indent, CG_outputBuilder *ocg,
+ const std::vector<CG_outputRepr *> &stmts,
+ const std::vector<std::pair<CG_outputRepr *, int> > &assigned_on_the_fly) const {
+ return leaf_print_repr(active_, guards_, NULL, known_, indent, ocg,
+ codegen_->remap_, codegen_->xforms_, stmts, assigned_on_the_fly);
+}
+
+CG_result *CG_leaf::clone() const {
+ return new CG_leaf(codegen_, active_);
+}
+
+void CG_leaf::dump(int indent) const {
+ std::string prefix;
+ for (int i = 0; i < indent; i++)
+ prefix += " ";
+ std::cout << prefix << "LEAF: " << active_ << std::endl;
+ std::cout << prefix << "known: ";
+ const_cast<CG_leaf *>(this)->known_.print();
+ for (std::map<int, Relation>::const_iterator i = guards_.begin();
+ i != guards_.end(); i++) {
+ std::cout << prefix << "guard #" << i->first << ":";
+ const_cast<Relation &>(i->second).print();
+ }
+}
+
+}
diff --git a/omega/code_gen/src/CG_roseBuilder.cc b/omega/code_gen/src/CG_roseBuilder.cc
new file mode 100644
index 0000000..eb16830
--- /dev/null
+++ b/omega/code_gen/src/CG_roseBuilder.cc
@@ -0,0 +1,1533 @@
+/*****************************************************************************
+ Copyright (C) 2008 University of Southern California
+ Copyright (C) 2009-2010 University of Utah
+ All Rights Reserved.
+
+ Purpose:
+ generate suif code for omega
+
+ Notes:
+
+ History:
+ 02/01/06 created by Chun Chen
+ *****************************************************************************/
+
+#include <stack>
+#include <code_gen/CG_roseBuilder.h>
+#include <string>
+
+struct ir_error: public std::runtime_error {
+ ir_error(const std::string &msg) :
+ std::runtime_error(msg) {
+ }
+};
+
+using namespace SageBuilder;
+using namespace SageInterface;
+using namespace OmpSupport;
+
+namespace omega {
+
+//-----------------------------------------------------------------------------
+// make suif initilization happy
+//-----------------------------------------------------------------------------
+char *k_ocg_comment;
+
+// void __attribute__ ((constructor)) my_init(void) {
+// ANNOTE(k_ocg_comment, "omega_comment", TRUE);
+// }
+
+/*
+ const char *libcode_gen_ver_string = "";
+ const char *libcode_gen_who_string = "";
+ const char *libcode_gen_suif_string = "";
+
+ void init_code_gen(int&, char* []) {
+ ANNOTE(k_ocg_comment, "omega_comment", TRUE);
+ }
+
+ void exit_code_gen(void) {
+ }
+ */
+CG_roseBuilder::CG_roseBuilder(int is_fortran, SgGlobal* global, SgGlobal* firstScope,
+ SgSymbolTable* symtab, SgSymbolTable* symtab2, SgNode* root) :
+ isFortran(is_fortran), global_(global), global_scope(firstScope), symtab_(symtab), symtab2_(
+ symtab2), root_(root) {
+}
+
+
+CG_roseBuilder::~CG_roseBuilder() {
+}
+
+// Manu:: returns true if input is in fortran, else returns false
+bool CG_roseBuilder::isInputFortran() const{
+ if (isFortran)
+ return true;
+ else
+ return false;
+}
+
+//-----------------------------------------------------------------------------
+// place holder generation
+//-----------------------------------------------------------------------------
+CG_outputRepr* CG_roseBuilder::CreateSubstitutedStmt(int, CG_outputRepr *stmt,
+ const std::vector<std::string> &vars, std::vector<CG_outputRepr*> &subs) const {
+
+ SgStatementPtrList* list = static_cast<CG_roseRepr *>(stmt)->list_;
+ SgNode *tnl;
+ SgStatement* statement;
+ if (list != NULL) {
+ //statement = *((*list).begin());
+ //tnl = isSgNode(statement);
+ delete stmt;
+ for (int i = 0; i < subs.size(); i++) {
+ if (subs[i] == NULL)
+ continue;
+
+ CG_roseRepr *repr = static_cast<CG_roseRepr*>(subs[i]);
+ SgExpression* op = repr->op_;
+
+ for (SgStatementPtrList::iterator it = (*list).begin();
+ it != (*list).end(); it++) {
+ statement = (*it);
+ tnl = isSgNode(statement);
+
+ // std::string master = tnl->unparseToString();
+
+ int j;
+ int not_in_symtab_;
+
+ not_in_symtab_ = 0;
+
+ SgVariableSymbol *vs = symtab_->find_variable(
+ SgName(vars[i].c_str()));
+
+ if (vs == NULL) {
+
+ not_in_symtab_ = 1;
+
+ vs = symtab2_->find_variable(SgName(vars[i].c_str()));
+ }
+ if (vs != NULL) {
+ //std::string x = vars[i].c_str() ;
+ //std::string y = isSgNode(op)->unparseToString();
+
+ std::vector<SgVarRefExp *> array = substitute(tnl,
+ (const SgVariableSymbol*) vs, op, root_);
+ for (std::vector<SgVarRefExp *>::iterator it =
+ array.begin(); it != array.end(); it++) {
+
+ // std::string z = isSgNode(array[j])->unparseToString();
+ if (isSgVarRefExp(op)) {
+ if (strcmp(
+ isSgVarRefExp(op)->get_symbol()->get_name().getString().c_str(),
+ vs->get_name().getString().c_str())) {
+
+ (*it)->set_symbol(
+ isSgVarRefExp(op)->get_symbol());
+ // std::string z = isSgNode(array[j])->unparseToString();
+
+ // isSgBinaryOp(array[j]->get_parent())->replace_expression(array[j], op);
+
+ }
+ } else if (isSgExpression(op)) {
+
+ if (isSgBinaryOp((*it)->get_parent()))
+ isSgBinaryOp((*it)->get_parent())->replace_expression(
+ *it, op);
+ else if (isSgUnaryOp((*it)->get_parent()))
+ isSgUnaryOp((*it)->get_parent())->replace_expression(
+ *it, op);
+ else if (isSgExprListExp((*it)->get_parent()))
+ isSgExprListExp((*it)->get_parent())->replace_expression(
+ *it, op);
+ else
+ throw ir_error("unrecognized expression type");
+ }
+
+ }
+ /* std::vector<SgVarRefExp *> array2 = substitute (tnl,(const SgVariableSymbol*) vs, op, root_);
+ if(array2.size() != 0)
+ throw ir_error("variable replacement unsuccessful");
+ */
+ }
+
+ }
+
+ delete repr;
+ subs[i] = NULL;
+
+ if (subs[i] != NULL)
+ throw ir_error("not freed properly");
+
+ }
+
+ return new CG_roseRepr(list);
+
+ } else {
+ tnl = static_cast<CG_roseRepr *>(stmt)->tnl_;
+ //std::string master = tnl->unparseToString();
+
+ if (tnl == NULL)
+ throw ir_error("both list and tnl are null!!");
+
+ delete stmt;
+ int j;
+ int not_in_symtab_;
+ for (int i = 0; i < subs.size(); i++) {
+ if (subs[i] == NULL)
+ continue;
+ not_in_symtab_ = 0;
+
+
+ CG_roseRepr *repr = static_cast<CG_roseRepr*>(subs[i]);
+ SgExpression* op = repr->op_;
+ delete repr;
+ subs[i] = NULL;
+
+ SgVariableSymbol *vs = symtab_->find_variable(
+ SgName(vars[i].c_str()));
+
+ if (vs == NULL) {
+
+ not_in_symtab_ = 1;
+
+ vs = symtab2_->find_variable(SgName(vars[i].c_str()));
+ }
+ if (vs != NULL) {
+ //std::string x = vars[i].c_str() ;
+ //std::string y = isSgNode(op)->unparseToString();
+ std::vector<SgVarRefExp *> array = substitute(tnl, vs, op,
+ root_);
+
+ if (not_in_symtab_ && isSgVarRefExp(op)) {
+ if (strcmp(
+ isSgVarRefExp(op)->get_symbol()->get_name().getString().c_str(),
+ vs->get_name().getString().c_str())) {
+ // symtab2_->remove(vs);
+ }
+ }
+ /* else if(not_in_symtab_ && isSgVarRefExp(isSgAddOp(op)->get_lhs_operand())){
+ if(strcmp(isSgVarRefExp(isSgAddOp(op)->get_lhs_operand())->get_symbol()->get_name().getString().c_str(),\
+ vs->get_name().getString().c_str())){
+ symtab2_->remove(vs);
+ }
+ }*/
+ //symtab2_->remove(vs);
+ for (std::vector<SgVarRefExp *>::iterator j = array.begin();
+ j != array.end(); j++) {
+ // std::string z = isSgNode(array[j])->unparseToString();
+
+ if (isSgVarRefExp(op)) {
+ if (strcmp(
+ isSgVarRefExp(op)->get_symbol()->get_name().getString().c_str(),
+ vs->get_name().getString().c_str())) {
+ (*j)->set_symbol(isSgVarRefExp(op)->get_symbol());
+ //isSgBinaryOp(array[j]->get_parent())->replace_expression(array[j], op);
+ // std::string z = isSgNode(array[j])->unparseToString();
+
+ }
+ } else if (isSgExpression(op)) {
+
+ if (isSgBinaryOp((*j)->get_parent()))
+ isSgBinaryOp((*j)->get_parent())->replace_expression(
+ *j, op);
+ else if (isSgUnaryOp((*j)->get_parent()))
+ isSgUnaryOp((*j)->get_parent())->replace_expression(
+ *j, op);
+ else if (isSgExprListExp((*j)->get_parent())) { // Manu:: fortran indices are stored this way
+ isSgExprListExp((*j)->get_parent())->replace_expression(*j, op);
+ }
+ else
+ throw ir_error("unrecognized expression type");
+ /* if(strcmp(isSgVarRefExp(isSgAddOp(op)->get_lhs_operand())->get_symbol()->get_name().getString().c_str(),\
+ vs->get_name().getString().c_str() )){
+ array[j]->set_symbol(isSgVarRefExp(isSgAddOp(op)->get_lhs_operand())->get_symbol());
+
+ */
+
+ }
+
+ }
+ /* std::vector<SgVarRefExp *> array2 = substitute (tnl,(const SgVariableSymbol*) vs, op, root_);
+ if(array2.size() != 0)
+ throw ir_error("variable replacement unsuccessful");
+ */
+ }
+ /* SgExpression* exp = NULL;
+
+ if(stmt1 = isSgStatement(tnl)){
+ if (SgExprStatement* expr_stmt = isSgExprStatement(stmt1))
+ exp = expr_stmt->get_expression();
+ else if( block = isSgBasicBlock(tnl)){
+ SgStatementPtrList& stmts = block->get_statements();
+ SgExpression* exp2;
+ for(int i =0; i < stmts.size(); i++){
+ if(isSgExprStatement(stmts[i])){
+ exp2 = isSgExprStatement(stmts[i])->get_expression();
+ if(exp2 != NULL){
+
+ if(isSgBinaryOp(exp2)) {
+ substitute(isSgBinaryOp(exp2)->get_lhs_operand(), vs, op, root_, exp2);
+ substitute(isSgBinaryOp(exp2)->get_rhs_operand(), vs, op, root_, exp2);
+ }
+ else if (isSgUnaryOp(exp2))
+ substitute(isSgUnaryOp(exp2)->get_operand(), vs, op, root_, exp2);
+
+
+ }//end if
+
+ }//end if
+ }//end for
+
+ }//end else
+ else if(SgForStatement* for_stmt = isSgForStatement(tnl)){
+ SgForStatement* temp = for_stmt;
+ while(isSgForStatement(temp)){
+
+
+
+ }
+
+
+
+
+ }
+
+
+ }//end if
+ else
+ exp = isSgExpression(tnl);
+
+ if(exp != NULL){
+ if(isSgBinaryOp(exp)) {
+ substitute(isSgBinaryOp(exp)->get_lhs_operand(), vs, op, root_, exp);
+ substitute(isSgBinaryOp(exp)->get_rhs_operand(), vs, op, root_, exp);
+ }
+ else if (isSgUnaryOp(exp))
+ substitute(isSgUnaryOp(exp)->get_operand(), vs, op, root_, exp);
+
+ }
+ // if (op.is_instr())
+ // delete op.instr();
+ }
+ */
+ }
+ return new CG_roseRepr(tnl);
+ }
+
+}
+
+//-----------------------------------------------------------------------------
+// assignment generation
+//-----------------------------------------------------------------------------
+CG_outputRepr* CG_roseBuilder::CreateAssignment(int, CG_outputRepr *lhs,
+ CG_outputRepr *rhs) const {
+ if (lhs == NULL || rhs == NULL) {
+ fprintf(stderr, "Code generation: Missing lhs or rhs\n");
+ return NULL;
+ }
+
+ SgExpression* src = static_cast<CG_roseRepr*>(rhs)->op_;
+ SgExpression* dst = static_cast<CG_roseRepr*>(lhs)->op_;
+
+ SgExprStatement* ins = buildAssignStatement(dst, src);
+ src->set_parent(ins);
+ dst->set_parent(ins);
+
+ SgStatementPtrList* new_list = new SgStatementPtrList;
+
+ (*new_list).push_back(isSgStatement(ins));
+
+ delete lhs;
+ delete rhs;
+
+ return new CG_roseRepr(new_list);
+
+}
+
+//-----------------------------------------------------------------------------
+// function invocation generation
+//-----------------------------------------------------------------------------
+CG_outputRepr* CG_roseBuilder::CreateInvoke(const std::string &fname,
+ std::vector<CG_outputRepr *> &list) const {
+
+ // Manu:: debug
+// std::cout << "--------- CreateInvoke --------- \n";
+
+ if (fname == std::string("max") || fname == std::string("min")) {
+ if (list.size() == 0) {
+ return NULL;
+ } else if (list.size() == 1) {
+ return list[0];
+ } else {
+ int last = list.size() - 1;
+ SgExpression* op2 = static_cast<CG_roseRepr*>(list[last])->op_;
+ delete list[last];
+ list.erase(list.end()-1);
+ CG_roseRepr *repr = static_cast<CG_roseRepr*>(CreateInvoke(fname,
+ list));
+ SgExpression* op1 = repr->op_;
+
+
+ SgExpression *ins;
+ SgExprListExp* arg_list = buildExprListExp();
+ appendExpression(arg_list, op1);
+ appendExpression(arg_list, op2);
+ SgVarRefExp* opaque_var;
+
+
+ if (fname == std::string("max")) {
+ opaque_var = buildOpaqueVarRefExp("__rose_gt", global_);
+ ins = isSgExpression(buildFunctionCallExp(opaque_var, arg_list));
+
+ // Manu:: fortran support
+ if (isInputFortran()) {
+ SgName fName("merge");
+ SgTypeInt *retType = buildIntType();
+
+ SgExpression *cond = static_cast<CG_roseRepr *>(CreateLE(new CG_roseRepr(op2), new CG_roseRepr(op1)))->op_;
+ appendExpression(arg_list, cond);
+ ins = isSgExpression(buildFunctionCallExp(fName, retType, arg_list, global_));
+// std::cout << "--------- CreateInvoke:: " << isSgNode(ins)->unparseToString().c_str() << "\n";
+ }
+
+ } else {
+ opaque_var = buildOpaqueVarRefExp("__rose_lt", global_);
+ ins = isSgExpression(buildFunctionCallExp(opaque_var, arg_list));
+
+ // Manu:: fortran support
+ if (isInputFortran()) {
+ SgName fName("merge");
+ SgTypeInt *retType = buildIntType();
+
+ SgExpression *cond = static_cast<CG_roseRepr *>(CreateLE(new CG_roseRepr(op1), new CG_roseRepr(op2)))->op_;
+ appendExpression(arg_list, cond);
+ ins = isSgExpression(buildFunctionCallExp(fName, retType, arg_list, global_));
+// std::cout << "--------- CreateInvoke:: " << isSgNode(ins)->unparseToString().c_str() << "\n";
+ }
+
+ }
+
+ repr->op_ = ins;
+ return repr;
+ }
+ } else {
+ fprintf(stderr,
+ "Code generation: invoke function io_call not implemented\n");
+ return NULL;
+ }
+
+}
+
+//-----------------------------------------------------------------------------
+// comment generation
+//-----------------------------------------------------------------------------
+CG_outputRepr* CG_roseBuilder::CreateComment(int,
+ const std::string &commentText) const {
+ if (commentText == std::string("")) {
+ return NULL;
+ }
+
+ SgLocatedNode *tnl = new SgLocatedNode();
+ buildComment(tnl, "//omega_comment: " + commentText);
+
+ return new CG_roseRepr(isSgNode(tnl));
+
+}
+
+//-----------------------------------------------------------------------------
+// if stmt gen operations
+//-----------------------------------------------------------------------------
+CG_outputRepr* CG_roseBuilder::CreateIf(int, CG_outputRepr *guardList,
+ CG_outputRepr *true_stmtList, CG_outputRepr *false_stmtList) const {
+
+ // static int if_counter = 1;
+ // std::string s = std::string("omegaif_")+to_string(if_counter++);
+ // SgLabelStatement* label =buildLabelStatement(SgName(const_cast<char *>(s.c_str())));
+
+ if (true_stmtList == NULL && false_stmtList == NULL) {
+ delete guardList;
+ return NULL;
+ } else if (guardList == NULL) {
+ return StmtListAppend(true_stmtList, false_stmtList);
+ }
+
+ SgExpression* header = static_cast<CG_roseRepr*>(guardList)->op_;
+
+ SgStatementPtrList *then_part1, *else_part1;
+ SgStatement* then_part;
+ SgStatement* else_part;
+ SgBasicBlock* then_part2;
+ SgBasicBlock* else_part2;
+ if (true_stmtList != NULL) {
+ then_part1 = static_cast<CG_roseRepr*>(true_stmtList)->list_;
+ if (then_part1 != NULL) {
+ then_part = *((*then_part1).begin());
+
+ if ((*then_part1).size() > 1) {
+ then_part2 = buildBasicBlock();
+ for (SgStatementPtrList::iterator it = (*then_part1).begin();
+ it != (*then_part1).end(); it++) {
+ then_part2->append_statement(*it);
+
+ }
+ then_part = isSgStatement(then_part2);
+
+ }
+ } else {
+ // Manu:: fortran support (if part)
+ if (isInputFortran()) {
+ then_part2 = buildBasicBlock();
+ then_part2->append_statement(isSgStatement(static_cast<CG_roseRepr*>(true_stmtList)->tnl_));
+ then_part = isSgStatement(then_part2);
+ } else
+ then_part = isSgStatement(static_cast<CG_roseRepr*>(true_stmtList)->tnl_);
+ }
+ } else {
+ then_part = NULL;
+ }
+ if (false_stmtList != NULL) {
+ else_part1 = static_cast<CG_roseRepr*>(false_stmtList)->list_;
+ if (else_part1 != NULL) {
+ else_part = *((*else_part1).begin());
+ if ((*else_part1).size() > 1) {
+ else_part2 = buildBasicBlock();
+ for (SgStatementPtrList::iterator it2 = (*else_part1).begin();
+ it2 != (*else_part1).end(); it2++) {
+ else_part2->append_statement(*it2);
+
+ }
+ else_part = isSgStatement(else_part2);
+
+ }
+ } else {
+ // Manu:: fortran support (if part)
+ if (isInputFortran()) {
+ else_part2 = buildBasicBlock();
+ else_part2->append_statement(isSgStatement(static_cast<CG_roseRepr*>(false_stmtList)->tnl_));
+ else_part = isSgStatement(else_part2);
+ } else
+ else_part = isSgStatement(static_cast<CG_roseRepr*>(false_stmtList)->tnl_);
+ }
+ } else {
+ else_part = NULL;
+ }
+
+ SgIfStmt* ti = buildIfStmt(header, isSgStatement(then_part),
+ isSgStatement(else_part));
+
+// label->set_scope(ti);//may have to be shifted to after symbol table insertion
+// SgLabelSymbol* if_label = isSgLabelSymbol(label->get_symbol_from_symbol_table());
+
+// symtab_->insert( SgName(const_cast<char *>(s.c_str())) , isSgSymbol(if_label));
+
+ delete guardList;
+ delete true_stmtList;
+ delete false_stmtList;
+
+ return new CG_roseRepr(isSgNode(ti));
+
+}
+
+//-----------------------------------------------------------------------------
+// inductive variable generation, to be used in CreateLoop as control
+//-----------------------------------------------------------------------------
+CG_outputRepr* CG_roseBuilder::CreateInductive(CG_outputRepr *index,
+ CG_outputRepr *lower, CG_outputRepr *upper, CG_outputRepr *step) const {
+
+ if (index == NULL || lower == NULL || upper == NULL) {
+ fprintf(stderr,
+ "Code generation: something wrong in CreateInductive\n");
+ return NULL;
+ }
+
+ if (step == NULL)
+ step = new CG_roseRepr(isSgExpression(buildIntVal(1)));
+
+ SgVarRefExp *index_sym = isSgVarRefExp(
+ static_cast<CG_roseRepr*>(index)->op_);
+ SgExpression* lower_bound = static_cast<CG_roseRepr*>(lower)->op_;
+ SgExpression* upper_bound = static_cast<CG_roseRepr*>(upper)->op_;
+ SgExpression* step_size = static_cast<CG_roseRepr*>(step)->op_;
+
+ /* label_sym *contLabel = new label_sym("");
+ label_sym *brkLabel = new label_sym(""); may not be required on rose?!
+ */
+
+ SgStatement* for_init_stmt = buildAssignStatement(index_sym, lower_bound);
+ SgLessOrEqualOp* cond = buildLessOrEqualOp(index_sym, upper_bound);
+ SgExprStatement* test = buildExprStatement(cond);
+ SgPlusAssignOp* increment = buildPlusAssignOp(index_sym, step_size);
+ SgForStatement *for_stmt = buildForStatement(for_init_stmt,
+ isSgStatement(test), increment, NULL);
+
+ delete index;
+ delete lower;
+ delete upper;
+ delete step;
+
+
+ // Manu
+ if (isInputFortran()) {
+ // std::cout << "CG_roseBuilder:: need to construct a fortran do statement\n";
+ SgFortranDo * forStmt=new SgFortranDo(Sg_File_Info::generateDefaultFileInfoForTransformationNode());
+ forStmt->set_has_end_statement(true);
+ forStmt->set_bound(upper_bound);
+ forStmt->set_increment(step_size);
+ forStmt->set_initialization(isSgExprStatement(for_init_stmt)->get_expression());
+ return new CG_roseRepr(isSgNode(forStmt));
+ } else {
+// std::cout << "CG_roseBuilder:: for statement is fine\n";
+
+ return new CG_roseRepr(isSgNode(for_stmt));
+
+ }
+
+}
+
+//-----------------------------------------------------------------------------
+// Attribute Creation
+//-----------------------------------------------------------------------------
+CG_outputRepr* CG_roseBuilder::CreateAttribute(CG_outputRepr *control,
+ const std::string &commentText) const {
+
+ SgNode *tnl = static_cast<CG_roseRepr*>(control)->tnl_;
+
+ tnl->setAttribute("omega_comment", new AstTextAttribute(commentText));
+
+ return static_cast<CG_roseRepr*>(control);
+
+}
+
+//-----------------------------------------------------------------------------
+// Pragma Attribute
+//-----------------------------------------------------------------------------
+CG_outputRepr* CG_roseBuilder::CreatePragmaAttribute(CG_outputRepr *stmt, int looplevel, const std::string &pragmaText) const {
+ SgNode *tnl = static_cast<CG_roseRepr*>(stmt)->tnl_;
+ CodeInsertionAttribute* attr = NULL;
+ if (!tnl->attributeExists("code_insertion")) {
+ attr = new CodeInsertionAttribute();
+ tnl->setAttribute("code_insertion", attr);
+ }
+ else {
+ attr = static_cast<CodeInsertionAttribute*>(tnl->getAttribute("code_insertion"));
+ }
+ attr->add(new PragmaInsertion(looplevel, pragmaText));
+ return stmt;
+}
+
+//-----------------------------------------------------------------------------
+// Prefetch Attribute
+//-----------------------------------------------------------------------------
+CG_outputRepr* CG_roseBuilder::CreatePrefetchAttribute(CG_outputRepr* stmt, int looplevel, const std::string &arrName, int hint) const {
+ SgNode *tnl = static_cast<CG_roseRepr*>(stmt)->tnl_;
+ CodeInsertionAttribute *attr = getOrCreateCodeInsertionAttribute(tnl);
+ attr->add(new MMPrefetchInsertion(looplevel, arrName, hint));
+}
+
+//-----------------------------------------------------------------------------
+// loop stmt generation
+//-----------------------------------------------------------------------------
+CG_outputRepr* CG_roseBuilder::CreateLoop(int, CG_outputRepr *control,
+ CG_outputRepr *stmtList) const {
+ if (stmtList == NULL) {
+ delete control;
+ return NULL;
+ } else if (control == NULL) {
+ fprintf(stderr, "Code generation: no inductive for this loop\n");
+ return stmtList;
+ }
+
+ SgNode *tnl = static_cast<CG_roseRepr*>(control)->tnl_;
+ SgForStatement *tf = isSgForStatement(tnl);
+
+ // Manu :: fortran support
+ SgFortranDo *tfd = NULL;
+ if (isInputFortran()) {
+ tfd = isSgFortranDo(tnl);
+ }
+ // Manu:: debug
+/* if (!tf) {
+ std::cout << "CreateLoop:: Not a for loop\n";
+ if (isSgFortranDo(tnl))
+ std::cout << "CreateLoop:: It is a fortran do loop\n";
+ }
+*/
+
+ SgStatementPtrList * body = static_cast<CG_roseRepr*>(stmtList)->list_;
+
+ if (body != NULL) {
+ if (!((*body).empty())) {
+ if ((*body).size() == 1) {
+ // if(isSgBasicBlock(*((*body).begin()))){
+ if (!isInputFortran()) { // Manu:: added if-else for fortran support
+ tf->set_loop_body(*((*body).begin()));
+ (*((*body).begin()))->set_parent(tf);
+ } else {
+ SgBasicBlock* bb1 = buildBasicBlock();
+ bb1->set_parent(tfd);
+ bb1->append_statement(*((*body).begin()));
+ tfd->set_body(bb1);
+ }
+ // }
+ /* else{
+ SgBasicBlock* bb1 = buildBasicBlock();
+ bb1->set_parent(tf);
+ bb1->append_statement(*((*body).begin()));
+ tf->set_loop_body(bb1);
+
+ }*/
+ } else {
+ // Manu:: support for fortran label (do - continue)
+ SgName *sname = NULL;
+
+ SgBasicBlock* bb = buildBasicBlock();
+ if (!isInputFortran())
+ bb->set_parent(tf);
+ else
+ bb->set_parent(tfd);
+ for (SgStatementPtrList::iterator it = (*body).begin();
+ it != (*body).end(); it++) {
+ bb->append_statement(*it);
+ (*it)->set_parent(bb);
+ }
+ if (!isInputFortran())
+ tf->set_loop_body(bb);
+ else {
+ tfd->set_body(bb);
+ }
+ }
+ }
+ } else {
+ SgNode* tnl2 = static_cast<CG_roseRepr*>(stmtList)->tnl_;
+
+ if (tnl2 != NULL) {
+ if (!isInputFortran()) {
+ tf->set_loop_body(isSgStatement(tnl2));
+ tnl2->set_parent(tf);
+ } else {
+ SgBasicBlock* bb1 = buildBasicBlock();
+ bb1->set_parent(tfd);
+ bb1->append_statement(isSgStatement(tnl2));
+ tfd->set_body(bb1);
+ tnl2->set_parent(bb1);
+ }
+ }
+ }
+
+ delete stmtList;
+
+ return control;
+}
+
+//-----------------------------------------------------------------------------
+// basic int, identifier gen operations
+//-----------------------------------------------------------------------------
+CG_outputRepr* CG_roseBuilder::CreateInt(int _i) const {
+ return new CG_roseRepr(isSgExpression(buildIntVal(_i)));
+}
+bool CG_roseBuilder::isInteger(CG_outputRepr *op) const{
+
+ SgExpression *op1 = static_cast<CG_roseRepr *>(op)->op_;
+
+ if(op1)
+ if(isSgIntVal(op1))
+ return true;
+
+ return false;
+}
+CG_outputRepr* CG_roseBuilder::CreateIdent(const std::string &_s) const {
+
+ SgVariableSymbol *vs = symtab_->find_variable(SgName(_s.c_str()));
+ SgVariableSymbol *vs2 = symtab2_->find_variable(SgName(_s.c_str()));
+
+ if (vs == NULL && vs2 == NULL) {
+
+ SgVariableDeclaration* defn = buildVariableDeclaration(
+ SgName(_s.c_str()), buildIntType());
+ SgInitializedNamePtrList& variables = defn->get_variables();
+ SgInitializedNamePtrList::const_iterator i = variables.begin();
+ SgInitializedName* initializedName = *i;
+ vs = new SgVariableSymbol(initializedName);
+ prependStatement(defn, isSgScopeStatement(root_));
+
+ vs->set_parent(symtab2_);
+ symtab2_->insert(SgName(_s.c_str()), vs);
+ return new CG_roseRepr(isSgExpression(buildVarRefExp(vs)));
+
+ }
+
+ /* May have problem */
+
+ if (!isSgExpression(buildVarRefExp(SgName(_s.c_str()))))
+ throw ir_error("error in Create ident!!");
+ if (vs2 != NULL)
+ return new CG_roseRepr(isSgExpression(buildVarRefExp(vs2)));
+
+ return new CG_roseRepr(isSgExpression(buildVarRefExp(vs)));
+
+}
+
+//-----------------------------------------------------------------------------
+// binary arithmetic operations
+//-----------------------------------------------------------------------------
+CG_outputRepr* CG_roseBuilder::CreatePlus(CG_outputRepr *lop,
+ CG_outputRepr *rop) const {
+ if (rop == NULL) {
+ return lop;
+ } else if (lop == NULL) {
+ return rop;
+ }
+
+ SgExpression* op1 = static_cast<CG_roseRepr*>(lop)->op_;
+ SgExpression* op2 = static_cast<CG_roseRepr*>(rop)->op_;
+
+ SgAddOp *ins = buildAddOp(op1, op2);
+ op1->set_parent(ins);
+ op2->set_parent(ins);
+ delete lop;
+ delete rop;
+
+ return new CG_roseRepr(isSgExpression(ins));
+
+}
+
+CG_outputRepr* CG_roseBuilder::CreateMinus(CG_outputRepr *lop,
+ CG_outputRepr *rop) const {
+ if (rop == NULL) {
+ return lop; /* May Cause Problem */
+ } else if (lop == NULL) {
+ SgExpression *op = static_cast<CG_roseRepr*>(rop)->op_;
+ SgMinusOp *ins = buildMinusOp(op);
+
+ delete rop;
+
+ return new CG_roseRepr(isSgExpression(ins));
+ } else {
+ SgExpression* op1 = static_cast<CG_roseRepr*>(lop)->op_;
+ SgExpression* op2 = static_cast<CG_roseRepr*>(rop)->op_;
+
+ SgSubtractOp *ins = buildSubtractOp(op1, op2);
+ op1->set_parent(ins);
+ op2->set_parent(ins);
+ delete lop;
+ delete rop;
+ return new CG_roseRepr(isSgExpression(ins));
+ }
+
+}
+
+CG_outputRepr* CG_roseBuilder::CreateTimes(CG_outputRepr *lop,
+ CG_outputRepr *rop) const {
+ if (rop == NULL || lop == NULL) {
+ if (rop != NULL) {
+ rop->clear();
+ delete rop;
+ }
+ if (lop != NULL) {
+ lop->clear();
+ delete lop;
+ }
+ return NULL;
+ }
+
+ SgExpression* op1 = static_cast<CG_roseRepr*>(lop)->op_;
+ SgExpression* op2 = static_cast<CG_roseRepr*>(rop)->op_;
+
+ SgMultiplyOp *ins = buildMultiplyOp(op1, op2);
+ op1->set_parent(ins);
+ op2->set_parent(ins);
+ delete lop;
+ delete rop;
+
+ return new CG_roseRepr(isSgExpression(ins));
+
+}
+
+CG_outputRepr* CG_roseBuilder::CreateIntegerFloor(CG_outputRepr *lop,
+ CG_outputRepr *rop) const {
+ if (rop == NULL) {
+ fprintf(stderr, "Code generation: divide by NULL\n");
+ return NULL;
+ } else if (lop == NULL) {
+ delete rop;
+ return NULL;
+ }
+
+ // (6+5)*10 / 4
+ SgExpression* op1 = static_cast<CG_roseRepr*>(lop)->op_;
+ SgExpression* op2 = static_cast<CG_roseRepr*>(rop)->op_;
+
+ // bugs in SUIF prevent use of correct io_divfloor
+ SgDivideOp *ins = buildDivideOp(op1, op2);
+
+ delete lop;
+ delete rop;
+
+ return new CG_roseRepr(isSgExpression(ins));
+
+}
+
+CG_outputRepr* CG_roseBuilder::CreateIntegerMod(CG_outputRepr *lop,
+ CG_outputRepr *rop) const {
+ if (rop == NULL || lop == NULL) {
+ return NULL;
+ }
+
+ SgExpression* op1 = static_cast<CG_roseRepr*>(lop)->op_;
+ SgExpression* op2 = static_cast<CG_roseRepr*>(rop)->op_;
+
+ // bugs in SUIF prevent use of correct io_mod
+ SgModOp *ins;
+ if (!isInputFortran()) {
+ ins = buildModOp(op1, op2);
+ delete lop;
+ delete rop;
+
+ return new CG_roseRepr(isSgExpression(ins));
+ } else { // Manu:: fortran mod is a function call and not an operator (f77 and f90)
+ SgExpression *fins;
+ SgName fName("MOD");
+ SgExprListExp* arg_list = buildExprListExp();
+ appendExpression(arg_list, op1);
+ appendExpression(arg_list, op2);
+ SgTypeInt *retType = buildIntType();
+ fins = isSgExpression(buildFunctionCallExp(fName, retType, arg_list, global_));
+ return new CG_roseRepr(isSgExpression(fins));
+ }
+
+}
+
+//-----------------------------------------------------------------------------
+// binary logical operations
+//-----------------------------------------------------------------------------
+CG_outputRepr* CG_roseBuilder::CreateAnd(CG_outputRepr *lop,
+ CG_outputRepr *rop) const {
+ /*if (rop == NULL || lop == NULL) {
+ return NULL;
+ }*/
+
+ if (rop == NULL)
+ return lop;
+ else if (lop == NULL)
+ return rop;
+
+ SgExpression* op1 = static_cast<CG_roseRepr*>(lop)->op_;
+ SgExpression* op2 = static_cast<CG_roseRepr*>(rop)->op_;
+
+ SgAndOp *ins = buildAndOp(op1, op2);
+
+ delete lop;
+ delete rop;
+
+ return new CG_roseRepr(isSgExpression(ins));
+
+}
+
+//-----------------------------------------------------------------------------
+// binary relational operations
+//-----------------------------------------------------------------------------
+/*CG_outputRepr* CG_roseBuilder::CreateGE(CG_outputRepr *lop,
+ CG_outputRepr *rop) const {
+ return CreateLE(rop, lop);
+}*/
+
+CG_outputRepr* CG_roseBuilder::CreateLE(CG_outputRepr *lop,
+ CG_outputRepr *rop) const {
+ if (rop == NULL || lop == NULL) {
+ return NULL;
+ }
+
+ SgExpression* op1 = static_cast<CG_roseRepr*>(lop)->op_;
+ SgExpression* op2 = static_cast<CG_roseRepr*>(rop)->op_;
+
+ SgLessOrEqualOp *ins = buildLessOrEqualOp(op1, op2);
+
+ delete lop;
+ delete rop;
+
+ return new CG_roseRepr(isSgExpression(ins));
+
+}
+
+CG_outputRepr* CG_roseBuilder::CreateEQ(CG_outputRepr *lop,
+ CG_outputRepr *rop) const {
+ if (rop == NULL || lop == NULL) {
+ return NULL;
+ }
+
+ SgExpression* op1 = static_cast<CG_roseRepr*>(lop)->op_;
+ SgExpression* op2 = static_cast<CG_roseRepr*>(rop)->op_;
+
+ SgEqualityOp *ins = buildEqualityOp(op1, op2);
+
+ delete lop;
+ delete rop;
+
+ return new CG_roseRepr(isSgExpression(ins));
+
+}
+
+//-----------------------------------------------------------------------------
+// stmt list gen operations
+//-----------------------------------------------------------------------------
+/*CG_outputRepr* CG_roseBuilder::CreateStmtList(CG_outputRepr *singleton) const {
+
+ if (singleton == NULL) {
+ return new CG_roseRepr(new SgStatementPtrList);
+ }
+
+ SgStatementPtrList *tnl = static_cast<CG_roseRepr *>(singleton)->list_;
+ SgNode* sgn = static_cast<CG_roseRepr *>(singleton)->tnl_;
+
+ if (tnl == NULL)
+ tnl = new SgStatementPtrList;
+
+ if (sgn == NULL) {
+ SgExpression* op = static_cast<CG_roseRepr *>(singleton)->op_;
+
+ if (op != NULL)
+ (*tnl).push_back(
+ buildExprStatement(
+ static_cast<CG_roseRepr *>(singleton)->op_));
+
+ } else
+ (*tnl).push_back(isSgStatement(sgn));
+
+ delete singleton;
+ return new CG_roseRepr(tnl);
+
+// tnl = isSgNode(buildBasicBlock(buildExprStatement(static_cast<CG_roseRepr *>(singleton)->op_)));
+
+// delete singleton;
+// return new CG_roseRepr(tnl);
+
+}
+
+CG_outputRepr* CG_roseBuilder::StmtListInsertLast(CG_outputRepr *list,
+ CG_outputRepr *node) const {
+ return StmtListAppend(list, node);
+}
+*/
+CG_outputRepr* CG_roseBuilder::StmtListAppend(CG_outputRepr *list1,
+ CG_outputRepr *list2) const {
+
+ if (list2 == NULL) {
+ return list1;
+ } else if (list1 == NULL) {
+ return list2;
+ }
+
+ // SgStatement* parent;
+ // SgStatement* stmt1;
+ // SgStatement* stmt2;
+
+ SgStatementPtrList* new_list;
+
+ SgStatementPtrList* tnl1 = static_cast<CG_roseRepr *>(list1)->list_;
+ SgStatementPtrList* tnl2 = static_cast<CG_roseRepr *>(list2)->list_;
+ SgNode* one = static_cast<CG_roseRepr *>(list1)->tnl_;
+ SgNode* two = static_cast<CG_roseRepr *>(list2)->tnl_;
+
+ SgExpression* exp1 = static_cast<CG_roseRepr *>(list1)->op_;
+ SgExpression* exp2 = static_cast<CG_roseRepr *>(list2)->op_;
+
+ if (exp1 || exp2)
+ throw ir_error("error in stmtlistappend!!");
+
+ if (tnl1 && one)
+ throw ir_error("error in stmtlistappend!!");
+
+ if (tnl2 && two)
+ throw ir_error("error in stmtlistappend!!");
+// SgNode* sg1 = static_cast<CG_roseRepr *>(list1)->tnl_;
+
+//if((*tnl1).empty()){
+
+// if(SgStatement* stmt = isSgStatement(sg1))
+// (*tnl1).push_back(stmt);
+//else if(isSgScopeStatement(sg1)){
+// SgStatementPtrList scopeStmtPtrLst = isSgScopeStatement(sg1)->generateStatementList();
+
+// for(SgStatementPtrList::iterator it1 = scopeStmtPtrLst.begin();it1 != scopeStmtPtrLst.end(); it1++)
+// (*tnl1).push_back(*it1);
+//}
+//}
+
+ if ((tnl1 == NULL) && (tnl2 == NULL)) {
+
+ if ((one != NULL) && (two != NULL)) {
+
+ new_list = new SgStatementPtrList;
+
+ (*new_list).push_back(isSgStatement(one));
+ (*new_list).push_back(isSgStatement(two));
+
+ CG_roseRepr* new_rep = new CG_roseRepr(new_list);
+
+ return static_cast<CG_outputRepr *>(new_rep);
+
+ } else if ((one != NULL) && (two == NULL)) {
+
+ return static_cast<CG_outputRepr *>(new CG_roseRepr(one));
+
+ } else if ((two != NULL) && (one == NULL)) {
+ return static_cast<CG_outputRepr *>(new CG_roseRepr(two));
+
+ }
+
+ } else {
+ if ((tnl2 != NULL) && (tnl1 == NULL)) {
+ /* for(SgStatementPtrList::iterator it = (*tnl2).begin(); it != (*tnl2).end(); it++)
+ {
+ (*tnl1).push_back(*it);
+
+ }
+ */
+ if (one == NULL)
+ return list2;
+ else {
+ new_list = new SgStatementPtrList;
+ (*new_list).push_back(isSgStatement(one));
+
+ for (SgStatementPtrList::iterator it = (*tnl2).begin();
+ it != (*tnl2).end(); it++) {
+ (*new_list).push_back(*it);
+
+ }
+ //delete list2;
+ return static_cast<CG_outputRepr *>(new CG_roseRepr(new_list));
+ }
+ } else if ((tnl1 != NULL) && (tnl2 == NULL)) {
+ if (two == NULL)
+ return list1;
+ else {
+
+ (*tnl1).push_back(isSgStatement(two));
+ // delete list1;
+ return static_cast<CG_outputRepr *>(new CG_roseRepr(tnl1));
+
+ }
+
+ } else if ((tnl1 != NULL) && (tnl2 != NULL)) {
+
+ for (SgStatementPtrList::iterator it = (*tnl2).begin();
+ it != (*tnl2).end(); it++) {
+ (*tnl1).push_back(*it);
+
+ }
+
+ // delete list2;
+ // delete list1;
+ return static_cast<CG_outputRepr *>(new CG_roseRepr(tnl1));
+ }
+//else{
+// SgNode* tnll2 = static_cast<CG_roseRepr *>(list2)->tnl_;
+// if(tnll2 != NULL){
+// if(isSgStatement(tnll2))
+// (*tnl1).push_back(isSgStatement(tnll2));
+// else if(isSgScopeStatement(tnll2)){
+// SgStatementPtrList scopeStmtPtrLst1 = isSgScopeStatement(tnll2)->generateStatementList();
+
+// for(SgStatementPtrList::iterator it2 = scopeStmtPtrLst1.begin();it2 != scopeStmtPtrLst1.end(); it2++)
+// (*tnl1).push_back(*it2);
+
+// }
+//}
+// else{
+// SgStatement* stmt2 = isSgStatement(buildExprStatement(static_cast<CG_roseRepr *>(list2)->op_));
+// (*tnl1).push_back(stmt2);
+
+// }
+
+//}
+ // stmt2 = isSgStatement(tnl2);
+
+// std::string c = tnl1->unparseToString();
+
+// std::string d = isSgNode(stmt2)->unparseToString();
+
+// if(isSgForStatement(tnl1) || isSgBasicBlock(tnl1))
+// isSgScopeStatement(tnl1)->append_statement(stmt2);
+// else
+// {
+ // stmt1 = isSgStatement(tnl1);
+ // parent = isSgStatement(tnl1->get_parent());
+ // if(isSgForStatement(tnl1->get_parent()) || isSgBasicBlock(tnl1->get_parent()))
+ // isSgScopeStatement(tnl1->get_parent())->append_statement(stmt2);
+ // else if (isSgStatement(tnl1->get_parent()))
+ // isSgStatement(tnl1->get_parent())->insert_statement(stmt1, stmt2, false);
+
+// }
+
+ }
+// delete list2;
+
+// return list1;
+
+}
+
+
+CG_outputRepr* CG_roseBuilder::CreateDim3(const char* varName, CG_outputRepr* arg1,
+ CG_outputRepr* arg2, CG_outputRepr* arg3) const {
+
+ //SgName type_name("dim3");
+ //SgClassSymbol * type_symbol = global_scope->lookup_class_symbol(type_name);
+ // SgClassDeclaration * type_decl = isSgClassDeclaration(
+ // type_symbol->get_declaration());
+
+ //SgVariableDeclaration * var_decl = buildVariableDeclaration(varName, type_symbol->get_type());
+
+ SgFunctionSymbol * ctor_symbol = global_scope->lookup_function_symbol(
+ SgName("dim3"));
+
+ SgExprListExp * ctor_args;
+ if(arg3 != NULL)
+ ctor_args = buildExprListExp(static_cast<CG_roseRepr*>(arg1)->op_,
+ static_cast<CG_roseRepr*>(arg2)->op_, static_cast<CG_roseRepr*>(arg3)->op_);
+ else
+ ctor_args = buildExprListExp(static_cast<CG_roseRepr*>(arg1)->op_,
+ static_cast<CG_roseRepr*>(arg2)->op_);
+ SgFunctionCallExp * dim3_func_call = buildFunctionCallExp(
+ buildFunctionRefExp(ctor_symbol->get_declaration()), ctor_args);
+
+ char joined_str[20];
+
+ strcpy(joined_str, "dim3 ");
+ strcat(joined_str, varName);
+
+ SgExprStatement* decl = buildAssignStatement(
+ buildOpaqueVarRefExp(joined_str, isSgScopeStatement(root_)),
+ dim3_func_call);
+
+ SgStatementPtrList *tnl2 = new SgStatementPtrList;
+
+ // (*tnl2).push_back(var_decl);
+ (*tnl2).push_back(decl);
+ return new CG_roseRepr(tnl2);
+
+}
+
+/*CG_outputRepr* CG_roseBuilder::CreateDim3(const char* varName, int arg1,
+ int arg2) const {
+
+ SgName type_name("dim3");
+ SgClassSymbol * type_symbol = global_scope->lookup_class_symbol(type_name);
+ SgClassDeclaration * type_decl = isSgClassDeclaration(
+ type_symbol->get_declaration());
+
+ //SgVariableDeclaration * var_decl = buildVariableDeclaration(varName, type_symbol->get_type());
+
+ SgFunctionSymbol * ctor_symbol = global_scope->lookup_function_symbol(
+ SgName("dim3"));
+
+ SgExprListExp * ctor_args = buildExprListExp(buildIntVal(arg1),
+ buildIntVal(arg2));
+
+ SgFunctionCallExp * dim3_func_call = buildFunctionCallExp(
+ buildFunctionRefExp(ctor_symbol->get_declaration()), ctor_args);
+
+ char joined_str[20];
+
+ strcpy(joined_str, "dim3 ");
+ strcat(joined_str, varName);
+
+ SgExprStatement* decl = buildAssignStatement(
+ buildOpaqueVarRefExp(joined_str, isSgScopeStatement(root_)),
+ dim3_func_call);
+
+ SgStatementPtrList *tnl2 = new SgStatementPtrList;
+
+ // (*tnl2).push_back(var_decl);
+ (*tnl2).push_back(decl);
+ return new CG_roseRepr(tnl2);
+}
+
+CG_outputRepr* CG_roseBuilder::CreateDim3(const char* varName, int arg1,
+ int arg2, int arg3) const {
+
+ SgName type_name("dim3");
+ SgClassSymbol * type_symbol = global_scope->lookup_class_symbol(type_name);
+ SgClassDeclaration * type_decl = isSgClassDeclaration(
+ type_symbol->get_declaration());
+
+ //SgVariableDeclaration * var_decl = buildVariableDeclaration(varName, type_symbol->get_type());
+
+ SgFunctionSymbol * ctor_symbol = global_scope->lookup_function_symbol(
+ SgName("dim3"));
+
+ SgExprListExp * ctor_args = buildExprListExp(buildIntVal(arg1),
+ buildIntVal(arg2), buildIntVal(arg3));
+
+ SgFunctionCallExp * dim3_func_call = buildFunctionCallExp(
+ buildFunctionRefExp(ctor_symbol->get_declaration()), ctor_args);
+
+ char joined_str[20];
+
+ strcpy(joined_str, "dim3 ");
+ strcat(joined_str, varName);
+
+ SgExprStatement* decl = buildAssignStatement(
+ buildOpaqueVarRefExp(joined_str, isSgScopeStatement(root_)),
+ dim3_func_call);
+
+ SgStatementPtrList *tnl2 = new SgStatementPtrList;
+
+ // (*tnl2).push_back(var_decl);
+ (*tnl2).push_back(decl);
+ return new CG_roseRepr(tnl2);
+
+
+
+}
+*/
+
+/*CG_outputRepr* CG_suifBuilder::CreateKernel(immed_list* iml) const {
+ instruction *ins = new in_rrr(io_mrk);
+ ins->append_annote(k_cuda_kernel, iml);
+ tree_node_list *tnl = new tree_node_list;
+ tnl->append(new tree_instr(ins));
+ return new CG_suifRepr(tnl);
+ }
+
+ type_node* CG_suifBuilder::ModifyType(type_node* base, const char* modifier) const {
+ modifier_type* result = new modifier_type(TYPE_NULL, base);
+ immed_list *iml = new immed_list;
+ iml->append(immed((char*)modifier));
+ result->append_annote(k_cuda_modifier, iml);
+ return result;
+ }
+ */
+
+std::vector<SgVarRefExp *> substitute(SgNode *in, const SgVariableSymbol *sym,
+ SgExpression* expr, SgNode* root) {
+
+ SgStatement* stmt;
+ SgExpression* op;
+ std::vector<SgVarRefExp *> arrays;
+
+ if (in != NULL) {
+ if (stmt = isSgStatement(in)) {
+ if (isSgBasicBlock(stmt)) {
+ SgStatementPtrList& stmts =
+ isSgBasicBlock(stmt)->get_statements();
+ for (int i = 0; i < stmts.size(); i++) {
+ stmts[i]->set_parent(stmt);
+ std::vector<SgVarRefExp *> a = substitute(
+ isSgNode(stmts[i]), sym, expr, root);
+ std::copy(a.begin(), a.end(), back_inserter(arrays));
+ }
+ } else if (isSgForStatement(stmt)) {
+ SgForStatement *tnf = isSgForStatement(stmt);
+ tnf->get_for_init_stmt()->set_parent(tnf);
+ tnf->get_test()->set_parent(tnf);
+ tnf->get_increment()->set_parent(tnf);
+ tnf->get_loop_body()->set_parent(tnf);
+ std::vector<SgVarRefExp *> a = substitute(
+ isSgNode(tnf->get_for_init_stmt()), sym, expr, root);
+ std::copy(a.begin(), a.end(), back_inserter(arrays));
+ std::vector<SgVarRefExp *> a1 = substitute(
+ isSgNode(tnf->get_test()), sym, expr, root);
+ std::copy(a1.begin(), a1.end(), back_inserter(arrays));
+ std::vector<SgVarRefExp *> a2 = substitute(
+ isSgNode(tnf->get_increment()), sym, expr, root);
+ std::copy(a2.begin(), a2.end(), back_inserter(arrays));
+ std::vector<SgVarRefExp *> a3 = substitute(
+ isSgNode(tnf->get_loop_body()), sym, expr, root);
+ std::copy(a3.begin(), a3.end(), back_inserter(arrays));
+ } else if (isSgFortranDo(stmt)) { // Manu:: fortran support
+ SgFortranDo *tnf = isSgFortranDo(stmt);
+ tnf->get_initialization()->set_parent(tnf);
+ tnf->get_bound()->set_parent(tnf);
+ tnf->get_increment()->set_parent(tnf);
+ tnf->get_body()->set_parent(tnf);
+ std::vector<SgVarRefExp *> a = substitute(
+ isSgNode(tnf->get_initialization()), sym, expr, root);
+ std::copy(a.begin(), a.end(), back_inserter(arrays));
+ std::vector<SgVarRefExp *> a1 = substitute(
+ isSgNode(tnf->get_bound()), sym, expr, root);
+ std::copy(a1.begin(), a1.end(), back_inserter(arrays));
+ std::vector<SgVarRefExp *> a2 = substitute(
+ isSgNode(tnf->get_increment()), sym, expr, root);
+ std::copy(a2.begin(), a2.end(), back_inserter(arrays));
+ std::vector<SgVarRefExp *> a3 = substitute(
+ isSgNode(tnf->get_body()), sym, expr, root);
+ std::copy(a3.begin(), a3.end(), back_inserter(arrays));
+ } else if (isSgForInitStatement(stmt)) {
+
+ SgStatementPtrList& stmts =
+ isSgForInitStatement(stmt)->get_init_stmt();
+
+ for (SgStatementPtrList::iterator it = stmts.begin();
+ it != stmts.end(); it++) {
+ std::vector<SgVarRefExp *> a = substitute(isSgNode(*it),
+ sym, expr, root);
+
+ std::copy(a.begin(), a.end(), back_inserter(arrays));
+ }
+ }
+ /*else if(isSgFortranDo(stmt)){
+ SgFortranDo *tfortran = isSgFortranDo(stmt);
+ omega::CG_roseRepr *r = new omega::CG_roseRepr(isSgStatement(tfortran->get_body()));
+ std::vector<IR_ArrayRef *> a = FindArrayRef(r);
+ delete r;
+ std::copy(a.begin(), a.end(), back_inserter(arrays));
+ }*/
+ else if (isSgVariableDeclaration(stmt)) {
+ if (SgExpression *init =
+ isSgVariableDeclaration(stmt)->get_variables().front()->get_initializer()) {
+ if (isSgAssignInitializer(init)) {
+ std::vector<SgVarRefExp *> a = substitute(
+ isSgAssignInitializer(init)->get_operand(), sym,
+ expr, root);
+ std::copy(a.begin(), a.end(), back_inserter(arrays));
+ }
+ }
+ } else if (isSgIfStmt(stmt)) {
+ SgIfStmt* tni = isSgIfStmt(stmt);
+ //tni->get_conditional()->set_parent(tni);
+ //tni->get_true_body()->set_parent(tni);
+ //tni->get_false_body()->set_parent(tni);
+ std::vector<SgVarRefExp *> a = substitute(
+ isSgNode(tni->get_conditional()), sym, expr, root);
+ std::copy(a.begin(), a.end(), back_inserter(arrays));
+ std::vector<SgVarRefExp *> a1 = substitute(
+ isSgNode(tni->get_true_body()), sym, expr, root);
+ std::copy(a1.begin(), a1.end(), back_inserter(arrays));
+ std::vector<SgVarRefExp *> a2 = substitute(
+ isSgNode(tni->get_false_body()), sym, expr, root);
+ std::copy(a2.begin(), a2.end(), back_inserter(arrays));
+ } else if (isSgExprStatement(stmt)) {
+ (isSgExprStatement(stmt)->get_expression())->set_parent(
+ isSgExprStatement(stmt));
+ std::vector<SgVarRefExp *> a = substitute(
+ isSgNode(isSgExprStatement(stmt)->get_expression()),
+ sym, expr, root);
+ std::copy(a.begin(), a.end(), back_inserter(arrays));
+ } //end else if
+ } //end if
+ else {
+ op = isSgExpression(in);
+ // std::string x = isSgNode(op)->unparseToString();
+ std::string y = sym->get_name().getString();
+// std::cout << "------substitute else:: " << in->unparseToString().c_str() << ", " << y.c_str() << "\n";
+
+ if (isSgBinaryOp(op)) {
+
+ isSgBinaryOp(op)->get_lhs_operand()->set_parent(op);
+ isSgBinaryOp(op)->get_rhs_operand()->set_parent(op);
+
+ std::vector<SgVarRefExp *> a = substitute(
+ isSgBinaryOp(op)->get_lhs_operand(), sym, expr, root);
+ std::copy(a.begin(), a.end(), back_inserter(arrays));
+ std::vector<SgVarRefExp *> a1 = substitute(
+ isSgBinaryOp(op)->get_rhs_operand(), sym, expr, root);
+ std::copy(a1.begin(), a1.end(), back_inserter(arrays));
+ } else if (isSgUnaryOp(op)) {
+ //isSgUnaryOp(op)->get_operand()->set_parent(op);
+ //std::string x = isSgNode(op)->unparseToString();
+ //std::cout<<x<<std::endl;
+ std::vector<SgVarRefExp *> a = substitute(
+ isSgUnaryOp(op)->get_operand(), sym, expr, root);
+ std::copy(a.begin(), a.end(), back_inserter(arrays));
+ } else if (isSgVarRefExp(op)) {
+ std::string z =
+ isSgVarRefExp(op)->get_symbol()->get_name().getString();
+ if (!strcmp(z.c_str(), y.c_str())) {
+ //isSgVarRefExp(op)->set_symbol(isSgVarRefExp(expr)->get_symbol());
+ arrays.push_back(isSgVarRefExp(op));
+ //replaceVariableReferences(root, isSgVarRefExp(in)->get_symbol(), temp);
+ //r = true;
+ } //end if
+ } //end else if
+ else if (isSgCallExpression(op)) {
+ SgExprListExp* exprs = isSgCallExpression(op)->get_args();
+ SgExpressionPtrList &expr_list = exprs->get_expressions();
+
+ for (SgExpressionPtrList::iterator it = expr_list.begin();
+ it != expr_list.end(); it++) {
+ std::vector<SgVarRefExp *> a = substitute(isSgNode(*it),
+ sym, expr, root);
+ std::copy(a.begin(), a.end(), back_inserter(arrays));
+ }
+ } else if (isSgExprListExp(op)) { // Manu:: fortran indices are stored this way
+ SgExpressionPtrList &expr_list = isSgExprListExp(op)->get_expressions();
+
+ for (SgExpressionPtrList::iterator it = expr_list.begin();
+ it != expr_list.end(); it++) {
+ std::vector<SgVarRefExp *> a = substitute(isSgNode(*it),
+ sym, expr, root);
+ std::copy(a.begin(), a.end(), back_inserter(arrays));
+ }
+
+ }
+
+ //end else if
+ //else if(!isSgValueExp(op))
+ // throw ir_error("unrecognized expression type");
+ } //end else
+ } //end if
+
+ /* bool r = false;
+ if (isSgVarRefExp(in) && (isSgVarRefExp(in)->get_symbol() == sym)) {
+ omega::CG_roseRepr *result = new omega::CG_roseRepr(expr);
+ SgExpression* expr1 = result->GetExpression();
+ delete result;
+ SgVariableSymbol* temp = isSgVarRefExp(expr1)->get_symbol();
+ parent->replace_expression(in, expr1);
+ replaceVariableReferences(root, isSgVarRefExp(in)->get_symbol(), temp);
+ r = true;
+ }
+ else if(isSgBinaryOp(in)){
+ substitute(isSgBinaryOp(in)->get_lhs_operand(), sym, expr, root, in);
+ substitute(isSgBinaryOp(in)->get_rhs_operand(), sym, expr, root, in);
+ }
+ else if(isSgUnaryOp(in))
+ substitute(isSgUnaryOp(in)->get_operand(), sym, expr, root, in);
+
+ */
+
+ return arrays;
+}
+
+/*bool substitute(SgStatement *tn, SgVariableSymbol *sym, SgExpression* expr, SgNode* root, SgSymbolTable* symtab) {
+ if (tn == NULL)
+ return false;
+
+ bool r = false;
+ if( tn != NULL){
+ if(isSgExpression(tn)){
+ r = substitute(isSgExpression(tn), sym, expr, root, isSgExpression(tn)) || r;
+
+ }
+ else {
+ omega::CG_roseRepr *result = new omega::CG_roseRepr(expr);
+ SgExpression* expr1 = result->GetExpression();
+ tn->replace_expression(buildVarRefExp(sym), expr1);
+ for (unsigned i = 0; i < tn->get_numberOfTraversalSuccessors(); i++)
+ r = substitute(isSgStatement(tn->get_traversalSuccessorByIndex(i)), sym, expr, root, symtab) || r;
+
+ }
+ }
+ return r;
+ }
+
+ bool substitute(SgNode *tnl, SgVariableSymbol *sym, SgExpression* expr, SgNode* root, SgSymbolTable* symtab) {
+ if (tnl == NULL)
+ return false;
+
+ bool r = false;
+
+ for(int i=0; i < tnl->get_numberOfTraversalSuccessors(); i++){
+
+ SgNode* tn = tnl->get_traversalSuccessorByIndex(i);
+ r = substitute(isSgStatement(tn), sym, expr, root, symtab) || r;
+ }
+
+
+ return r;
+ }
+ */
+
+} // namespace
diff --git a/omega/code_gen/src/CG_roseRepr.cc b/omega/code_gen/src/CG_roseRepr.cc
new file mode 100644
index 0000000..99cf973
--- /dev/null
+++ b/omega/code_gen/src/CG_roseRepr.cc
@@ -0,0 +1,176 @@
+/*****************************************************************************
+ Copyright (C) 2008 University of Southern California.
+ All Rights Reserved.
+
+ Purpose:
+ omega holder for suif implementaion
+
+ Notes:
+
+ History:
+ 02/01/06 - Chun Chen - created
+*****************************************************************************/
+
+#include <code_gen/CG_roseRepr.h>
+#include <code_gen/rose_attributes.h>
+#include <stdio.h>
+#include <string.h>
+#include <cstring>
+namespace omega {
+
+
+
+
+CG_roseRepr::CG_roseRepr(): tnl_(NULL), op_(NULL), list_(NULL){
+
+}
+
+CG_roseRepr::CG_roseRepr(SgNode *tnl): tnl_(tnl), op_(NULL),list_(NULL) {
+}
+
+CG_roseRepr::CG_roseRepr(SgExpression* op): tnl_(NULL), op_(op),list_(NULL){
+}
+CG_roseRepr::CG_roseRepr(SgStatementPtrList* stmtlist):tnl_(NULL), op_(NULL), list_(stmtlist){
+}
+
+CG_roseRepr::~CG_roseRepr() {
+ // delete nothing here. operand or tree_node_list should already be
+ // grafted to other expression tree or statement list
+}
+
+CG_outputRepr* CG_roseRepr::clone() const {
+
+ if( tnl_ != NULL) {
+ SgTreeCopy tc;
+ SgNode *tnl = tnl_->copy(tc);
+ copyAttributes(tnl_, tnl);
+
+ tnl->set_parent(tnl_->get_parent());
+ return new CG_roseRepr(tnl);
+ }
+ else if(op_ != NULL)
+ {
+ SgTreeCopy tc1;
+ SgNode* op = isSgNode(op_)->copy(tc1);
+ copyAttributes(op_, op);
+
+ op->set_parent(isSgNode(op_)->get_parent());
+ return new CG_roseRepr(isSgExpression(op));
+ }
+ else if(list_ != NULL)
+ {
+ SgStatementPtrList* list2 = new SgStatementPtrList;
+
+ for(SgStatementPtrList::iterator it = (*list_).begin(); it != (*list_).end(); it++){
+ SgTreeCopy tc3;
+ SgNode *tnl2 = isSgNode(*it)->copy(tc3);
+ copyAttributes(*it, tnl2);
+
+ tnl2->set_parent(isSgNode(*it)->get_parent());
+
+ (*list2).push_back(isSgStatement(tnl2));
+ }
+ return new CG_roseRepr(list2);
+ }
+
+ return NULL;
+}
+
+void CG_roseRepr::clear() {
+ if(tnl_ != NULL) {
+ delete tnl_;
+ tnl_ = NULL;
+ }
+}
+
+SgNode* CG_roseRepr::GetCode() const {
+ return tnl_;
+}
+
+SgStatementPtrList* CG_roseRepr::GetList() const {
+ return list_;
+}
+
+SgExpression* CG_roseRepr::GetExpression() const {
+ return op_;
+}
+void CG_roseRepr::Dump() const {
+SgNode* tnl = tnl_;
+SgExpression* op = op_ ;
+ if(tnl != NULL)
+ DumpFileHelper(tnl, stdout);
+ else if(op != NULL)
+ DumpFileHelper(isSgNode(op), stdout);
+
+}
+
+void CG_roseRepr::DumpFileHelper(SgNode* node, FILE *fp) const{
+ std::string x;
+ size_t numberOfSuccessors = node->get_numberOfTraversalSuccessors();
+ if(numberOfSuccessors == 0){
+ x = node->unparseToString ();
+ fprintf(fp, "%s", x.c_str());
+ }
+ else{
+ for (size_t idx = 0; idx < numberOfSuccessors; idx++)
+ {
+ SgNode *child = NULL;
+ child = node->get_traversalSuccessorByIndex(idx);
+ DumpFileHelper(child, fp);
+ }
+
+}
+}
+
+/*void CG_roseRepr::DumpToFile(FILE *fp) const {
+// std::string x;
+SgNode* tnl = tnl_;
+SgExpression* op = op_ ;
+
+if(tnl!= NULL){
+ std::string x = tnl->unparseToString();
+ fprintf(fp, "%s", x.c_str());
+
+}
+else if(op != NULL){
+ std::string x = isSgNode(op)->unparseToString();
+ fprintf(fp, "%s", x.c_str());
+
+
+
+}
+}
+*/
+/*
+SgNode* CG_roseRepr::copyAST ( SgNode* node )
+{
+
+// This is a better implementation using a derived class from SgCopyHelp to control the
+// copying process (skipping the copy of any function definition). This is a variable
+// declaration with an explicitly declared class type.
+class RestrictedCopyType : public SgCopyHelp
+ {
+ // DQ (9/26/2005): This class demonstrates the use of the copy mechanism
+ // within Sage III (originally designed and implemented by Qing Yi).
+ // One problem with it is that there is no context information permitted.
+
+ public:
+ virtual SgNode *copyAst(const SgNode *n)
+ {
+ // This is the simpliest possible version of a deep copy SgCopyHelp::copyAst() member function.
+ SgNode *returnValue = n->copy(*this);
+
+ return returnValue;
+ }
+ } restrictedCopyType;
+
+
+
+
+// This triggers a bug with test2005_152.C (the unparsed code fails for g++ 4.1.2, but not 3.5.6)
+SgNode* copyOfNode = node->copy(restrictedCopyType);
+return copyOfNode;
+
+}
+*/
+} // namespace
diff --git a/omega/code_gen/src/CG_stringBuilder.cc b/omega/code_gen/src/CG_stringBuilder.cc
new file mode 100644
index 0000000..2f9286f
--- /dev/null
+++ b/omega/code_gen/src/CG_stringBuilder.cc
@@ -0,0 +1,487 @@
+/*****************************************************************************
+ Copyright (C) 1994-2000 the Omega Project Team
+ Copyright (C) 2005-2011 Chun Chen
+ All Rights Reserved.
+
+ Purpose:
+ generate pseudo string code
+
+ Notes:
+ There is no need to check illegal NULL parameter and throw invalid_argument
+ in other IR interface implementation. They are for debugging purpose.
+ intMod implements modular function that returns positve remainder no matter
+ lop is postive or nagative and rop is guranteed to be positive here.
+
+ History:
+ 04/17/96 - Lei Zhou - created
+ 08/31/09 add parenthesis to string operands, Chun Chen
+*****************************************************************************/
+
+#include <code_gen/CG_stringBuilder.h>
+#include <code_gen/codegen_error.h>
+#include <basic/util.h>
+#include <string>
+#include <stdexcept>
+#include <ctype.h>
+#include <string.h>
+
+namespace {
+
+std::string SafeguardString(const std::string &s, char op) {
+ int len = s.length();
+ int paren_level = 0;
+ int num_plusminus = 0;
+ int num_mul = 0;
+ int num_div = 0;
+ for (int i = 0; i < len; i++)
+ switch (s[i]) {
+ case '(':
+ paren_level++;
+ break;
+ case ')':
+ paren_level--;
+ break;
+ case '+':
+ case '-':
+ if (paren_level == 0)
+ num_plusminus++;
+ break;
+ case '*':
+ if (paren_level == 0)
+ num_mul++;
+ break;
+ case '/':
+ if (paren_level == 0)
+ num_div++;
+ break;
+ default:
+ break;
+ }
+
+ bool need_paren = false;
+ switch (op) {
+ case '-':
+ if (num_plusminus > 0)
+ need_paren = true;
+ break;
+ case '*':
+ if (num_plusminus > 0 || num_div > 0)
+ need_paren = true;
+ break;
+ case '/':
+ if (num_plusminus > 0 || num_div > 0 || num_mul > 0)
+ need_paren = true;
+ break;
+ default:
+ break;
+ }
+
+ if (need_paren)
+ return "(" + s + ")";
+ else
+ return s;
+}
+
+
+std::string GetIndentSpaces(int indent) {
+ std::string indentStr;
+ for (int i = 1; i < indent; i++) {
+ indentStr += " ";
+ }
+ return indentStr;
+}
+
+
+// A shortcut to extract the string enclosed in the CG_outputRepr and delete
+// the original holder.
+std::string GetString(omega::CG_outputRepr *repr) {
+ std::string result = static_cast<omega::CG_stringRepr *>(repr)->GetString();
+ delete repr;
+ return result;
+}
+
+}
+
+
+namespace omega {
+
+
+
+//-----------------------------------------------------------------------------
+// Class: CG_stringBuilder
+//-----------------------------------------------------------------------------
+
+CG_stringRepr *CG_stringBuilder::CreateSubstitutedStmt(int indent, CG_outputRepr *stmt,
+ const std::vector<std::string> &vars,
+ std::vector<CG_outputRepr *> &subs) const {
+ std::string listStr = "";
+
+ for (int i = 0; i < subs.size(); i++) {
+ if (subs[i] == NULL)
+ listStr += "N/A";
+ else
+ listStr += GetString(subs[i]);
+ if (i < subs.size() - 1)
+ listStr += ",";
+ }
+
+ std::string stmtName = GetString(stmt);
+ std::string indentStr = GetIndentSpaces(indent);
+
+ return new CG_stringRepr(indentStr + stmtName + "(" + listStr + ");\n");
+}
+
+CG_stringRepr *CG_stringBuilder::CreateAssignment(int indent,
+ CG_outputRepr *lhs,
+ CG_outputRepr *rhs) const {
+ if (lhs == NULL || rhs == NULL)
+ throw std::invalid_argument("missing lhs or rhs in assignment");
+
+ std::string lhsStr = GetString(lhs);
+ std::string rhsStr = GetString(rhs);
+
+ std::string indentStr = GetIndentSpaces(indent);
+
+ return new CG_stringRepr(indentStr + lhsStr + "=" + rhsStr + ";\n");
+}
+
+
+CG_stringRepr *CG_stringBuilder::CreateInvoke(const std::string &funcName,
+ std::vector<CG_outputRepr *> &list) const {
+ std::string listStr = "";
+
+ for (int i = 0; i < list.size(); i++) {
+ listStr += GetString(list[i]);
+ if ( i < list.size()-1)
+ listStr += ",";
+ }
+
+ return new CG_stringRepr(funcName + "(" + listStr + ")");
+}
+
+
+CG_stringRepr *CG_stringBuilder::CreateComment(int indent, const std::string &commentText) const {
+ if (commentText == std::string("")) {
+ return NULL;
+ }
+
+ std::string indentStr = GetIndentSpaces(indent);
+
+ return new CG_stringRepr(indentStr + "// " + commentText + "\n");
+}
+
+CG_stringRepr* CG_stringBuilder::CreateAttribute(CG_outputRepr *control,
+ const std::string &commentText) const {
+ if (commentText == std::string("")) {
+ return static_cast<CG_stringRepr *> (control);
+ }
+
+ std::string controlString = GetString(control);
+
+ return new CG_stringRepr("// " + commentText + "\n" + controlString);
+
+}
+
+CG_outputRepr* CG_stringBuilder::CreatePragmaAttribute(CG_outputRepr *scopeStmt, int looplevel, const std::string &pragmaText) const {
+ // -- Not Implemented
+ return scopeStmt;
+}
+
+CG_outputRepr* CG_stringBuilder::CreatePrefetchAttribute(CG_outputRepr* scopeStmt, int looplevel, const std::string& arrName, int hint) const {
+ // -- Not Implemented
+ return scopeStmt;
+}
+
+CG_stringRepr *CG_stringBuilder::CreateIf(int indent, CG_outputRepr *guardList,
+ CG_outputRepr *true_stmtList, CG_outputRepr *false_stmtList) const {
+ if (guardList == NULL)
+ throw std::invalid_argument("missing if condition");
+
+ if (true_stmtList == NULL && false_stmtList == NULL) {
+ delete guardList;
+ return NULL;
+ }
+
+ std::string guardListStr = GetString(guardList);
+ std::string indentStr = GetIndentSpaces(indent);
+ std::string s;
+ if (true_stmtList != NULL && false_stmtList == NULL) {
+ s = indentStr + "if (" + guardListStr + ") {\n"
+ + GetString(true_stmtList)
+ + indentStr + "}\n";
+ }
+ else if (true_stmtList == NULL && false_stmtList != NULL) {
+ s = indentStr + "if !(" + guardListStr + ") {\n"
+ + GetString(false_stmtList)
+ + indentStr + "}\n";
+ }
+ else {
+ s = indentStr + "if (" + guardListStr + ") {\n"
+ + GetString(true_stmtList)
+ + indentStr + "}\n"
+ + indentStr + "else {\n"
+ + GetString(false_stmtList)
+ + indentStr + "}\n";
+ }
+
+ return new CG_stringRepr(s);
+}
+
+
+
+CG_stringRepr *CG_stringBuilder::CreateInductive(CG_outputRepr *index,
+ CG_outputRepr *lower, CG_outputRepr *upper,
+ CG_outputRepr *step) const {
+ if (index == NULL)
+ throw std::invalid_argument("missing loop index");
+ if (lower == NULL)
+ throw std::invalid_argument("missing loop lower bound");
+ if (upper == NULL)
+ throw std::invalid_argument("missing loop upper bound");
+ if (step == NULL)
+ throw std::invalid_argument("missing loop step size");
+
+ std::string indexStr = GetString(index);
+ std::string lowerStr = GetString(lower);
+ std::string upperStr = GetString(upper);
+
+ std::string doStr = "for(" + indexStr + " = " + lowerStr + "; "
+ + indexStr + " <= " + upperStr + "; "
+ + indexStr;
+
+ std::string stepStr = GetString(step);
+ if (stepStr == to_string(1))
+ doStr += "++";
+ else
+ doStr += " += " + stepStr;
+
+ doStr += ")";
+
+ return new CG_stringRepr(doStr);
+}
+
+
+CG_stringRepr *CG_stringBuilder::CreateLoop(int indent, CG_outputRepr *control,
+ CG_outputRepr *stmtList) const {
+ if (stmtList == NULL) {
+ delete control;
+ return NULL;
+ }
+ else if (control == NULL)
+ return static_cast<CG_stringRepr *>(stmtList);
+
+ std::string ctrlStr = GetString(control);
+ std::string stmtStr = GetString(stmtList);
+
+ std::string indentStr = GetIndentSpaces(indent);
+
+ std::string s = indentStr + ctrlStr + " {\n"
+ + stmtStr
+ + indentStr + "}\n";
+
+ return new CG_stringRepr(s);
+}
+
+
+
+CG_stringRepr *CG_stringBuilder::CreateInt(int num) const {
+ std::string s = to_string(num);
+ return new CG_stringRepr(s);
+}
+
+
+
+bool CG_stringBuilder::isInteger(CG_outputRepr *op) const {
+
+ char * cstr;
+ std::string s = GetString(op);
+ cstr = new char [s.size()+1];
+ strcpy (cstr, s.c_str());
+ int count = 0;
+ while(cstr[count] != '\n' && cstr[count] != '\0' )
+ if( !isdigit(cstr[count]))
+ return false;
+
+
+ return true;
+}
+
+
+
+CG_stringRepr *CG_stringBuilder::CreateIdent(const std::string &varName) const {
+ if (varName == std::string("")) {
+ return NULL;
+ }
+
+ return new CG_stringRepr(varName);
+}
+
+
+CG_stringRepr *CG_stringBuilder::CreatePlus(CG_outputRepr *lop, CG_outputRepr *rop) const {
+ if (rop == NULL) {
+ return static_cast<CG_stringRepr *>(lop);
+ }
+ else if (lop == NULL) {
+ return static_cast<CG_stringRepr *>(rop);
+ }
+
+ std::string lopStr = GetString(lop);
+ std::string ropStr = GetString(rop);
+
+ return new CG_stringRepr(lopStr + "+" + ropStr);
+}
+
+
+CG_stringRepr *CG_stringBuilder::CreateMinus(CG_outputRepr *lop, CG_outputRepr *rop) const {
+ if (rop == NULL) {
+ return static_cast<CG_stringRepr *>(lop);
+ }
+ else if (lop == NULL) {
+ std::string ropStr = GetString(rop);
+ return new CG_stringRepr("-" + SafeguardString(ropStr, '-'));
+ }
+
+ std::string lopStr = GetString(lop);
+ std::string ropStr = GetString(rop);
+
+ return new CG_stringRepr(lopStr + "-" + SafeguardString(ropStr, '-'));
+}
+
+
+CG_stringRepr *CG_stringBuilder::CreateTimes(CG_outputRepr *lop, CG_outputRepr *rop) const {
+ if (rop == NULL || lop == NULL) {
+ delete rop;
+ delete lop;
+ return NULL;
+ }
+
+ std::string lopStr = GetString(lop);
+ std::string ropStr = GetString(rop);
+
+ return new CG_stringRepr(SafeguardString(lopStr, '*') + "*" + SafeguardString(ropStr, '*'));
+}
+
+
+CG_stringRepr *CG_stringBuilder::CreateDivide(CG_outputRepr *lop, CG_outputRepr *rop) const {
+ if (rop == NULL)
+ throw codegen_error("integer division by zero");
+ else if (lop == NULL) {
+ delete rop;
+ return NULL;
+ }
+
+ std::string lopStr = GetString(lop);
+ std::string ropStr = GetString(rop);
+
+ return new CG_stringRepr(SafeguardString(lopStr, '/') + "/" + SafeguardString(ropStr, '/'));
+}
+
+
+CG_stringRepr *CG_stringBuilder::CreateIntegerFloor(CG_outputRepr *lop, CG_outputRepr *rop) const {
+ if (rop == NULL)
+ throw codegen_error("integer division by zero");
+ else if (lop == NULL) {
+ delete rop;
+ return NULL;
+ }
+
+ std::string lopStr = GetString(lop);
+ std::string ropStr = GetString(rop);
+
+ return new CG_stringRepr("intFloor(" + lopStr + "," + ropStr + ")");
+}
+
+
+CG_stringRepr *CG_stringBuilder::CreateIntegerMod(CG_outputRepr *lop, CG_outputRepr *rop) const {
+ if (rop == NULL)
+ throw codegen_error("integer modulo by zero");
+ else if (lop == NULL) {
+ delete rop;
+ return NULL;
+ }
+
+ std::string lopStr = GetString(lop);
+ std::string ropStr = GetString(rop);
+
+ return new CG_stringRepr("intMod(" + lopStr + "," + ropStr + ")");
+}
+
+CG_stringRepr *CG_stringBuilder::CreateIntegerCeil(CG_outputRepr *lop, CG_outputRepr *rop) const {
+ if (rop == 0)
+ throw codegen_error("integer ceiling by zero");
+ else if (lop == NULL) {
+ delete rop;
+ return NULL;
+ }
+
+ std::string lopStr = GetString(lop);
+ std::string ropStr = GetString(rop);
+
+ return new CG_stringRepr("intCeil(" + lopStr + "," + ropStr + ")");
+}
+
+
+CG_stringRepr *CG_stringBuilder::CreateAnd(CG_outputRepr *lop, CG_outputRepr *rop) const {
+ if (rop == NULL)
+ return static_cast<CG_stringRepr *>(lop);
+ else if (lop == NULL)
+ return static_cast<CG_stringRepr *>(rop);
+
+ std::string lopStr = GetString(lop);
+ std::string ropStr = GetString(rop);
+
+ return new CG_stringRepr(lopStr + " && " + ropStr);
+}
+
+
+CG_stringRepr *CG_stringBuilder::CreateGE(CG_outputRepr *lop, CG_outputRepr *rop) const {
+ if (rop == NULL || lop == NULL)
+ throw std::invalid_argument("missing operand in greater than equal comparison condition");
+
+ std::string lopStr = GetString(lop);
+ std::string ropStr = GetString(rop);
+
+ return new CG_stringRepr(lopStr + " >= " + ropStr);
+}
+
+
+
+CG_stringRepr *CG_stringBuilder::CreateLE(CG_outputRepr *lop, CG_outputRepr *rop) const {
+ if (rop == NULL || lop == NULL)
+ throw std::invalid_argument("missing operand in less than equal comparison condition");
+
+ std::string lopStr = GetString(lop);
+ std::string ropStr = GetString(rop);
+
+ return new CG_stringRepr(lopStr + " <= " + ropStr);
+}
+
+
+
+CG_stringRepr *CG_stringBuilder::CreateEQ(CG_outputRepr *lop, CG_outputRepr *rop) const {
+ if (rop == NULL || lop == NULL)
+ throw std::invalid_argument("missing operand in equal comparison condition");
+
+ std::string lopStr = GetString(lop);
+ std::string ropStr = GetString(rop);
+
+ return new CG_stringRepr(lopStr + " == " + ropStr);
+}
+
+
+
+CG_stringRepr *CG_stringBuilder::StmtListAppend(CG_outputRepr *list1, CG_outputRepr *list2) const {
+ if (list2 == NULL) {
+ return static_cast<CG_stringRepr *>(list1);
+ }
+ else if (list1 == NULL) {
+ return static_cast<CG_stringRepr *>(list2);
+ }
+
+ std::string list1Str = GetString(list1);
+ std::string list2Str = GetString(list2);
+
+ return new CG_stringRepr(list1Str + list2Str);
+}
+
+}
diff --git a/omega/code_gen/src/CG_stringRepr.cc b/omega/code_gen/src/CG_stringRepr.cc
new file mode 100644
index 0000000..63a1657
--- /dev/null
+++ b/omega/code_gen/src/CG_stringRepr.cc
@@ -0,0 +1,54 @@
+/*****************************************************************************
+ Copyright (C) 1994-2000 University of Maryland
+ Copyright (C) 2008 University of Southern California
+ Copyright (C) 2009 University of Utah
+ All Rights Reserved.
+
+ Purpose:
+ omega holder for string implementation.
+
+ Notes:
+
+ History:
+ 04/17/96 - Lei Zhou - created
+*****************************************************************************/
+
+#include <code_gen/CG_stringRepr.h>
+#include <stdio.h>
+
+namespace omega {
+
+CG_stringRepr::CG_stringRepr() {
+}
+
+CG_stringRepr::CG_stringRepr(const std::string& _s) : s(_s) {
+}
+
+CG_stringRepr::~CG_stringRepr() {
+}
+
+CG_outputRepr* CG_stringRepr::clone() {
+ return new CG_stringRepr(s);
+}
+
+
+//-----------------------------------------------------------------------------
+// basic operation
+//-----------------------------------------------------------------------------
+std::string CG_stringRepr::GetString() const {
+ return s;
+}
+
+
+//-----------------------------------------------------------------------------
+// Dump operations
+//-----------------------------------------------------------------------------
+void CG_stringRepr::Dump() const {
+ printf("%s\n", s.c_str());
+}
+
+void CG_stringRepr::DumpToFile(FILE *fp) const {
+ fprintf(fp,"%s", s.c_str());
+}
+
+} // namespace
diff --git a/omega/code_gen/src/CG_suifBuilder.cc b/omega/code_gen/src/CG_suifBuilder.cc
new file mode 100644
index 0000000..6bb91b7
--- /dev/null
+++ b/omega/code_gen/src/CG_suifBuilder.cc
@@ -0,0 +1,678 @@
+/*****************************************************************************
+ Copyright (C) 2008 University of Southern California
+ Copyright (C) 2009-2010 University of Utah
+ All Rights Reserved.
+
+ Purpose:
+ generate suif code for omega
+
+ Notes:
+
+ History:
+ 02/01/06 created by Chun Chen
+*****************************************************************************/
+
+#include <stack>
+#include <code_gen/CG_suifBuilder.h>
+#include <suif1/annote.h>
+#include <vector>
+
+namespace omega {
+
+//-----------------------------------------------------------------------------
+// make suif initilization happy
+//-----------------------------------------------------------------------------
+char *k_ocg_comment;
+char *k_s2c_pragma;
+char *k_cuda_dim3;
+char *k_cuda_kernel;
+char *k_cuda_modifier;
+char *k_cuda_texture_memory; //protonu--added to track texture memory type
+
+// void __attribute__ ((constructor)) my_init(void) {
+// ANNOTE(k_ocg_comment, "omega_comment", TRUE);
+// }
+
+//protonu--extern decls
+//protonu--adding stuff to make Chun's code work with Gabe's
+extern Tuple< Tuple<int> > smtNonSplitLevels;
+extern Tuple< Tuple<std::string> > loopIdxNames;//per stmt
+extern std::vector< std::pair<int, std::string> > syncs;
+extern int checkLoopLevel;
+extern int stmtForLoopCheck;
+extern int upperBoundForLevel;
+extern int lowerBoundForLevel;
+extern bool fillInBounds;
+
+
+const char *libcode_gen_ver_string = "";
+const char *libcode_gen_who_string = "";
+const char *libcode_gen_suif_string = "";
+
+
+void init_code_gen() {
+ static bool isInit = false;
+ if(!isInit)
+ {
+ isInit = true;
+ ANNOTE(k_ocg_comment, "omega_comment", TRUE);
+ ANNOTE(k_s2c_pragma, "s2c pragma", TRUE);
+ ANNOTE(k_cuda_dim3, "cuda dim3", TRUE);
+ ANNOTE(k_cuda_kernel, "cuda kernel", TRUE);
+ ANNOTE(k_cuda_modifier, "cuda modifier", TRUE);
+ }
+}
+
+
+void exit_code_gen(void) {
+}
+
+
+//-----------------------------------------------------------------------------
+// Class: CG_suifBuilder
+//-----------------------------------------------------------------------------
+
+CG_suifBuilder::CG_suifBuilder(proc_symtab *symtab)
+{
+ symtab_ = symtab;
+ init_code_gen();
+}
+
+CG_outputRepr* CG_suifBuilder::CreatePlaceHolder (int, CG_outputRepr *stmt,
+ Tuple<CG_outputRepr*> &funcList, Tuple<std::string> &loop_vars) const {
+ tree_node_list *tnl = static_cast<CG_suifRepr *>(stmt)->tnl_;
+ delete stmt;
+
+ for (int i = 1; i <= funcList.size(); i++) {
+ if (funcList[i] == NULL)
+ continue;
+
+ CG_suifRepr *repr = static_cast<CG_suifRepr*>(funcList[i]);
+ operand op = repr->op_;
+ delete repr;
+
+ var_sym *vs = static_cast<var_sym*>(symtab_->lookup_sym(loop_vars[i].c_str(), SYM_VAR));
+
+ substitute(tnl, vs, op, symtab_);
+
+ if (op.is_instr())
+ delete op.instr();
+ }
+
+ return new CG_suifRepr(tnl);
+}
+
+
+CG_outputRepr* CG_suifBuilder::CreateAssignment(int, CG_outputRepr *lhs,
+ CG_outputRepr *rhs) const {
+ if ( lhs == NULL || rhs == NULL ) {
+ fprintf(stderr, "Code generation: Missing lhs or rhs\n");
+ return NULL;
+ }
+
+ operand src = static_cast<CG_suifRepr*>(rhs)->op_;
+ if (src.is_instr() && src.instr()->opcode() == io_array) {
+ in_array *ia = static_cast<in_array *>(src.instr());
+ instruction *ins = new in_rrr(io_lod, ia->elem_type(), operand(), ia);
+ src = operand(ins);
+ }
+
+ instruction *ins;
+ operand dst = static_cast<CG_suifRepr*>(lhs)->op_;
+ if (dst.is_instr() && dst.instr()->opcode() == io_array) {
+ in_array *ia = static_cast<in_array *>(dst.instr());
+ ins = new in_rrr(io_str, type_void, operand(), operand(ia), src);
+ }
+ else
+ ins = new in_rrr(io_cpy, src.type(), dst, src);
+
+ delete lhs;
+ delete rhs;
+
+ tree_node_list *tnl = new tree_node_list;
+ tnl->append(new tree_instr(ins));
+
+ return new CG_suifRepr(tnl);
+}
+
+
+CG_outputRepr* CG_suifBuilder::CreateInvoke(const std::string &fname,
+ Tuple<CG_outputRepr*> &list) const {
+ if (fname == std::string("max") || fname == std::string("min")) {
+ if (list.size() == 0) {
+ return NULL;
+ }
+ else if (list.size() == 1) {
+ return list[1];
+ }
+ else {
+ int last = list.size();
+ operand op2 = static_cast<CG_suifRepr*>(list[last])->op_;
+ delete list[last];
+ list.delete_last();
+ CG_suifRepr *repr = static_cast<CG_suifRepr*>(CreateInvoke(fname, list));
+ operand op1 = repr->op_;
+
+ instruction *ins;
+ if (fname == std::string("max"))
+ ins = new in_rrr(io_max, op1.type(), operand(), op1, op2);
+ else
+ ins = new in_rrr(io_min, op1.type(), operand(), op1, op2);
+
+ repr->op_ = operand(ins);
+
+ return repr;
+ }
+ }
+ else {
+ fprintf(stderr, "Code generation: invoke function io_call not implemented\n");
+ return NULL;
+ }
+}
+
+
+CG_outputRepr* CG_suifBuilder::CreateAttribute(CG_outputRepr *control,
+ const std::string &commentText)const {
+ if (commentText == std::string("")) {
+ return control;
+ }
+
+ instruction *ins = new in_rrr(io_mrk);
+
+ immed_list *iml = new immed_list;
+ iml->append(immed(const_cast<char *>(commentText.c_str())));
+ ins->prepend_annote(k_ocg_comment, iml);
+
+ tree_node_list *tnl ;
+ tnl = static_cast<CG_suifRepr*>(control)->tnl_;
+ tnl->append(new tree_instr(ins));
+
+
+ return new CG_suifRepr(tnl);
+
+
+}
+
+
+
+CG_outputRepr* CG_suifBuilder::CreateComment(int, const std::string &commentText) const {
+ if ( commentText == std::string("") ) {
+ return NULL;
+ }
+
+ instruction *ins = new in_rrr(io_mrk);
+
+ immed_list *iml = new immed_list;
+ iml->append(immed(const_cast<char *>(commentText.c_str())));
+ ins->prepend_annote(k_ocg_comment, iml);
+
+ tree_node_list *tnl = new tree_node_list;
+ tnl->append(new tree_instr(ins));
+
+ return new CG_suifRepr(tnl);
+}
+
+
+CG_outputRepr* CG_suifBuilder::CreateIf(int, CG_outputRepr *guardList,
+ CG_outputRepr *true_stmtList, CG_outputRepr *false_stmtList) const {
+ static int if_counter = 1;
+ std::string s = std::string("omegaif_")+to_string(if_counter++);
+ label_sym *if_label = new label_sym(const_cast<char *>(s.c_str()));
+ symtab_->add_sym(if_label);
+
+ if ( true_stmtList == NULL && false_stmtList == NULL ) {
+ delete guardList;
+ return NULL;
+ }
+ else if ( guardList == NULL ) {
+ return StmtListAppend(true_stmtList, false_stmtList);
+ }
+
+ tree_node_list *header = new tree_node_list;
+ operand op = static_cast<CG_suifRepr*>(guardList)->op_;
+
+ std::stack<void *> S;
+ S.push(op.instr());
+ while(!S.empty()) {
+ instruction *ins = static_cast<instruction *>(S.top());
+ S.pop();
+ if (ins->opcode() == io_and) {
+ instruction *ins1 = ins->src_op(0).instr();
+ ins1->remove();
+ S.push(ins1);
+ instruction *ins2 = ins->src_op(1).instr();
+ ins2->remove();
+ S.push(ins2);
+ delete ins;
+ }
+ else {
+ ins = new in_bj(io_bfalse, if_label, operand(ins));
+ header->append(new tree_instr(ins));
+ }
+ }
+
+ tree_node_list *then_part, *else_part;
+ if (true_stmtList != NULL)
+ then_part = static_cast<CG_suifRepr*>(true_stmtList)->tnl_;
+ else
+ then_part = NULL;
+ if (false_stmtList != NULL)
+ else_part = static_cast<CG_suifRepr*>(false_stmtList)->tnl_;
+ else
+ else_part = NULL;
+ tree_if *ti = new tree_if(if_label, header, then_part, else_part);
+
+ tree_node_list *tnl = new tree_node_list;
+ tnl->append(ti);
+
+ delete guardList;
+ delete true_stmtList;
+ delete false_stmtList;
+
+ return new CG_suifRepr(tnl);
+}
+
+
+CG_outputRepr* CG_suifBuilder::CreateInductive(CG_outputRepr *index,
+ CG_outputRepr *lower,
+ CG_outputRepr *upper,
+ CG_outputRepr *step) const {
+ if ( index == NULL || lower == NULL || upper == NULL ) {
+ fprintf(stderr, "Code generation: something wrong in CreateInductive\n");
+ return NULL;
+ }
+
+ if (step == NULL)
+ step = CreateInt(1);
+
+ var_sym *index_sym = static_cast<CG_suifRepr*>(index)->op_.symbol();
+ operand lower_bound = static_cast<CG_suifRepr*>(lower)->op_;
+ operand upper_bound = static_cast<CG_suifRepr*>(upper)->op_;
+ operand step_size = static_cast<CG_suifRepr*>(step)->op_;
+
+ label_sym *contLabel = new label_sym("");
+ label_sym *brkLabel = new label_sym("");
+ symtab_->add_sym(contLabel);
+ symtab_->add_sym(brkLabel);
+ tree_for *tf = new tree_for(index_sym, FOR_SLTE, contLabel, brkLabel, NULL,
+ lower_bound, upper_bound, step_size, NULL);
+
+ tree_node_list *tnl = new tree_node_list;
+ tnl->append(tf);
+
+ delete index;
+ delete lower;
+ delete upper;
+ delete step;
+
+ return new CG_suifRepr(tnl);
+}
+
+
+CG_outputRepr* CG_suifBuilder::CreateLoop(int, CG_outputRepr *control,
+ CG_outputRepr *stmtList) const {
+ if ( stmtList == NULL ) {
+ delete control;
+ return NULL;
+ }
+ else if ( control == NULL ) {
+ fprintf(stderr, "Code generation: no inductive for this loop\n");
+ return stmtList;
+ }
+
+ tree_node_list *tnl = static_cast<CG_suifRepr*>(control)->tnl_;
+ tree_node_list_iter iter(tnl);
+ tree_for *tf = static_cast<tree_for*>(iter.step());
+
+ tree_node_list *body = static_cast<CG_suifRepr*>(stmtList)->tnl_;
+ tf->set_body(body);
+
+ delete stmtList;
+
+ return control;
+}
+
+
+CG_outputRepr* CG_suifBuilder::CreateInt(int _i) const {
+ in_ldc *ins = new in_ldc(type_s32, operand(), immed(_i));
+
+ return new CG_suifRepr(operand(ins));
+}
+
+
+CG_outputRepr* CG_suifBuilder::CreateIdent(const std::string &_s) const {
+ if ( &_s == NULL || _s == std::string("") ) {
+ return NULL;
+ }
+
+ var_sym *vs = static_cast<var_sym*>(symtab_->lookup_sym(_s.c_str(), SYM_VAR));
+
+ if (vs == NULL) {
+ vs = new var_sym(type_s32, const_cast<char*>(_s.c_str()));
+ symtab_->add_sym(vs);
+ }
+
+ return new CG_suifRepr(operand(vs));
+}
+
+
+CG_outputRepr* CG_suifBuilder::CreatePlus(CG_outputRepr *lop,
+ CG_outputRepr *rop) const {
+ if ( rop == NULL ) {
+ return lop;
+ }
+ else if ( lop == NULL ) {
+ return rop;
+ }
+
+ operand op1 = static_cast<CG_suifRepr*>(lop)->op_;
+ operand op2 = static_cast<CG_suifRepr*>(rop)->op_;
+
+ instruction *ins = new in_rrr(io_add, op1.type(), operand(), op1, op2);
+
+ delete lop;
+ delete rop;
+
+ return new CG_suifRepr(operand(ins));
+}
+
+
+CG_outputRepr* CG_suifBuilder::CreateMinus(CG_outputRepr *lop,
+ CG_outputRepr *rop) const {
+ if ( rop == NULL ) {
+ return lop;
+ }
+ else if ( lop == NULL ) {
+ operand op = static_cast<CG_suifRepr*>(rop)->op_;
+ instruction *ins = new in_rrr(io_neg, op.type(), operand(), op);
+
+ delete rop;
+
+ return new CG_suifRepr(operand(ins));
+ }
+ else {
+ operand op1 = static_cast<CG_suifRepr*>(lop)->op_;
+ operand op2 = static_cast<CG_suifRepr*>(rop)->op_;
+
+ instruction *ins = new in_rrr(io_sub, op1.type(), operand(), op1, op2);
+
+ delete lop;
+ delete rop;
+
+ return new CG_suifRepr(operand(ins));
+ }
+}
+
+
+CG_outputRepr* CG_suifBuilder::CreateTimes(CG_outputRepr *lop,
+ CG_outputRepr *rop) const {
+ if ( rop == NULL || lop == NULL) {
+ if (rop != NULL) {
+ rop->clear();
+ delete rop;
+ }
+ if (lop != NULL) {
+ lop->clear();
+ delete lop;
+ }
+ return NULL;
+ }
+
+ operand op1 = static_cast<CG_suifRepr*>(lop)->op_;
+ operand op2 = static_cast<CG_suifRepr*>(rop)->op_;
+
+ instruction *ins = new in_rrr(io_mul, op1.type(), operand(), op1, op2);
+
+ delete lop;
+ delete rop;
+
+ return new CG_suifRepr(operand(ins));
+}
+
+
+CG_outputRepr* CG_suifBuilder::CreateIntegerDivide(CG_outputRepr *lop,
+ CG_outputRepr *rop) const {
+ if ( rop == NULL ) {
+ fprintf(stderr, "Code generation: divide by NULL\n");
+ return NULL;
+ }
+ else if ( lop == NULL ) {
+ delete rop;
+ return NULL;
+ }
+
+ // (6+5)*10 / 4
+ operand op1 = static_cast<CG_suifRepr*>(lop)->op_;
+ operand op2 = static_cast<CG_suifRepr*>(rop)->op_;
+
+ // bugs in SUIF prevent use of correct io_divfloor
+ instruction *ins = new in_rrr(io_div, op1.type(), operand(), op1, op2);
+
+ delete lop;
+ delete rop;
+
+ return new CG_suifRepr(operand(ins));
+}
+
+
+CG_outputRepr* CG_suifBuilder::CreateIntegerMod(CG_outputRepr *lop,
+ CG_outputRepr *rop) const {
+ if ( rop == NULL || lop == NULL ) {
+ return NULL;
+ }
+
+ operand op1 = static_cast<CG_suifRepr*>(lop)->op_;
+ operand op2 = static_cast<CG_suifRepr*>(rop)->op_;
+
+ // bugs in SUIF prevent use of correct io_mod
+ instruction *ins = new in_rrr(io_rem, type_s32, operand(), op1, op2);
+
+ delete lop;
+ delete rop;
+
+ return new CG_suifRepr(operand(ins));
+}
+
+
+CG_outputRepr* CG_suifBuilder::CreateAnd(CG_outputRepr *lop,
+ CG_outputRepr *rop) const {
+ if (rop == NULL)
+ return lop;
+ else if (lop == NULL)
+ return rop;
+
+ operand op1 = static_cast<CG_suifRepr*>(lop)->op_;
+ operand op2 = static_cast<CG_suifRepr*>(rop)->op_;
+
+ instruction *ins = new in_rrr(io_and, op1.type(), operand(), op1, op2);
+
+ delete lop;
+ delete rop;
+
+ return new CG_suifRepr(operand(ins));
+}
+
+
+CG_outputRepr* CG_suifBuilder::CreateGE(CG_outputRepr *lop,
+ CG_outputRepr *rop) const {
+ return CreateLE(rop, lop);
+}
+
+
+CG_outputRepr* CG_suifBuilder::CreateLE(CG_outputRepr *lop,
+ CG_outputRepr *rop) const {
+ if ( rop == NULL || lop == NULL ) {
+ return NULL;
+ }
+
+ operand op1 = static_cast<CG_suifRepr*>(lop)->op_;
+ operand op2 = static_cast<CG_suifRepr*>(rop)->op_;
+
+ instruction *ins = new in_rrr(io_sle, type_s32, operand(), op1, op2);
+
+ delete lop;
+ delete rop;
+
+ return new CG_suifRepr(operand(ins));
+}
+
+
+CG_outputRepr* CG_suifBuilder::CreateEQ(CG_outputRepr *lop,
+ CG_outputRepr *rop) const {
+ if ( rop == NULL || lop == NULL ) {
+ return NULL;
+ }
+
+ operand op1 = static_cast<CG_suifRepr*>(lop)->op_;
+ operand op2 = static_cast<CG_suifRepr*>(rop)->op_;
+
+ instruction *ins = new in_rrr(io_seq, type_s32, operand(), op1, op2);
+
+ delete lop;
+ delete rop;
+
+ return new CG_suifRepr(operand(ins));
+}
+
+
+
+CG_outputRepr* CG_suifBuilder::StmtListAppend(CG_outputRepr *list1,
+ CG_outputRepr *list2) const {
+ if ( list2 == NULL ) {
+ return list1;
+ }
+ else if ( list1 == NULL ) {
+ return list2;
+ }
+
+ tree_node_list *tnl1 = static_cast<CG_suifRepr *>(list1)->tnl_;
+ tree_node_list *tnl2 = static_cast<CG_suifRepr *>(list2)->tnl_;
+ if (tnl2 == NULL)
+ tnl1->append(new tree_instr(static_cast<CG_suifRepr *>(list2)->op_.instr()));
+ else
+ tnl1->append(tnl2);
+
+ delete list2;
+
+ return list1;
+}
+
+//protonu--Gabe's stuff added here
+//-----------------------------------------------------------------------------
+// pragma generation
+// TODO: Could allow for a immed_list* instead of a String for strongly typed prgma args
+//-----------------------------------------------------------------------------
+CG_outputRepr* CG_suifBuilder::CreatePragma(int,
+ const std::string &pragmaText) const {
+ if ( pragmaText == std::string("") ) {
+ return NULL;
+ }
+ instruction *ins = new in_rrr(io_mrk);
+ immed_list *iml = new immed_list;
+ iml->append(immed(const_cast<char*>(pragmaText.c_str())));
+ ins->append_annote(k_s2c_pragma, iml);
+ tree_node_list *tnl = new tree_node_list;
+ tnl->append(new tree_instr(ins));
+ return new CG_suifRepr(tnl);
+}
+
+CG_outputRepr* CG_suifBuilder::CreateDim3(immed varName, immed arg1, immed arg2) const {
+ instruction *ins = new in_rrr(io_mrk);
+ immed_list *iml = new immed_list;
+ iml->append(immed(varName));
+ iml->append(arg1);
+ iml->append(arg2);
+ ins->append_annote(k_cuda_dim3, iml);
+ tree_node_list *tnl = new tree_node_list;
+ tnl->append(new tree_instr(ins));
+ return new CG_suifRepr(tnl);
+}
+
+CG_outputRepr* CG_suifBuilder::CreateDim3(immed varName, immed arg1, immed arg2, immed arg3) const {
+ instruction *ins = new in_rrr(io_mrk);
+ immed_list *iml = new immed_list;
+ iml->append(immed(varName));
+ iml->append(arg1);
+ iml->append(arg2);
+ iml->append(arg3);
+ ins->append_annote(k_cuda_dim3, iml);
+ tree_node_list *tnl = new tree_node_list;
+ tnl->append(new tree_instr(ins));
+ return new CG_suifRepr(tnl);
+}
+
+CG_outputRepr* CG_suifBuilder::CreateKernel(immed_list* iml) const {
+ instruction *ins = new in_rrr(io_mrk);
+ ins->append_annote(k_cuda_kernel, iml);
+ tree_node_list *tnl = new tree_node_list;
+ tnl->append(new tree_instr(ins));
+ return new CG_suifRepr(tnl);
+}
+
+type_node* CG_suifBuilder::ModifyType(type_node* base, const char* modifier) const {
+ modifier_type* result = new modifier_type(TYPE_NULL, base);
+ immed_list *iml = new immed_list;
+ iml->append(immed((char*)modifier));
+ result->append_annote(k_cuda_modifier, iml);
+ return result;
+}
+//end-protonu
+
+
+//-----------------------------------------------------------------------------
+// suif utility
+//-----------------------------------------------------------------------------
+
+bool substitute(instruction *in, var_sym *sym, operand expr, base_symtab *st) {
+ if (in == NULL || sym == NULL)
+ return false;
+
+ bool r = false;
+ for (unsigned i = 0; i < in->num_srcs(); i++) {
+ operand op(in->src_op(i));
+
+ if (op.is_symbol() && op.symbol() == sym) {
+ in->set_src_op(i, expr.clone(st));
+ r = true;
+ }
+ else if (op.is_instr()) {
+ r = substitute(op.instr(), sym, expr, st) || r;
+ }
+ }
+
+ return r;
+}
+
+bool substitute(tree_node *tn, var_sym *sym, operand expr, base_symtab *st) {
+ if (tn == NULL)
+ return false;
+
+ bool r = false;
+ if (tn->kind() == TREE_INSTR)
+ r = substitute(static_cast<tree_instr*>(tn)->instr(), sym, expr, st) || r;
+ else {
+ for (unsigned i = 0; i < tn->num_child_lists(); i++) {
+ r = substitute(tn->child_list_num(i), sym, expr, st) || r;
+ }
+ }
+
+ return r;
+}
+
+bool substitute(tree_node_list *tnl, var_sym *sym, operand expr,
+ base_symtab *st) {
+ if (tnl == NULL)
+ return false;
+
+ bool r = false;
+ tree_node_list_iter iter(tnl);
+ while (!iter.is_empty()) {
+ tree_node *tn = iter.step();
+
+ r = substitute(tn, sym, expr, st) || r;
+ }
+
+ return r;
+}
+
+}
diff --git a/omega/code_gen/src/CG_suifRepr.cc b/omega/code_gen/src/CG_suifRepr.cc
new file mode 100644
index 0000000..f4f987d
--- /dev/null
+++ b/omega/code_gen/src/CG_suifRepr.cc
@@ -0,0 +1,81 @@
+/*****************************************************************************
+ Copyright (C) 2008 University of Southern California.
+ All Rights Reserved.
+
+ Purpose:
+ omega holder for suif implementaion
+
+ Notes:
+
+ History:
+ 02/01/06 - Chun Chen - created
+*****************************************************************************/
+
+#include <code_gen/CG_suifRepr.h>
+#include <stdio.h>
+
+namespace omega {
+
+CG_suifRepr::CG_suifRepr(): tnl_(NULL), op_() {
+}
+
+CG_suifRepr::CG_suifRepr(tree_node_list *tnl): tnl_(tnl),op_() {
+}
+
+CG_suifRepr::CG_suifRepr(operand op): tnl_(NULL), op_(op) {
+}
+
+CG_suifRepr::~CG_suifRepr() {
+ // delete nothing here. operand or tree_node_list should already be
+ // grafted to other expression tree or statement list
+}
+
+CG_outputRepr* CG_suifRepr::clone() {
+ if (!op_.is_null() ) {
+ operand op = op_.clone();
+ return new CG_suifRepr(op);
+ }
+ else if (tnl_ != NULL) {
+ tree_node_list *tnl = tnl_->clone();
+ return new CG_suifRepr(tnl);
+ }
+ else
+ return new CG_suifRepr();
+}
+
+void CG_suifRepr::clear() {
+ if (!op_.is_null()) {
+ if (op_.is_instr())
+ delete op_.instr();
+ op_.set_null();
+ }
+ else if (tnl_ != NULL) {
+ delete tnl_;
+ tnl_ = NULL;
+ }
+}
+
+tree_node_list* CG_suifRepr::GetCode() const {
+ return tnl_;
+}
+
+operand CG_suifRepr::GetExpression() const {
+ return op_;
+}
+
+void CG_suifRepr::Dump() const {
+ if (tnl_ != NULL)
+ tnl_->print();
+ else if (!op_.is_null())
+ op_.print();
+}
+
+void CG_suifRepr::DumpToFile(FILE *fp) const {
+ if (tnl_ != NULL)
+ tnl_->print(fp);
+ else if (!op_.is_null())
+ op_.print(fp);
+}
+
+
+} // namespace
diff --git a/omega/code_gen/src/CG_utils.cc b/omega/code_gen/src/CG_utils.cc
new file mode 100755
index 0000000..d3a5f71
--- /dev/null
+++ b/omega/code_gen/src/CG_utils.cc
@@ -0,0 +1,1735 @@
+/*****************************************************************************
+ Copyright (C) 1994-2000 the Omega Project Team
+ Copyright (C) 2005-2011 Chun Chen
+ All Rights Reserved.
+
+ Purpose:
+ Utility functions for processing CG tree.
+
+ Notes:
+
+ History:
+ 07/19/07 when generating output variable substitutions for a mapping
+ relation, map it to each output to get correct equality, -chun
+ 07/29/10 when translating equality to assignment, generate appropriate
+ if-condition when necesssary, -chun
+*****************************************************************************/
+
+#include <typeinfo>
+#include <omega.h>
+#include <code_gen/CG.h>
+#include <code_gen/CG_utils.h>
+#include <code_gen/codegen_error.h>
+#include <math.h>
+#include <stack>
+
+namespace omega {
+
+int checkLoopLevel;
+int stmtForLoopCheck;
+int upperBoundForLevel;
+int lowerBoundForLevel;
+bool fillInBounds;
+
+//trick to static init checkLoopLevel to 0
+class JunkStaticInit{ public: JunkStaticInit(){ checkLoopLevel=0; fillInBounds=false;} };
+static JunkStaticInit junkInitInstance__;
+
+
+
+
+namespace {
+
+Relation find_best_guard(const Relation &R, const BoolSet<> &active, const std::map<int, Relation> &guards) {
+ std::pair<int, int> best_cost = std::make_pair(0, 0);
+ Relation best_cond = Relation::True(R.n_set());
+
+ Relation r = copy(R);
+ int max_iter_count = 2*(r.single_conjunct()->n_EQs()) + r.single_conjunct()->n_GEQs();
+ int iter_count = 0;
+ while (!r.is_obvious_tautology()) {
+ std::pair<int, int> cost = std::make_pair(0, 0);
+ Relation cond = pick_one_guard(r);
+ Relation complement_cond = Complement(copy(cond));
+ complement_cond.simplify();
+ for (BoolSet<>::const_iterator i = active.begin(); i != active.end(); i++) {
+ std::map<int, Relation>::const_iterator j = guards.find(*i);
+ if (j == guards.end())
+ continue;
+ if (Must_Be_Subset(copy(j->second), copy(cond)))
+ cost.first++;
+ else if (Must_Be_Subset(copy(j->second), copy(complement_cond)))
+ cost.second++;
+ }
+ if (cost > best_cost) {
+ best_cost = cost;
+ best_cond = copy(cond);
+ }
+ r = Gist(r, cond, 1);
+
+ if (iter_count > max_iter_count)
+ throw codegen_error("guard condition too complex to handle");
+
+ iter_count++;
+ }
+
+ return best_cond;
+}
+
+
+Relation find_best_guard(const Relation &R, const std::vector<CG_loop *> &loops, int start, int end) {
+ std::pair<int, int> best_cost = std::make_pair(0, 0);
+ Relation best_cond = Relation::True(R.n_set());
+
+ Relation r = copy(R);
+ int max_iter_count = 2*(r.single_conjunct()->n_EQs()) + r.single_conjunct()->n_GEQs();
+ int iter_count = 0;
+ while (!r.is_obvious_tautology()) {
+ std::pair<int, int> cost = std::make_pair(0, 0);
+ Relation cond = pick_one_guard(r);
+ int i = start;
+ for ( ; i < end; i++) {
+ if (Must_Be_Subset(copy(loops[i]->guard_), copy(cond)))
+ cost.first++;
+ else
+ break;
+ }
+ Relation complement_cond = Complement(copy(cond));
+ complement_cond.simplify();
+ for (int j = i; j < end; j++)
+ if (Must_Be_Subset(copy(loops[j]->guard_), copy(complement_cond)))
+ cost.second++;
+ else
+ break;
+
+ if (cost > best_cost) {
+ best_cost = cost;
+ best_cond = copy(cond);
+ }
+ r = Gist(r, cond, 1);
+
+ if (iter_count > max_iter_count)
+ throw codegen_error("guard condition too complex to handle");
+
+ iter_count++;
+ }
+
+ return best_cond;
+}
+
+}
+
+bool bound_must_hit_stride(const GEQ_Handle &inequality, Variable_ID v, const EQ_Handle &stride_eq, Variable_ID wc, const Relation &bounds, const Relation &known) {
+ assert(inequality.get_coef(v) != 0 && abs(stride_eq.get_coef(v)) == 1 && wc->kind() == Wildcard_Var && abs(stride_eq.get_coef(wc)) > 1);
+
+ // if bound expression uses floor operation, bail out for now
+ // TODO: in the future, handle this
+ if (abs(inequality.get_coef(v)) != 1)
+ return false;
+
+ coef_t stride = abs(stride_eq.get_coef(wc));
+
+ Relation r1(known.n_set());
+ F_Exists *f_exists1 = r1.add_and()->add_exists();
+ F_And *f_root1 = f_exists1->add_and();
+ std::map<Variable_ID, Variable_ID> exists_mapping1;
+ EQ_Handle h1 = f_root1->add_EQ();
+ Relation r2(known.n_set());
+ F_Exists *f_exists2 = r2.add_and()->add_exists();
+ F_And *f_root2 = f_exists2->add_and();
+ std::map<Variable_ID, Variable_ID> exists_mapping2;
+ EQ_Handle h2 = f_root2->add_EQ();
+ for (Constr_Vars_Iter cvi(inequality); cvi; cvi++) {
+ Variable_ID v = cvi.curr_var();
+ switch (v->kind()) {
+ case Input_Var:
+ h1.update_coef(r1.input_var(v->get_position()), cvi.curr_coef());
+ h2.update_coef(r2.input_var(v->get_position()), cvi.curr_coef());
+ break;
+ case Global_Var: {
+ Global_Var_ID g = v->get_global_var();
+ Variable_ID v1, v2;
+ if (g->arity() == 0) {
+ v1 = r1.get_local(g);
+ v2 = r2.get_local(g);
+ }
+ else {
+ v1 = r1.get_local(g, v->function_of());
+ v2 = r2.get_local(g, v->function_of());
+ }
+ h1.update_coef(v1, cvi.curr_coef());
+ h2.update_coef(v2, cvi.curr_coef());
+ break;
+ }
+ case Wildcard_Var: {
+ Variable_ID v1 = replicate_floor_definition(bounds, v, r1, f_exists1, f_root1, exists_mapping1);
+ Variable_ID v2 = replicate_floor_definition(bounds, v, r2, f_exists2, f_root2, exists_mapping2);
+ h1.update_coef(v1, cvi.curr_coef());
+ h2.update_coef(v2, cvi.curr_coef());
+ break;
+ }
+ default:
+ assert(false);
+ }
+ }
+ h1.update_const(inequality.get_const());
+ h1.update_coef(f_exists1->declare(), stride);
+ h2.update_const(inequality.get_const());
+ r1.simplify();
+ r2.simplify();
+
+ Relation all_known = Intersection(copy(bounds), copy(known));
+ all_known.simplify();
+
+ if (Gist(r1, copy(all_known), 1).is_obvious_tautology()) {
+ Relation r3(known.n_set());
+ F_Exists *f_exists3 = r3.add_and()->add_exists();
+ F_And *f_root3 = f_exists3->add_and();
+ std::map<Variable_ID, Variable_ID> exists_mapping3;
+ EQ_Handle h3 = f_root3->add_EQ();
+ for (Constr_Vars_Iter cvi(stride_eq); cvi; cvi++) {
+ Variable_ID v= cvi.curr_var();
+ switch (v->kind()) {
+ case Input_Var:
+ h3.update_coef(r3.input_var(v->get_position()), cvi.curr_coef());
+ break;
+ case Global_Var: {
+ Global_Var_ID g = v->get_global_var();
+ Variable_ID v3;
+ if (g->arity() == 0)
+ v3 = r3.get_local(g);
+ else
+ v3 = r3.get_local(g, v->function_of());
+ h3.update_coef(v3, cvi.curr_coef());
+ break;
+ }
+ case Wildcard_Var:
+ if (v == wc)
+ h3.update_coef(f_exists3->declare(), cvi.curr_coef());
+ else {
+ Variable_ID v3 = replicate_floor_definition(bounds, v, r3, f_exists3, f_root3, exists_mapping3);
+ h3.update_coef(v3, cvi.curr_coef());
+ }
+ break;
+ default:
+ assert(false);
+ }
+ }
+ h3.update_const(stride_eq.get_const());
+ r3.simplify();
+
+ if (Gist(r3, Intersection(r2, all_known), 1).is_obvious_tautology())
+ return true;
+ else
+ return false;
+ }
+ else
+ return false;
+}
+
+
+//
+// output variable by its name, however if this variable need to be substituted,
+// return the substitution.
+//
+CG_outputRepr *output_ident(CG_outputBuilder *ocg, const Relation &R, Variable_ID v, const std::vector<std::pair<CG_outputRepr *, int> > &assigned_on_the_fly) {
+ const_cast<Relation &>(R).setup_names(); // hack
+
+ if (v->kind() == Input_Var) {
+ int pos = v->get_position();
+ if (assigned_on_the_fly[pos-1].first != NULL)
+ return assigned_on_the_fly[pos-1].first->clone();
+ else
+ return ocg->CreateIdent(v->name());
+ }
+ else if (v->kind() == Global_Var) {
+ if (v->get_global_var()->arity() == 0)
+ return ocg->CreateIdent(v->name());
+ else {
+ /* This should be improved to take into account the possible elimination
+ of the set variables. */
+ int arity = v->get_global_var()->arity();
+ std::vector<CG_outputRepr *> argList;
+ for(int i = 1; i <= arity; i++)
+ argList.push_back(ocg->CreateIdent(const_cast<Relation &>(R).input_var(i)->name()));
+ CG_outputRepr *call = ocg->CreateInvoke(v->get_global_var()->base_name(), argList);
+ return call;
+ }
+ }
+ else
+ assert(false);
+}
+
+
+//
+// return pair<if condition, <assignment rhs, assignment cost> >
+//
+std::pair<CG_outputRepr *, std::pair<CG_outputRepr *, int> > output_assignment(CG_outputBuilder *ocg, const Relation &R, int level, const Relation &known, const std::vector<std::pair<CG_outputRepr *, int> > &assigned_on_the_fly) {
+ Variable_ID v = const_cast<Relation &>(R).set_var(level);
+ Conjunct *c = const_cast<Relation &>(R).single_conjunct();
+
+ std::pair<EQ_Handle, int> result = find_simplest_assignment(R, v, assigned_on_the_fly);
+
+ if (result.second == INT_MAX)
+ return std::make_pair(static_cast<CG_outputRepr *>(NULL), std::make_pair(static_cast<CG_outputRepr *>(NULL), INT_MAX));
+
+ CG_outputRepr *if_repr = NULL;
+ CG_outputRepr *assign_repr = NULL;
+ // check whether to generate if-conditions from equality constraints
+ if (abs(result.first.get_coef(v)) != 1) {
+ Relation r(R.n_set());
+ F_Exists *f_exists = r.add_and()->add_exists();
+ F_And *f_root = f_exists->add_and();
+ std::map<Variable_ID, Variable_ID> exists_mapping;
+ exists_mapping[v] = f_exists->declare();
+
+ EQ_Handle h = f_root->add_EQ();
+ for (Constr_Vars_Iter cvi(result.first); cvi; cvi++)
+ switch (cvi.curr_var()->kind()) {
+ case Input_Var: {
+ if (cvi.curr_var() == v)
+ h.update_coef(exists_mapping[v], cvi.curr_coef());
+ else
+ h.update_coef(r.set_var(cvi.curr_var()->get_position()), cvi.curr_coef());
+ break;
+ }
+ case Global_Var: {
+ Global_Var_ID g = cvi.curr_var()->get_global_var();
+ Variable_ID v2;
+ if (g->arity() == 0)
+ v2 = r.get_local(g);
+ else
+ v2 = r.get_local(g, cvi.curr_var()->function_of());
+ h.update_coef(v2, cvi.curr_coef());
+ break;
+ }
+ case Wildcard_Var: {
+ std::map<Variable_ID, Variable_ID>::iterator p = exists_mapping.find(cvi.curr_var());
+ Variable_ID v2;
+ if (p == exists_mapping.end()) {
+ v2 = f_exists->declare();
+ exists_mapping[cvi.curr_var()] = v2;
+ }
+ else
+ v2 = p->second;
+ h.update_coef(v2, cvi.curr_coef());
+ break;
+ }
+ default:
+ assert(0);
+ }
+ h.update_const(result.first.get_const());
+
+ for (EQ_Iterator e(c->EQs()); e; e++)
+ if (!((*e) == result.first)) {
+ EQ_Handle h = f_root->add_EQ();
+ for (Constr_Vars_Iter cvi(*e); cvi; cvi++)
+ switch (cvi.curr_var()->kind()) {
+ case Input_Var: {
+ assert(cvi.curr_var() != v);
+ h.update_coef(r.set_var(cvi.curr_var()->get_position()), cvi.curr_coef());
+ break;
+ }
+ case Global_Var: {
+ Global_Var_ID g = cvi.curr_var()->get_global_var();
+ Variable_ID v2;
+ if (g->arity() == 0)
+ v2 = r.get_local(g);
+ else
+ v2 = r.get_local(g, cvi.curr_var()->function_of());
+ h.update_coef(v2, cvi.curr_coef());
+ break;
+ }
+ case Wildcard_Var: {
+ std::map<Variable_ID, Variable_ID>::iterator p = exists_mapping.find(cvi.curr_var());
+ Variable_ID v2;
+ if (p == exists_mapping.end()) {
+ v2 = f_exists->declare();
+ exists_mapping[cvi.curr_var()] = v2;
+ }
+ else
+ v2 = p->second;
+ h.update_coef(v2, cvi.curr_coef());
+ break;
+ }
+ default:
+ assert(0);
+ }
+ h.update_const((*e).get_const());
+ }
+
+ for (GEQ_Iterator e(c->GEQs()); e; e++) {
+ GEQ_Handle h = f_root->add_GEQ();
+ for (Constr_Vars_Iter cvi(*e); cvi; cvi++)
+ switch (cvi.curr_var()->kind()) {
+ case Input_Var: {
+ h.update_coef(r.set_var(cvi.curr_var()->get_position()), cvi.curr_coef());
+ break;
+ }
+ case Global_Var: {
+ Global_Var_ID g = cvi.curr_var()->get_global_var();
+ Variable_ID v2;
+ if (g->arity() == 0)
+ v2 = r.get_local(g);
+ else
+ v2 = r.get_local(g, cvi.curr_var()->function_of());
+ h.update_coef(v2, cvi.curr_coef());
+ break;
+ }
+ case Wildcard_Var: {
+ std::map<Variable_ID, Variable_ID>::iterator p = exists_mapping.find(cvi.curr_var());
+ Variable_ID v2;
+ if (p == exists_mapping.end()) {
+ v2 = f_exists->declare();
+ exists_mapping[cvi.curr_var()] = v2;
+ }
+ else
+ v2 = p->second;
+ h.update_coef(v2, cvi.curr_coef());
+ break;
+ }
+ default:
+ assert(0);
+ }
+ h.update_const((*e).get_const());
+ }
+
+ r.simplify();
+ if (!Gist(r, copy(known), 1).is_obvious_tautology()) {
+ CG_outputRepr *lhs = output_substitution_repr(ocg, result.first, v, false, R, assigned_on_the_fly);
+ if_repr = ocg->CreateEQ(ocg->CreateIntegerMod(lhs->clone(), ocg->CreateInt(abs(result.first.get_coef(v)))), ocg->CreateInt(0));
+ assign_repr = ocg->CreateDivide(lhs, ocg->CreateInt(abs(result.first.get_coef(v))));
+ }
+ else
+ assign_repr = output_substitution_repr(ocg, result.first, v, true, R, assigned_on_the_fly);
+ }
+ else
+ assign_repr = output_substitution_repr(ocg, result.first, v, true, R, assigned_on_the_fly);
+
+ if (assign_repr == NULL)
+ assign_repr = ocg->CreateInt(0);
+
+ return std::make_pair(if_repr, std::make_pair(assign_repr, result.second));
+}
+
+
+//
+// return NULL if 0
+//
+CG_outputRepr *output_substitution_repr(CG_outputBuilder *ocg, const EQ_Handle &equality, Variable_ID v, bool apply_v_coef, const Relation &R, const std::vector<std::pair<CG_outputRepr *, int> > &assigned_on_the_fly) {
+ const_cast<Relation &>(R).setup_names(); // hack
+
+ coef_t a = equality.get_coef(v);
+ assert(a != 0);
+
+ CG_outputRepr *repr = NULL;
+ for (Constr_Vars_Iter cvi(equality); cvi; cvi++)
+ if (cvi.curr_var() != v) {
+ CG_outputRepr *t;
+ if (cvi.curr_var()->kind() == Wildcard_Var) {
+ std::pair<bool, GEQ_Handle> result = find_floor_definition(R, cvi.curr_var());
+ if (!result.first) {
+ delete repr;
+ throw codegen_error("can't output non floor defined wildcard");
+ }
+ t = output_inequality_repr(ocg, result.second, cvi.curr_var(), R, assigned_on_the_fly);
+ }
+ else
+ t = output_ident(ocg, R, cvi.curr_var(), assigned_on_the_fly);
+ coef_t coef = cvi.curr_coef();
+
+ if (a > 0) {
+ if (coef > 0) {
+ if (coef == 1)
+ repr = ocg->CreateMinus(repr, t);
+ else
+ repr = ocg->CreateMinus(repr, ocg->CreateTimes(ocg->CreateInt(coef), t));
+ }
+ else { // coef < 0
+ if (coef == -1)
+ repr = ocg->CreatePlus(repr, t);
+ else
+ repr = ocg->CreatePlus(repr, ocg->CreateTimes(ocg->CreateInt(-coef), t));
+ }
+ }
+ else {
+ if (coef > 0) {
+ if (coef == 1)
+ repr = ocg->CreatePlus(repr, t);
+ else
+ repr = ocg->CreatePlus(repr, ocg->CreateTimes(ocg->CreateInt(coef), t));
+ }
+ else { // coef < 0
+ if (coef == -1)
+ repr = ocg->CreateMinus(repr, t);
+ else
+ repr = ocg->CreateMinus(repr, ocg->CreateTimes(ocg->CreateInt(-coef), t));
+ }
+ }
+ }
+
+ int c = equality.get_const();
+ if (a > 0) {
+ if (c > 0)
+ repr = ocg->CreateMinus(repr, ocg->CreateInt(c));
+ else if (c < 0)
+ repr = ocg->CreatePlus(repr, ocg->CreateInt(-c));
+ }
+ else {
+ if (c > 0)
+ repr = ocg->CreatePlus(repr, ocg->CreateInt(c));
+ else if (c < 0)
+ repr = ocg->CreateMinus(repr, ocg->CreateInt(-c));
+ }
+
+ if (apply_v_coef && abs(a) != 1)
+ repr = ocg->CreateDivide(repr, ocg->CreateInt(abs(a)));
+
+ return repr;
+}
+
+
+//
+// original Substitutions class from omega can't handle integer
+// division, this is new way.
+//
+std::vector<CG_outputRepr*> output_substitutions(CG_outputBuilder *ocg, const Relation &R, const std::vector<std::pair<CG_outputRepr *, int> > &assigned_on_the_fly) {
+ std::vector<CG_outputRepr *> subs;
+
+ for (int i = 1; i <= R.n_out(); i++) {
+ Relation mapping(R.n_out(), 1);
+ F_And *f_root = mapping.add_and();
+ EQ_Handle h = f_root->add_EQ();
+ h.update_coef(mapping.output_var(1), 1);
+ h.update_coef(mapping.input_var(i), -1);
+ Relation r = Composition(mapping, copy(R));
+ r.simplify();
+
+ Variable_ID v = r.output_var(1);
+ CG_outputRepr *repr = NULL;
+ std::pair<EQ_Handle, int> result = find_simplest_assignment(r, v, assigned_on_the_fly);
+ if (result.second < INT_MAX)
+ repr = output_substitution_repr(ocg, result.first, v, true, r, assigned_on_the_fly);
+ else {
+ std::pair<bool, GEQ_Handle> result = find_floor_definition(R, v);
+ if (result.first)
+ try {
+ repr = output_inequality_repr(ocg, result.second, v, R, assigned_on_the_fly);
+ }
+ catch (const codegen_error &) {
+ }
+ }
+
+ subs.push_back(repr);
+ }
+
+ return subs;
+}
+
+
+//
+// handle floor definition wildcards in equality, the second in returned pair
+// is the cost.
+//
+std::pair<EQ_Handle, int> find_simplest_assignment(const Relation &R, Variable_ID v, const std::vector<std::pair<CG_outputRepr *, int> > &assigned_on_the_fly) {
+ Conjunct *c = const_cast<Relation &>(R).single_conjunct();
+
+ int min_cost = INT_MAX;
+ EQ_Handle eq;
+ for (EQ_Iterator e(c->EQs()); e; e++)
+ if (!(*e).has_wildcards() && (*e).get_coef(v) != 0) {
+ int cost = 0;
+
+ if (abs((*e).get_coef(v)) != 1)
+ cost += 4; // divide cost
+
+ int num_var = 0;
+ for (Constr_Vars_Iter cvi(*e); cvi; cvi++)
+ if (cvi.curr_var() != v) {
+ num_var++;
+ if (abs(cvi.curr_coef()) != 1)
+ cost += 2; // multiply cost
+ if (cvi.curr_var()->kind() == Global_Var && cvi.curr_var()->get_global_var()->arity() > 0)
+ cost += 10; // function cost
+ else if (cvi.curr_var()->kind() == Input_Var &&
+ assigned_on_the_fly.size() >= cvi.curr_var()->get_position() &&
+ assigned_on_the_fly[cvi.curr_var()->get_position()-1].first != NULL)
+ cost += assigned_on_the_fly[cvi.curr_var()->get_position()-1].second; // substitution cost on record
+ }
+ if ((*e).get_const() != 0)
+ num_var++;
+ if (num_var > 1)
+ cost += num_var - 1; // addition cost
+
+ if (cost < min_cost) {
+ min_cost = cost;
+ eq = *e;
+ }
+ }
+
+ if (min_cost < INT_MAX)
+ return std::make_pair(eq, min_cost);
+
+ for (EQ_Iterator e(c->EQs()); e; e++)
+ if ((*e).has_wildcards() && (*e).get_coef(v) != 0) {
+ bool is_assignment = true;
+ for (Constr_Vars_Iter cvi(*e, true); cvi; cvi++) {
+ std::pair<bool, GEQ_Handle> result = find_floor_definition(R, v);
+ if (!result.first) {
+ is_assignment = false;
+ break;
+ }
+ }
+ if (!is_assignment)
+ continue;
+
+ int cost = 0;
+
+ if (abs((*e).get_coef(v)) != 1)
+ cost += 4; // divide cost
+
+ int num_var = 0;
+ for (Constr_Vars_Iter cvi(*e); cvi; cvi++)
+ if (cvi.curr_var() != v) {
+ num_var++;
+ if (abs(cvi.curr_coef()) != 1)
+ cost += 2; // multiply cost
+ if (cvi.curr_var()->kind() == Wildcard_Var)
+ cost += 10; // floor operation cost
+ else if (cvi.curr_var()->kind() == Global_Var && cvi.curr_var()->get_global_var()->arity() > 0)
+ cost += 20; // function cost
+ else if (cvi.curr_var()->kind() == Input_Var &&
+ assigned_on_the_fly.size() >= cvi.curr_var()->get_position() &&
+ assigned_on_the_fly[cvi.curr_var()->get_position()-1].first != NULL)
+ cost += assigned_on_the_fly[cvi.curr_var()->get_position()-1].second; // substitution cost on record
+ }
+ if ((*e).get_const() != 0)
+ num_var++;
+ if (num_var > 1)
+ cost += num_var - 1; // addition cost
+
+ if (cost < min_cost) {
+ min_cost = cost;
+ eq = *e;
+ }
+ }
+
+ return std::make_pair(eq, min_cost);
+}
+
+
+//
+// find floor definition for variable v, e.g. m-c <= 4v <= m, (c is
+// constant and 0 <= c < 4). this translates to v = floor(m, 4) and
+// return 4v<=m in this case. All wildcards in such inequality are
+// also floor defined.
+//
+std::pair<bool, GEQ_Handle> find_floor_definition(const Relation &R, Variable_ID v, std::set<Variable_ID> excluded_floor_vars) {
+ Conjunct *c = const_cast<Relation &>(R).single_conjunct();
+
+ excluded_floor_vars.insert(v);
+ for (GEQ_Iterator e = c->GEQs(); e; e++) {
+ coef_t a = (*e).get_coef(v);
+ if (a >= -1)
+ continue;
+ a = -a;
+
+ bool interested = true;
+ for (std::set<Variable_ID>::const_iterator i = excluded_floor_vars.begin(); i != excluded_floor_vars.end(); i++)
+ if ((*i) != v && (*e).get_coef(*i) != 0) {
+ interested = false;
+ break;
+ }
+ if (!interested)
+ continue;
+
+ // check if any wildcard is floor defined
+ bool has_undefined_wc = false;
+ for (Constr_Vars_Iter cvi(*e, true); cvi; cvi++)
+ if (excluded_floor_vars.find(cvi.curr_var()) == excluded_floor_vars.end()) {
+ std::pair<bool, GEQ_Handle> result = find_floor_definition(R, cvi.curr_var(), excluded_floor_vars);
+ if (!result.first) {
+ has_undefined_wc = true;
+ break;
+ }
+ }
+ if (has_undefined_wc)
+ continue;
+
+ // find the matching upper bound for floor definition
+ for (GEQ_Iterator e2 = c->GEQs(); e2; e2++)
+ if ((*e2).get_coef(v) == a && (*e).get_const() + (*e2).get_const() < a) {
+ bool match = true;
+ for (Constr_Vars_Iter cvi(*e); cvi; cvi++)
+ if ((*e2).get_coef(cvi.curr_var()) != -cvi.curr_coef()) {
+ match = false;
+ break;
+ }
+ if (!match)
+ continue;
+ for (Constr_Vars_Iter cvi(*e2); cvi; cvi++)
+ if ((*e).get_coef(cvi.curr_var()) != -cvi.curr_coef()) {
+ match = false;
+ break;
+ }
+ if (match)
+ return std::make_pair(true, *e);
+ }
+ }
+
+ return std::make_pair(false, GEQ_Handle());
+}
+
+//
+// find the stride involving the specified variable, the stride
+// equality can have other wildcards as long as they are defined as
+// floor variables.
+//
+std::pair<EQ_Handle, Variable_ID> find_simplest_stride(const Relation &R, Variable_ID v) {
+ int best_num_var = INT_MAX;
+ coef_t best_coef;
+ EQ_Handle best_eq;
+ Variable_ID best_stride_wc;
+ for (EQ_Iterator e(const_cast<Relation &>(R).single_conjunct()->EQs()); e; e++)
+ if ((*e).has_wildcards() && (*e).get_coef(v) != 0) {
+ bool is_stride = true;
+ bool found_free = false;
+ int num_var = 0;
+ int num_floor = 0;
+ Variable_ID stride_wc;
+ for (Constr_Vars_Iter cvi(*e); cvi; cvi++) {
+ switch (cvi.curr_var()->kind()) {
+ case Wildcard_Var: {
+ bool is_free = true;
+ for (GEQ_Iterator e2(const_cast<Relation &>(R).single_conjunct()->GEQs()); e2; e2++)
+ if ((*e2).get_coef(cvi.curr_var()) != 0) {
+ is_free = false;
+ break;
+ }
+ if (is_free) {
+ if (found_free)
+ is_stride = false;
+ else {
+ found_free = true;
+ stride_wc = cvi.curr_var();
+ }
+ }
+ else {
+ std::pair<bool, GEQ_Handle> result = find_floor_definition(R, cvi.curr_var());
+ if (result.first)
+ num_floor++;
+ else
+ is_stride = false;
+ }
+ break;
+ }
+ case Input_Var:
+ num_var++;
+ break;
+ default:
+ ;
+ }
+
+ if (!is_stride)
+ break;
+ }
+
+ if (is_stride) {
+ coef_t coef = abs((*e).get_coef(v));
+ if (best_num_var == INT_MAX || coef < best_coef ||
+ (coef == best_coef && num_var < best_num_var)) {
+ best_coef = coef;
+ best_num_var = num_var;
+ best_eq = *e;
+ best_stride_wc = stride_wc;
+ }
+ }
+ }
+
+ if (best_num_var != INT_MAX)
+ return std::make_pair(best_eq, best_stride_wc);
+ else
+ return std::make_pair(EQ_Handle(), static_cast<Variable_ID>(NULL));
+}
+
+//
+// convert relation to if-condition
+//
+CG_outputRepr *output_guard(CG_outputBuilder *ocg, const Relation &R, const std::vector<std::pair<CG_outputRepr *, int> > &assigned_on_the_fly) {
+ assert(R.n_out()==0);
+
+ CG_outputRepr *result = NULL;
+ Conjunct *c = const_cast<Relation &>(R).single_conjunct();
+
+ // e.g. 4i=5*j
+ for (EQ_Iterator e = c->EQs(); e; e++)
+ if (!(*e).has_wildcards()) {
+ CG_outputRepr *lhs = NULL;
+ CG_outputRepr *rhs = NULL;
+ for (Constr_Vars_Iter cvi(*e); cvi; cvi++) {
+ CG_outputRepr *v = output_ident(ocg, R, cvi.curr_var(), assigned_on_the_fly);
+ coef_t coef = cvi.curr_coef();
+ if (coef > 0) {
+ if (coef == 1)
+ lhs = ocg->CreatePlus(lhs, v);
+ else
+ lhs = ocg->CreatePlus(lhs, ocg->CreateTimes(ocg->CreateInt(coef), v));
+ }
+ else { // coef < 0
+ if (coef == -1)
+ rhs = ocg->CreatePlus(rhs, v);
+ else
+ rhs = ocg->CreatePlus(rhs, ocg->CreateTimes(ocg->CreateInt(-coef), v));
+ }
+ }
+ coef_t c = (*e).get_const();
+
+ CG_outputRepr *term;
+ if (lhs == NULL)
+ term = ocg->CreateEQ(rhs, ocg->CreateInt(c));
+ else {
+ if (c > 0)
+ rhs = ocg->CreateMinus(rhs, ocg->CreateInt(c));
+ else if (c < 0)
+ rhs = ocg->CreatePlus(rhs, ocg->CreateInt(-c));
+ else if (rhs == NULL)
+ rhs = ocg->CreateInt(0);
+ term = ocg->CreateEQ(lhs, rhs);
+ }
+ result = ocg->CreateAnd(result, term);
+ }
+
+ // e.g. i>5j
+ for (GEQ_Iterator e = c->GEQs(); e; e++)
+ if (!(*e).has_wildcards()) {
+ CG_outputRepr *lhs = NULL;
+ CG_outputRepr *rhs = NULL;
+ for (Constr_Vars_Iter cvi(*e); cvi; cvi++) {
+ CG_outputRepr *v = output_ident(ocg, R, cvi.curr_var(), assigned_on_the_fly);
+ coef_t coef = cvi.curr_coef();
+ if (coef > 0) {
+ if (coef == 1)
+ lhs = ocg->CreatePlus(lhs, v);
+ else
+ lhs = ocg->CreatePlus(lhs, ocg->CreateTimes(ocg->CreateInt(coef), v));
+ }
+ else { // coef < 0
+ if (coef == -1)
+ rhs = ocg->CreatePlus(rhs, v);
+ else
+ rhs = ocg->CreatePlus(rhs, ocg->CreateTimes(ocg->CreateInt(-coef), v));
+ }
+ }
+ coef_t c = (*e).get_const();
+
+ CG_outputRepr *term;
+ if (lhs == NULL)
+ term = ocg->CreateLE(rhs, ocg->CreateInt(c));
+ else {
+ if (c > 0)
+ rhs = ocg->CreateMinus(rhs, ocg->CreateInt(c));
+ else if (c < 0)
+ rhs = ocg->CreatePlus(rhs, ocg->CreateInt(-c));
+ else if (rhs == NULL)
+ rhs = ocg->CreateInt(0);
+ term = ocg->CreateGE(lhs, rhs);
+ }
+ result = ocg->CreateAnd(result, term);
+ }
+
+ // e.g. 4i=5j+4alpha
+ for (EQ_Iterator e = c->EQs(); e; e++)
+ if ((*e).has_wildcards()) {
+ Variable_ID wc;
+ int num_wildcard = 0;
+ int num_positive = 0;
+ int num_negative = 0;
+ for (Constr_Vars_Iter cvi(*e); cvi; cvi++) {
+ if (cvi.curr_var()->kind() == Wildcard_Var) {
+ num_wildcard++;
+ wc = cvi.curr_var();
+ }
+ else {
+ if (cvi.curr_coef() > 0)
+ num_positive++;
+ else
+ num_negative++;
+ }
+ }
+
+ if (num_wildcard > 1) {
+ delete result;
+ throw codegen_error("Can't generate equality condition with multiple wildcards");
+ }
+ int sign = (num_positive>=num_negative)?1:-1;
+
+ CG_outputRepr *lhs = NULL;
+ for (Constr_Vars_Iter cvi(*e); cvi; cvi++) {
+ if (cvi.curr_var() != wc) {
+ CG_outputRepr *v = output_ident(ocg, R, cvi.curr_var(), assigned_on_the_fly);
+ coef_t coef = cvi.curr_coef();
+ if (sign == 1) {
+ if (coef > 0) {
+ if (coef == 1)
+ lhs = ocg->CreatePlus(lhs, v);
+ else
+ lhs = ocg->CreatePlus(lhs, ocg->CreateTimes(ocg->CreateInt(coef), v));
+ }
+ else { // coef < 0
+ if (coef == -1)
+ lhs = ocg->CreateMinus(lhs, v);
+ else
+ lhs = ocg->CreateMinus(lhs, ocg->CreateTimes(ocg->CreateInt(-coef), v));
+ }
+ }
+ else {
+ if (coef > 0) {
+ if (coef == 1)
+ lhs = ocg->CreateMinus(lhs, v);
+ else
+ lhs = ocg->CreateMinus(lhs, ocg->CreateTimes(ocg->CreateInt(coef), v));
+ }
+ else { // coef < 0
+ if (coef == -1)
+ lhs = ocg->CreatePlus(lhs, v);
+ else
+ lhs = ocg->CreatePlus(lhs, ocg->CreateTimes(ocg->CreateInt(-coef), v));
+ }
+ }
+ }
+ }
+ coef_t c = (*e).get_const();
+ if (sign == 1) {
+ if (c > 0)
+ lhs = ocg->CreatePlus(lhs, ocg->CreateInt(c));
+ else if (c < 0)
+ lhs = ocg->CreateMinus(lhs, ocg->CreateInt(-c));
+ }
+ else {
+ if (c > 0)
+ lhs = ocg->CreateMinus(lhs, ocg->CreateInt(c));
+ else if (c < 0)
+ lhs = ocg->CreatePlus(lhs, ocg->CreateInt(-c));
+ }
+
+ lhs = ocg->CreateIntegerMod(lhs, ocg->CreateInt(abs((*e).get_coef(wc))));
+ CG_outputRepr *term = ocg->CreateEQ(lhs, ocg->CreateInt(0));
+ result = ocg->CreateAnd(result, term);
+ }
+
+ // e.g. 4alpha<=i<=5alpha
+ for (GEQ_Iterator e = c->GEQs(); e; e++)
+ if ((*e).has_wildcards()) {
+ Variable_ID wc;
+ int num_wildcard = 0;
+ for (Constr_Vars_Iter cvi(*e, true); cvi; cvi++)
+ if (num_wildcard == 0) {
+ wc = cvi.curr_var();
+ num_wildcard = 1;
+ }
+ else
+ num_wildcard++;
+
+ if (num_wildcard > 1) {
+ delete result;
+ // e.g. c*alpha - x >= 0 (*)
+ // -d*alpha + y >= 0 (*)
+ // e1*alpha + f1*beta + g1 >= 0 (**)
+ // e2*alpha + f2*beta + g2 >= 0 (**)
+ // ...
+ // TODO: should generate a testing loop for alpha using its lower and
+ // upper bounds from (*) constraints and do the same if-condition test
+ // for beta from each pair of opposite (**) constraints as above,
+ // and exit the loop when if-condition satisfied.
+ throw codegen_error("Can't generate multiple wildcard GEQ guards right now");
+ }
+
+ coef_t c = (*e).get_coef(wc);
+ int sign = (c>0)?1:-1;
+
+ GEQ_Iterator e2 = e;
+ e2++;
+ for ( ; e2; e2++) {
+ coef_t c2 = (*e2).get_coef(wc);
+ if (c2 == 0)
+ continue;
+ int sign2 = (c2>0)?1:-1;
+ if (sign != -sign2)
+ continue;
+ int num_wildcard2 = 0;
+ for (Constr_Vars_Iter cvi(*e2, true); cvi; cvi++)
+ num_wildcard2++;
+ if (num_wildcard2 > 1)
+ continue;
+
+ GEQ_Handle lb, ub;
+ if (sign == 1) {
+ lb = (*e);
+ ub = (*e2);
+ }
+ else {
+ lb = (*e2);
+ ub = (*e);
+ }
+
+ CG_outputRepr *lhs = NULL;
+ for (Constr_Vars_Iter cvi(lb); cvi; cvi++)
+ if (cvi.curr_var() != wc) {
+ CG_outputRepr *v = output_ident(ocg, R, cvi.curr_var(), assigned_on_the_fly);
+ coef_t coef = cvi.curr_coef();
+ if (coef > 0) {
+ if (coef == 1)
+ lhs = ocg->CreateMinus(lhs, v);
+ else
+ lhs = ocg->CreateMinus(lhs, ocg->CreateTimes(ocg->CreateInt(coef), v));
+ }
+ else { // coef < 0
+ if (coef == -1)
+ lhs = ocg->CreatePlus(lhs, v);
+ else
+ lhs = ocg->CreatePlus(lhs, ocg->CreateTimes(ocg->CreateInt(-coef), v));
+ }
+ }
+ coef_t c = lb.get_const();
+ if (c > 0)
+ lhs = ocg->CreateMinus(lhs, ocg->CreateInt(c));
+ else if (c < 0)
+ lhs = ocg->CreatePlus(lhs, ocg->CreateInt(-c));
+
+ CG_outputRepr *rhs = NULL;
+ for (Constr_Vars_Iter cvi(ub); cvi; cvi++)
+ if (cvi.curr_var() != wc) {
+ CG_outputRepr *v = output_ident(ocg, R, cvi.curr_var(), assigned_on_the_fly);
+ coef_t coef = cvi.curr_coef();
+ if (coef > 0) {
+ if (coef == 1)
+ rhs = ocg->CreatePlus(rhs, v);
+ else
+ rhs = ocg->CreatePlus(rhs, ocg->CreateTimes(ocg->CreateInt(coef), v));
+ }
+ else { // coef < 0
+ if (coef == -1)
+ rhs = ocg->CreateMinus(rhs, v);
+ else
+ rhs = ocg->CreateMinus(rhs, ocg->CreateTimes(ocg->CreateInt(-coef), v));
+ }
+ }
+ c = ub.get_const();
+ if (c > 0)
+ rhs = ocg->CreatePlus(rhs, ocg->CreateInt(c));
+ else if (c < 0)
+ rhs = ocg->CreateMinus(rhs, ocg->CreateInt(-c));
+
+ rhs = ocg->CreateIntegerFloor(rhs, ocg->CreateInt(-ub.get_coef(wc)));
+ rhs = ocg->CreateTimes(ocg->CreateInt(lb.get_coef(wc)), rhs);
+ CG_outputRepr *term = ocg->CreateLE(lhs, rhs);
+ result = ocg->CreateAnd(result, term);
+ }
+ }
+
+ return result;
+}
+
+
+//
+// return NULL if 0
+//
+CG_outputRepr *output_inequality_repr(CG_outputBuilder *ocg, const GEQ_Handle &inequality, Variable_ID v, const Relation &R, const std::vector<std::pair<CG_outputRepr *, int> > &assigned_on_the_fly, std::set<Variable_ID> excluded_floor_vars) {
+ const_cast<Relation &>(R).setup_names(); // hack
+
+ coef_t a = inequality.get_coef(v);
+ assert(a != 0);
+ excluded_floor_vars.insert(v);
+
+ CG_outputRepr *repr = NULL;
+ for (Constr_Vars_Iter cvi(inequality); cvi; cvi++)
+ if (cvi.curr_var() != v) {
+ CG_outputRepr *t;
+ if (cvi.curr_var()->kind() == Wildcard_Var) {
+ std::pair<bool, GEQ_Handle> result = find_floor_definition(R, cvi.curr_var(), excluded_floor_vars);
+ if (!result.first) {
+ delete repr;
+ throw codegen_error("Can't generate bound expression with wildcard not involved in floor definition");
+ }
+ try {
+ t = output_inequality_repr(ocg, result.second, cvi.curr_var(), R, assigned_on_the_fly, excluded_floor_vars);
+ }
+ catch (const std::exception &e) {
+ delete repr;
+ throw e;
+ }
+ }
+ else
+ t = output_ident(ocg, R, cvi.curr_var(), assigned_on_the_fly);
+
+ coef_t coef = cvi.curr_coef();
+ if (a > 0) {
+ if (coef > 0) {
+ if (coef == 1)
+ repr = ocg->CreateMinus(repr, t);
+ else
+ repr = ocg->CreateMinus(repr, ocg->CreateTimes(ocg->CreateInt(coef), t));
+ }
+ else {
+ if (coef == -1)
+ repr = ocg->CreatePlus(repr, t);
+ else
+ repr = ocg->CreatePlus(repr, ocg->CreateTimes(ocg->CreateInt(-coef), t));
+ }
+ }
+ else {
+ if (coef > 0) {
+ if (coef == 1)
+ repr = ocg->CreatePlus(repr, t);
+ else
+ repr = ocg->CreatePlus(repr, ocg->CreateTimes(ocg->CreateInt(coef), t));
+ }
+ else {
+ if (coef == -1)
+ repr = ocg->CreateMinus(repr, t);
+ else
+ repr = ocg->CreateMinus(repr, ocg->CreateTimes(ocg->CreateInt(-coef), t));
+ }
+ }
+ }
+ coef_t c = inequality.get_const();
+ if (c > 0) {
+ if (a > 0)
+ repr = ocg->CreateMinus(repr, ocg->CreateInt(c));
+ else
+ repr = ocg->CreatePlus(repr, ocg->CreateInt(c));
+ }
+ else if (c < 0) {
+ if (a > 0)
+ repr = ocg->CreatePlus(repr, ocg->CreateInt(-c));
+ else
+ repr = ocg->CreateMinus(repr, ocg->CreateInt(-c));
+ }
+
+ if (abs(a) == 1)
+ return repr;
+ else if (a > 0)
+ return ocg->CreateIntegerCeil(repr, ocg->CreateInt(a));
+ else // a < 0
+ return ocg->CreateIntegerFloor(repr, ocg->CreateInt(-a));
+}
+
+
+//
+// nothing special, just an alias
+//
+CG_outputRepr *output_upper_bound_repr(CG_outputBuilder *ocg, const GEQ_Handle &inequality, Variable_ID v, const Relation &R, const std::vector<std::pair<CG_outputRepr *, int> > &assigned_on_the_fly) {
+ assert(inequality.get_coef(v) < 0);
+ CG_outputRepr* zero_;
+
+ zero_ = output_inequality_repr(ocg, inequality, v, R, assigned_on_the_fly);
+
+ if(!zero_)
+ zero_ = ocg->CreateInt(0);
+
+ return zero_;
+
+}
+
+
+//
+// output lower bound with respect to lattice
+//
+CG_outputRepr *output_lower_bound_repr(CG_outputBuilder *ocg, const GEQ_Handle &inequality, Variable_ID v, const EQ_Handle &stride_eq, Variable_ID wc, const Relation &R, const Relation &known, const std::vector<std::pair<CG_outputRepr *, int> > &assigned_on_the_fly) {
+ assert(inequality.get_coef(v) > 0);
+ CG_outputRepr* zero_;
+ if (wc == NULL || bound_must_hit_stride(inequality, v, stride_eq, wc, R, known)){
+ zero_ = output_inequality_repr(ocg, inequality, v, R, assigned_on_the_fly);
+ if(!zero_)
+ zero_ = ocg->CreateInt(0);
+
+ return zero_;
+ }
+ CG_outputRepr *strideBoundRepr = NULL;
+ int sign = (stride_eq.get_coef(v)>0)?1:-1;
+ for (Constr_Vars_Iter cvi(stride_eq); cvi; cvi++) {
+ Variable_ID v2 = cvi.curr_var();
+ if (v2 == v || v2 == wc)
+ continue;
+
+ CG_outputRepr *v_repr;
+ if (v2->kind() == Input_Var || v2->kind() == Global_Var)
+ v_repr = output_ident(ocg, R, v2, assigned_on_the_fly);
+ else if (v2->kind() == Wildcard_Var) {
+ std::pair<bool, GEQ_Handle> result = find_floor_definition(R, v2);
+ assert(result.first);
+ v_repr = output_inequality_repr(ocg, result.second, v2, R, assigned_on_the_fly);
+ }
+
+ coef_t coef = cvi.curr_coef();
+ if (sign < 0) {
+ if (coef > 0) {
+ if (coef == 1)
+ strideBoundRepr = ocg->CreatePlus(strideBoundRepr, v_repr);
+ else
+ strideBoundRepr = ocg->CreatePlus(strideBoundRepr, ocg->CreateTimes(ocg->CreateInt(coef), v_repr));
+ }
+ else { // coef < 0
+ if (coef == -1)
+ strideBoundRepr = ocg->CreateMinus(strideBoundRepr, v_repr);
+ else
+ strideBoundRepr = ocg->CreateMinus(strideBoundRepr, ocg->CreateTimes(ocg->CreateInt(-coef), v_repr));
+ }
+ }
+ else {
+ if (coef > 0) {
+ if (coef == 1)
+ strideBoundRepr = ocg->CreateMinus(strideBoundRepr, v_repr);
+ else
+ strideBoundRepr = ocg->CreateMinus(strideBoundRepr, ocg->CreateTimes(ocg->CreateInt(coef), v_repr));
+ }
+ else { // coef < 0
+ if (coef == -1)
+ strideBoundRepr = ocg->CreatePlus(strideBoundRepr, v_repr);
+ else
+ strideBoundRepr = ocg->CreatePlus(strideBoundRepr, ocg->CreateTimes(ocg->CreateInt(-coef), v_repr));
+ }
+ }
+ }
+ coef_t c = stride_eq.get_const();
+ if (c > 0) {
+ if (sign < 0)
+ strideBoundRepr = ocg->CreatePlus(strideBoundRepr, ocg->CreateInt(c));
+ else
+ strideBoundRepr = ocg->CreateMinus(strideBoundRepr, ocg->CreateInt(c));
+ }
+ else if (c < 0) {
+ if (sign < 0)
+ strideBoundRepr = ocg->CreateMinus(strideBoundRepr, ocg->CreateInt(-c));
+ else
+ strideBoundRepr = ocg->CreatePlus(strideBoundRepr, ocg->CreateInt(-c));
+ }
+
+ CG_outputRepr *repr = output_inequality_repr(ocg, inequality, v, R, assigned_on_the_fly);
+ CG_outputRepr *repr2 = ocg->CreateCopy(repr);
+ repr = ocg->CreatePlus(repr2, ocg->CreateIntegerMod(ocg->CreateMinus(strideBoundRepr, repr), ocg->CreateInt(abs(stride_eq.get_coef(wc)))));
+
+ return repr;
+}
+
+
+//
+// return loop control structure only
+//
+CG_outputRepr *output_loop(CG_outputBuilder *ocg, const Relation &R, int level, const Relation &known, const std::vector<std::pair<CG_outputRepr *, int> > &assigned_on_the_fly) {
+ std::pair<EQ_Handle, Variable_ID> result = find_simplest_stride(R, const_cast<Relation &>(R).set_var(level));
+ if (result.second != NULL)
+ assert(abs(result.first.get_coef(const_cast<Relation &>(R).set_var(level))) == 1);
+
+ std::vector<CG_outputRepr *> lbList, ubList;
+ try {
+
+ coef_t const_lb = negInfinity, const_ub = posInfinity;
+
+ for (GEQ_Iterator e(const_cast<Relation &>(R).single_conjunct()->GEQs()); e; e++) {
+ coef_t coef = (*e).get_coef(const_cast<Relation &>(R).set_var(level));
+
+ if (coef > 0) {
+ CG_outputRepr *repr = output_lower_bound_repr(ocg, *e, const_cast<Relation &>(R).set_var(level), result.first, result.second, R, known, assigned_on_the_fly);
+ if (repr == NULL)
+ repr = ocg->CreateInt(0);
+ lbList.push_back(repr);
+
+ if ((*e).is_const(const_cast<Relation &>(R).set_var(level))){
+ if(!result.second) {
+
+ //no variables but v in constr
+ coef_t L,m;
+ L = -((*e).get_const());
+
+ m = (*e).get_coef(const_cast<Relation &>(R).set_var(level));
+ coef_t sb = (int) (ceil(((float) L) /m));
+ set_max(const_lb, sb);
+ }
+ else{
+
+ coef_t L,m,s,c;
+ L = -((*e).get_const());
+ m = (*e).get_coef(const_cast<Relation &>(R).set_var(level));
+ s = abs(result.first.get_coef(result.second));
+ c = result.first.get_const();
+ coef_t sb = (s * (int) (ceil( (float) (L - (c * m)) /(s*m))))+ c;
+ set_max(const_lb, sb);
+
+ }
+ }
+
+ }
+ else if (coef < 0) {
+ CG_outputRepr *repr = output_upper_bound_repr(ocg, *e, const_cast<Relation &>(R).set_var(level), R, assigned_on_the_fly);
+ if (repr == NULL)
+ repr = ocg->CreateInt(0);
+ ubList.push_back(repr);
+
+ if ((*e).is_const(const_cast<Relation &>(R).set_var(level))) {
+ // no variables but v in constraint
+ set_min(const_ub,-(*e).get_const()/(*e).get_coef(const_cast<Relation &>(R).set_var(level)));
+ }
+
+ }
+ }
+
+ if(fillInBounds && lbList.size() == 1 && const_lb != negInfinity)
+ lowerBoundForLevel = const_lb;
+
+ if(fillInBounds && const_ub != posInfinity)
+ upperBoundForLevel = const_ub;
+ if (lbList.size() == 0)
+ throw codegen_error("missing lower bound at loop level " + to_string(level));
+ if (ubList.size() == 0)
+ throw codegen_error("missing upper bound at loop level " + to_string(level));
+ }
+ catch (const std::exception &e) {
+ for (int i = 0; i < lbList.size(); i++)
+ delete lbList[i];
+ for (int i = 0; i < ubList.size(); i++)
+ delete ubList[i];
+ throw e;
+ }
+
+ CG_outputRepr *lbRepr = NULL;
+ if (lbList.size() > 1)
+ lbRepr = ocg->CreateInvoke("max", lbList);
+ else // (lbList.size() == 1)
+ lbRepr = lbList[0];
+
+ CG_outputRepr *ubRepr = NULL;
+ if (ubList.size() > 1)
+ ubRepr = ocg->CreateInvoke("min", ubList);
+ else // (ubList.size() == 1)
+ ubRepr = ubList[0];
+
+ CG_outputRepr *stRepr;
+ if (result.second == NULL)
+ stRepr = ocg->CreateInt(1);
+ else
+ stRepr = ocg->CreateInt(abs(result.first.get_coef(result.second)));
+ CG_outputRepr *indexRepr = output_ident(ocg, R, const_cast<Relation &>(R).set_var(level), assigned_on_the_fly);
+ return ocg->CreateInductive(indexRepr, lbRepr, ubRepr, stRepr);
+}
+
+
+//
+// parameter f_root is inside f_exists, not the other way around.
+// return replicated variable in new relation, with all cascaded floor definitions
+// using wildcards defined in the same way as in the original relation.
+//
+Variable_ID replicate_floor_definition(const Relation &R, const Variable_ID floor_var,
+ Relation &r, F_Exists *f_exists, F_And *f_root,
+ std::map<Variable_ID, Variable_ID> &exists_mapping) {
+ assert(R.n_out() == 0 && r.n_out() == 0 && R.n_inp() == r.n_inp());
+
+ std::set<Variable_ID> excluded_floor_vars;
+ std::stack<Variable_ID> to_fill;
+ to_fill.push(floor_var);
+
+ while (!to_fill.empty()) {
+ Variable_ID v = to_fill.top();
+ to_fill.pop();
+ if (excluded_floor_vars.find(v) != excluded_floor_vars.end())
+ continue;
+
+ std::pair<bool, GEQ_Handle> result = find_floor_definition(R, v, excluded_floor_vars);
+ assert(result.first);
+ excluded_floor_vars.insert(v);
+
+ GEQ_Handle h1 = f_root->add_GEQ();
+ GEQ_Handle h2 = f_root->add_GEQ();
+ for (Constr_Vars_Iter cvi(result.second); cvi; cvi++) {
+ Variable_ID v2 = cvi.curr_var();
+ switch (v2->kind()) {
+ case Input_Var: {
+ int pos = v2->get_position();
+ h1.update_coef(r.input_var(pos), cvi.curr_coef());
+ h2.update_coef(r.input_var(pos), -cvi.curr_coef());
+ break;
+ }
+ case Wildcard_Var: {
+ std::map<Variable_ID, Variable_ID>::iterator p = exists_mapping.find(v2);
+ Variable_ID v3;
+ if (p == exists_mapping.end()) {
+ v3 = f_exists->declare();
+ exists_mapping[v2] = v3;
+ }
+ else
+ v3 = p->second;
+ h1.update_coef(v3, cvi.curr_coef());
+ h2.update_coef(v3, -cvi.curr_coef());
+ if (v2 != v)
+ to_fill.push(v2);
+ break;
+ }
+ case Global_Var: {
+ Global_Var_ID g = v2->get_global_var();
+ Variable_ID v3;
+ if (g->arity() == 0)
+ v3 = r.get_local(g);
+ else
+ v3 = r.get_local(g, v2->function_of());
+ h1.update_coef(v3, cvi.curr_coef());
+ h2.update_coef(v3, -cvi.curr_coef());
+ break;
+ }
+ default:
+ assert(false);
+ }
+ }
+ h1.update_const(result.second.get_const());
+ h2.update_const(-result.second.get_const()-result.second.get_coef(v)-1);
+ }
+
+ if (floor_var->kind() == Input_Var)
+ return r.input_var(floor_var->get_position());
+ else if (floor_var->kind() == Wildcard_Var)
+ return exists_mapping[floor_var];
+ else
+ assert(false);
+}
+
+
+//
+// pick one guard condition from relation. it can involve multiple
+// constraints when involving wildcards, as long as its complement
+// is a single conjunct.
+//
+Relation pick_one_guard(const Relation &R, int level) {
+ assert(R.n_out()==0);
+
+ Relation r = Relation::True(R.n_set());
+
+ for (GEQ_Iterator e(const_cast<Relation &>(R).single_conjunct()->GEQs()); e; e++)
+ if (!(*e).has_wildcards()) {
+ r.and_with_GEQ(*e);
+ r.simplify();
+ r.copy_names(R);
+ r.setup_names();
+ return r;
+ }
+
+ for (EQ_Iterator e(const_cast<Relation &>(R).single_conjunct()->EQs()); e; e++)
+ if (!(*e).has_wildcards()) {
+ r.and_with_GEQ(*e);
+ r.simplify();
+ r.copy_names(R);
+ r.setup_names();
+ return r;
+ }
+
+ for (EQ_Iterator e(const_cast<Relation &>(R).single_conjunct()->EQs()); e; e++)
+ if ((*e).has_wildcards()) {
+ int num_wildcard = 0;
+ int max_level = 0;
+ for (Constr_Vars_Iter cvi(*e); cvi; cvi++)
+ switch (cvi.curr_var()->kind()) {
+ case Wildcard_Var:
+ num_wildcard++;
+ break;
+ case Input_Var:
+ if (cvi.curr_var()->get_position() > max_level)
+ max_level = cvi.curr_var()->get_position();
+ break;
+ default:
+ ;
+ }
+
+ if (num_wildcard == 1 && max_level != level-1) {
+ r.and_with_EQ(*e);
+ r.simplify();
+ r.copy_names(R);
+ r.setup_names();
+ return r;
+ }
+ }
+
+ for (GEQ_Iterator e(const_cast<Relation &>(R).single_conjunct()->GEQs()); e; e++)
+ if ((*e).has_wildcards()) {
+ int num_wildcard = 0;
+ int max_level = 0;
+ bool direction;
+ Variable_ID wc;
+ for (Constr_Vars_Iter cvi(*e); cvi; cvi++)
+ switch (cvi.curr_var()->kind()) {
+ case Wildcard_Var:
+ num_wildcard++;
+ wc = cvi.curr_var();
+ direction = cvi.curr_coef()>0?true:false;
+ break;
+ case Input_Var:
+ if (cvi.curr_var()->get_position() > max_level)
+ max_level = cvi.curr_var()->get_position();
+ break;
+ default:
+ ;
+ }
+
+ if (num_wildcard == 1 && max_level != level-1) {
+ // find the pairing inequality
+ GEQ_Iterator e2 = e;
+ e2++;
+ for ( ; e2; e2++) {
+ int num_wildcard2 = 0;
+ int max_level2 = 0;
+ bool direction2;
+ Variable_ID wc2;
+ for (Constr_Vars_Iter cvi(*e2); cvi; cvi++)
+ switch (cvi.curr_var()->kind()) {
+ case Wildcard_Var:
+ num_wildcard2++;
+ wc2 = cvi.curr_var();
+ direction2 = cvi.curr_coef()>0?true:false;
+ break;
+ case Input_Var:
+ if (cvi.curr_var()->get_position() > max_level2)
+ max_level2 = cvi.curr_var()->get_position();
+ break;
+ default:
+ ;
+ }
+
+ if (num_wildcard2 == 1 && max_level2 != level-1 && wc2 == wc && direction2 == not direction) {
+ F_Exists *f_exists = r.and_with_and()->add_exists();
+ Variable_ID wc3 = f_exists->declare();
+ F_And *f_root = f_exists->add_and();
+ GEQ_Handle h = f_root->add_GEQ();
+ for (Constr_Vars_Iter cvi(*e); cvi; cvi++) {
+ switch (cvi.curr_var()->kind()) {
+ case Wildcard_Var:
+ h.update_coef(wc3, cvi.curr_coef());
+ break;
+ case Input_Var:
+ h.update_coef(r.input_var(cvi.curr_var()->get_position()), cvi.curr_coef());
+ break;
+ case Global_Var: {
+ Global_Var_ID g = cvi.curr_var()->get_global_var();
+ Variable_ID v;
+ if (g->arity() == 0)
+ v = r.get_local(g);
+ else
+ v = r.get_local(g, cvi.curr_var()->function_of());
+ h.update_coef(v, cvi.curr_coef());
+ break;
+ }
+ default:
+ assert(false);
+ }
+ }
+ h.update_const((*e).get_const());
+
+ h = f_root->add_GEQ();
+ for (Constr_Vars_Iter cvi(*e2); cvi; cvi++) {
+ switch (cvi.curr_var()->kind()) {
+ case Wildcard_Var:
+ h.update_coef(wc3, cvi.curr_coef());
+ break;
+ case Input_Var:
+ h.update_coef(r.input_var(cvi.curr_var()->get_position()), cvi.curr_coef());
+ break;
+ case Global_Var: {
+ Global_Var_ID g = cvi.curr_var()->get_global_var();
+ Variable_ID v;
+ if (g->arity() == 0)
+ v = r.get_local(g);
+ else
+ v = r.get_local(g, cvi.curr_var()->function_of());
+ h.update_coef(v, cvi.curr_coef());
+ break;
+ }
+ default:
+ assert(false);
+ }
+ }
+ h.update_const((*e2).get_const());
+
+ r.simplify();
+ r.copy_names(R);
+ r.setup_names();
+ return r;
+ }
+ }
+ }
+ }
+}
+
+
+//
+// heavy lifting for code output for one leaf node
+//
+CG_outputRepr *leaf_print_repr(BoolSet<> active, const std::map<int, Relation> &guards,
+ CG_outputRepr *guard_repr, const Relation &known,
+ int indent, CG_outputBuilder *ocg, const std::vector<int> &remap,
+ const std::vector<Relation> &xforms, const std::vector<CG_outputRepr *> &stmts,
+ const std::vector<std::pair<CG_outputRepr *, int> > &assigned_on_the_fly) {
+ if (active.num_elem() == 0)
+ return NULL;
+
+ CG_outputRepr *stmt_list = NULL;
+ for (BoolSet<>::iterator i = active.begin(); i != active.end(); i++) {
+ std::map<int, Relation>::const_iterator j = guards.find(*i);
+ if (j == guards.end() || Must_Be_Subset(copy(known), copy(j->second))) {
+ Relation mapping = Inverse(copy((xforms[remap[*i]])));
+ mapping.simplify();
+ mapping.setup_names();
+ std::vector<std::string> loop_vars;
+ for (int k = 1; k <= mapping.n_out(); k++) {
+ loop_vars.push_back(mapping.output_var(k)->name());
+// std::cout << "CG_Utils:: " << k << ", " << mapping.output_var(k)->name().c_str() << "\n";
+ }
+ std::vector<CG_outputRepr *> sList = output_substitutions(ocg, mapping, assigned_on_the_fly);
+ stmt_list = ocg->StmtListAppend(stmt_list, ocg->CreateSubstitutedStmt((guard_repr==NULL)?indent:indent+1, stmts[remap[*i]]->clone(), loop_vars, sList));
+ active.unset(*i);
+ }
+ }
+
+ if (stmt_list != NULL) {
+ if (active.num_elem() != 0)
+ stmt_list = ocg->StmtListAppend(stmt_list, leaf_print_repr(active, guards, NULL, known, (guard_repr==NULL)?indent:indent+1, ocg, remap, xforms, stmts, assigned_on_the_fly));
+ if (guard_repr == NULL)
+ return stmt_list;
+ else
+ return ocg->CreateIf(indent, guard_repr, stmt_list, NULL);
+ }
+ else {
+ Relation then_cond = find_best_guard(const_cast<std::map<int, Relation> &>(guards)[*(active.begin())], active, guards);
+ assert(!then_cond.is_obvious_tautology());
+ Relation new_then_known = Intersection(copy(known), copy(then_cond));
+ new_then_known.simplify();
+ Relation else_cond = Complement(copy(then_cond));
+ else_cond.simplify();
+ Relation new_else_known = Intersection(copy(known), copy(else_cond));
+ new_else_known.simplify();
+
+ BoolSet<> then_active(active.size()), else_active(active.size()), indep_active(active.size());
+ std::map<int, Relation> then_guards, else_guards;
+ for (BoolSet<>::iterator i = active.begin(); i != active.end(); i++) {
+ Relation &r = const_cast<std::map<int, Relation> &>(guards)[*i];
+ if (Must_Be_Subset(copy(r), copy(then_cond))) {
+ Relation r2 = Gist(copy(r), copy(then_cond), 1);
+ if (!r2.is_obvious_tautology())
+ then_guards[*i] = r2;
+ then_active.set(*i);
+ }
+ else if (Must_Be_Subset(copy(r), copy(else_cond))) {
+ Relation r2 = Gist(copy(r), copy(else_cond), 1);
+ if (!r2.is_obvious_tautology())
+ else_guards[*i] = r2;
+ else_active.set(*i);
+ }
+ else
+ indep_active.set(*i);
+ }
+ assert(!then_active.empty());
+
+ CG_outputRepr *new_guard_repr = output_guard(ocg, then_cond, assigned_on_the_fly);
+ if (else_active.empty() && indep_active.empty()) {
+ guard_repr = ocg->CreateAnd(guard_repr, new_guard_repr);
+ return leaf_print_repr(then_active, then_guards, guard_repr, new_then_known, indent, ocg, remap, xforms, stmts, assigned_on_the_fly);
+ }
+ else if (else_active.empty() && !indep_active.empty()) {
+ int new_indent = (guard_repr==NULL)?indent:indent+1;
+ stmt_list = leaf_print_repr(then_active, then_guards, new_guard_repr, new_then_known, new_indent, ocg, remap, xforms, stmts, assigned_on_the_fly);
+ stmt_list = ocg->StmtListAppend(stmt_list, leaf_print_repr(indep_active, guards, NULL, known, new_indent, ocg, remap, xforms, stmts, assigned_on_the_fly));
+ if (guard_repr == NULL)
+ return stmt_list;
+ else
+ return ocg->CreateIf(indent, guard_repr, stmt_list, NULL);
+ }
+ else { // (!else_active.empty())
+ int new_indent = (guard_repr==NULL)?indent:indent+1;
+ CG_outputRepr *then_stmt_list = leaf_print_repr(then_active, then_guards, NULL, new_then_known, new_indent+1, ocg, remap, xforms, stmts, assigned_on_the_fly);
+ CG_outputRepr *else_stmt_list = leaf_print_repr(else_active, else_guards, NULL, new_else_known, new_indent+1, ocg, remap, xforms, stmts, assigned_on_the_fly);
+ stmt_list = ocg->CreateIf(new_indent, new_guard_repr, then_stmt_list, else_stmt_list);
+ if (!indep_active.empty())
+ stmt_list = ocg->StmtListAppend(stmt_list, leaf_print_repr(indep_active, guards, NULL, known, new_indent, ocg, remap, xforms, stmts, assigned_on_the_fly));
+ if (guard_repr == NULL)
+ return stmt_list;
+ else
+ return ocg->CreateIf(indent, guard_repr, stmt_list, NULL);
+ }
+ }
+}
+
+
+//
+// heavy lifting for code output for one level of loop nodes
+//
+CG_outputRepr *loop_print_repr(const std::vector<CG_loop *> &loops, int start, int end,
+ const Relation &guard, CG_outputRepr *guard_repr,
+ int indent, CG_outputBuilder *ocg, const std::vector<CG_outputRepr *> &stmts,
+ const std::vector<std::pair<CG_outputRepr *, int> > &assigned_on_the_fly) {
+ if (start >= end)
+ return NULL;
+
+ Relation R = Gist(copy(loops[start]->guard_), copy(guard), 1);
+ if (Must_Be_Subset(Intersection(copy(loops[start]->known_), copy(guard)), copy(R))) {
+ int new_indent = (guard_repr==NULL)?indent:indent+1;
+ int i = start+1;
+ for ( ; i < end; i++)
+ if (!Gist(copy(loops[i]->guard_), copy(guard), 1).is_obvious_tautology())
+ break;
+ CG_outputRepr *stmt_list = NULL;
+ for (int j = start; j < i; j++)
+ stmt_list = ocg->StmtListAppend(stmt_list, loops[j]->printRepr(false, new_indent, ocg, stmts, assigned_on_the_fly));
+ stmt_list = ocg->StmtListAppend(stmt_list, loop_print_repr(loops, i, end, guard, NULL, new_indent, ocg, stmts, assigned_on_the_fly));
+ if (guard_repr == NULL)
+ return stmt_list;
+ else
+ return ocg->CreateIf(indent, guard_repr, stmt_list, NULL);
+ }
+
+ Relation then_cond = find_best_guard(R, loops, start, end);
+ assert(!then_cond.is_obvious_tautology());
+ Relation else_cond = Complement(copy(then_cond));
+ else_cond.simplify();
+
+ std::vector<CG_loop *> then_loops, else_loops, indep_loops;
+ int i = start;
+ for ( ; i < end; i++)
+ if (!Must_Be_Subset(copy(loops[i]->guard_), copy(then_cond)))
+ break;
+ int j = i;
+ for ( ; j < end; j++)
+ if (!Must_Be_Subset(copy(loops[j]->guard_), copy(else_cond)))
+ break;
+ assert(i>start);
+
+ CG_outputRepr *new_guard_repr = output_guard(ocg, then_cond, assigned_on_the_fly);
+ if (j == i && end == j) {
+ guard_repr = ocg->CreateAnd(guard_repr, new_guard_repr);
+ Relation new_guard = Intersection(copy(guard), copy(then_cond));
+ new_guard.simplify();
+ return loop_print_repr(loops, start, end, new_guard, guard_repr, indent, ocg, stmts, assigned_on_the_fly);
+ }
+ else if (j == i && end > j) {
+ int new_indent = (guard_repr==NULL)?indent:indent+1;
+ Relation new_guard = Intersection(copy(guard), copy(then_cond));
+ new_guard.simplify();
+ CG_outputRepr *stmt_list = loop_print_repr(loops, start, i, new_guard, new_guard_repr, new_indent, ocg, stmts, assigned_on_the_fly);
+ stmt_list = ocg->StmtListAppend(stmt_list, loop_print_repr(loops, j, end, guard, NULL, new_indent, ocg, stmts, assigned_on_the_fly));
+ if (guard_repr == NULL)
+ return stmt_list;
+ else
+ return ocg->CreateIf(indent, guard_repr, stmt_list, NULL);
+ }
+ else { // (j > i)
+ int new_indent = (guard_repr==NULL)?indent:indent+1;
+ Relation then_new_guard = Intersection(copy(guard), copy(then_cond));
+ then_new_guard.simplify();
+ CG_outputRepr *then_stmt_list = loop_print_repr(loops, start, i, then_new_guard, NULL, new_indent+1, ocg, stmts, assigned_on_the_fly);
+ Relation else_new_guard = Intersection(copy(guard), copy(else_cond));
+ else_new_guard.simplify();
+ CG_outputRepr *else_stmt_list = loop_print_repr(loops, i, j, else_new_guard, NULL, new_indent+1, ocg, stmts, assigned_on_the_fly);
+ CG_outputRepr *stmt_list = ocg->CreateIf(new_indent, new_guard_repr, then_stmt_list, else_stmt_list);
+ stmt_list = ocg->StmtListAppend(stmt_list, loop_print_repr(loops, j, end, guard, NULL, new_indent, ocg, stmts, assigned_on_the_fly));
+ if (guard_repr == NULL)
+ return stmt_list;
+ else
+ return ocg->CreateIf(indent, guard_repr, stmt_list, NULL);
+ }
+}
+
+}
diff --git a/omega/code_gen/src/code_gen.cc b/omega/code_gen/src/code_gen.cc
new file mode 100644
index 0000000..168c86b
--- /dev/null
+++ b/omega/code_gen/src/code_gen.cc
@@ -0,0 +1,656 @@
+/*****************************************************************************
+ Copyright (C) 1994-2000 University of Maryland
+ Copyright (C) 2008 University of Southern California
+ Copyright (C) 2009-2010 University of Utah
+ All Rights Reserved.
+
+ Purpose:
+ Start code generation process here.
+
+ Notes:
+
+ History:
+ 04/24/96 MMGenerateCode implementation, added by D people. Lei Zhou
+*****************************************************************************/
+
+#include <omega.h>
+#include <omega/Rel_map.h>
+#include <basic/Collection.h>
+#include <basic/Bag.h>
+#include <basic/Map.h>
+#include <basic/util.h>
+#include <basic/omega_error.h>
+#include <math.h>
+#include <vector>
+
+#include <code_gen/CG.h>
+#include <code_gen/code_gen.h>
+#include <code_gen/CG_outputBuilder.h>
+#include <code_gen/CG_outputRepr.h>
+#include <code_gen/CG_stringBuilder.h>
+#include <code_gen/CG_stringRepr.h>
+#include <code_gen/output_repr.h>
+
+namespace omega {
+
+
+int last_level;// Should not be global, but it is.
+SetTuple new_IS;
+SetTupleTuple projected_nIS;
+Tuple<CG_outputRepr *> statementInfo;
+RelTuple transformations;
+
+//protonu--adding stuff to make Chun's code work with Gabe's
+Tuple< Tuple<int> > smtNonSplitLevels;
+Tuple< Tuple<std::string> > loopIdxNames;//per stmt
+std::vector< std::pair<int, std::string> > syncs;
+
+//protonu-putting this in for now, not sure what all these do
+//This lovely ugly hack allows us to extract hard upper-bounds at
+//specific loop levels
+int checkLoopLevel;
+int stmtForLoopCheck;
+int upperBoundForLevel;
+int lowerBoundForLevel;
+bool fillInBounds;
+
+//trick to static init checkLoopLevel to 0
+class JunkStaticInit{ public: JunkStaticInit(){ checkLoopLevel=0; fillInBounds=false;} };
+static JunkStaticInit junkInitInstance__;
+
+//end--protonu.
+
+
+CG_result * gen_recursive(int level, IntTuple &isActive);
+
+
+int code_gen_debug=0;
+
+
+SetTuple filter_function_symbols(SetTuple &sets, bool keep_fs){
+ SetTuple new_sets(sets.size());
+ for(int i = 1; i <= sets.size(); i++) {
+ Relation R = sets[i];
+ Relation &S = new_sets[i];
+ assert(R.is_set());
+
+ S = Relation(R.n_set());
+ S.copy_names(R);
+ F_Exists *fe = S.add_exists();
+ F_Or *fo = fe->add_or();
+ for(DNF_Iterator D(R.query_DNF()); D; D++) {
+ F_And *fa = fo->add_and();
+ Variable_ID_Tuple &oldlocals = (*D)->locals();
+ Section<Variable_ID> newlocals = fe->declare_tuple(oldlocals.size());
+
+ /* copy constraints. This is much more difficult than it needs
+ to be, but add_EQ(Constraint_Handle) doesn't work because it can't
+ keep track of existentially quantified varaibles across calls.
+ Sigh. */
+
+ for(EQ_Iterator e(*D); e; e++)
+ if((max_fs_arity(*e) > 0) == keep_fs){
+ EQ_Handle n = fa->add_EQ();
+ for(Constr_Vars_Iter cvi(*e,false);cvi;cvi++)
+ if((*cvi).var->kind() == Wildcard_Var)
+ n.update_coef(newlocals[oldlocals.index((*cvi).var)],
+ (*cvi).coef);
+ else
+ if((*cvi).var->kind() == Global_Var)
+ n.update_coef(S.get_local((*cvi).var->get_global_var(),
+ (*cvi).var->function_of()),
+ (*cvi).coef);
+ else
+ n.update_coef((*cvi).var,(*cvi).coef);
+ n.update_const((*e).get_const());
+ n.finalize();
+ }
+
+ for(GEQ_Iterator g(*D); g; g++)
+ if((max_fs_arity(*g) > 0) == keep_fs) {
+ GEQ_Handle n = fa->add_GEQ();
+ for(Constr_Vars_Iter cvi(*g,false);cvi;cvi++)
+ if((*cvi).var->kind() == Wildcard_Var)
+ n.update_coef(newlocals[oldlocals.index((*cvi).var)],
+ (*cvi).coef);
+ else
+ if((*cvi).var->kind() == Global_Var)
+ n.update_coef(S.get_local((*cvi).var->get_global_var(),
+ (*cvi).var->function_of()),
+ (*cvi).coef);
+ else
+ n.update_coef((*cvi).var,(*cvi).coef);
+ n.update_const((*g).get_const());
+ n.finalize();
+ }
+ }
+ S.finalize();
+ }
+
+ return new_sets;
+}
+
+
+RelTuple strip_function_symbols(SetTuple &sets) {
+ return filter_function_symbols(sets,false);
+}
+
+RelTuple extract_function_symbols(SetTuple &sets) {
+ return filter_function_symbols(sets,true);
+}
+
+
+std::string MMGenerateCode(RelTuple &T, SetTuple &old_IS, Relation &known, int effort) {
+ Tuple<CG_outputRepr *> nameInfo;
+ for (int stmt = 1; stmt <= T.size(); stmt++)
+ nameInfo.append(new CG_stringRepr("s" + to_string(stmt)));
+
+ CG_stringBuilder ocg;
+ CG_stringRepr *sRepr = static_cast<CG_stringRepr *>(MMGenerateCode(&ocg, T, old_IS, nameInfo, known, effort));
+
+ for (int i = 1; i <= nameInfo.size(); i++)
+ delete nameInfo[i];
+ if (sRepr != NULL)
+ return GetString(sRepr);
+ else
+ return std::string();
+}
+
+
+//*****************************************************************************
+// MMGenerateCode implementation, added by D people. Lei Zhou, Apr. 24, 96
+//*****************************************************************************
+CG_outputRepr* MMGenerateCode(CG_outputBuilder* ocg, RelTuple &T, SetTuple &old_IS, const Tuple<CG_outputRepr *> &stmt_content, Relation &known, int effort) {
+ int stmts = T.size();
+ if (stmts == 0)
+ return ocg->CreateComment(1, "No statements found!");
+ if (!known.is_null())
+ known.simplify();
+
+ // prepare iteration spaces by splitting disjoint conjunctions
+ int maxStmt = 1;
+ last_level = 0;
+ for (int stmt = 1; stmt <= stmts; stmt++) {
+ int old_dim = T[stmt].n_out();
+ if (old_dim > last_level)
+ last_level = old_dim;
+
+ for (int i = 1; i <= old_IS[stmt].n_set(); i++)
+ T[stmt].name_input_var(i, old_IS[stmt].set_var(i)->name());
+ for (int i = 1; i <= old_dim; i++)
+ T[stmt].name_output_var(i, std::string("t")+to_string(i));
+ T[stmt].setup_names();
+
+ Relation R = Range(Restrict_Domain(copy(T[stmt]), copy(old_IS[stmt])));
+ R.simplify();
+ while(R.is_upper_bound_satisfiable()) {
+ new_IS.reallocate(maxStmt);
+ transformations.reallocate(maxStmt);
+ statementInfo.reallocate(maxStmt);
+ DNF *dnf = R.query_DNF();
+ DNF_Iterator c(dnf);
+ Relation R2 = Relation(R, *c);
+ R2.simplify();
+ if (R2.is_inexact())
+ throw codegen_error("unknown constraint in loop bounds");
+ if (known.is_null()) {
+ new_IS[maxStmt] = R2;
+ transformations[maxStmt] = T[stmt];
+ statementInfo[maxStmt] = stmt_content[stmt];
+ maxStmt++;
+ }
+ else {
+ Relation R2_extended = copy(R2);
+ Relation known_extended = copy(known);
+ if (R2.n_set() > known.n_set())
+ known_extended = Extend_Set(known_extended, R2.n_set()-known.n_set());
+ else if (R2.n_set() < known.n_set())
+ R2_extended = Extend_Set(R2_extended, known.n_set()-R2.n_set());
+ if (Intersection(R2_extended, known_extended).is_upper_bound_satisfiable()) {
+ new_IS[maxStmt] = R2;
+ transformations[maxStmt] = T[stmt];
+ statementInfo[maxStmt] = stmt_content[stmt];
+ maxStmt++;
+ }
+ }
+ c.next();
+ if (!c.live())
+ break;
+ if(code_gen_debug) {
+ fprintf(DebugFile, "splitting iteration space for disjoint form\n");
+ fprintf(DebugFile, "Original iteration space: \n");
+ R.print_with_subs(DebugFile);
+ fprintf(DebugFile, "First conjunct: \n");
+ R2.print_with_subs(DebugFile);
+ }
+ Relation remainder(R, *c);
+ c.next();
+ while (c.live()) {
+ remainder = Union(remainder, Relation(R, *c));
+ c.next();
+ }
+ R = Difference(remainder, copy(R2));
+ R.simplify();
+ if(code_gen_debug) {
+ fprintf(DebugFile, "Remaining iteration space: \n");
+ R.print_with_subs(DebugFile);
+ }
+ }
+ }
+
+ // reset number of statements
+ stmts = maxStmt-1;
+ if(stmts == 0)
+ return ocg->CreateComment(1, "No points in any of the iteration spaces!");
+
+ // entend iteration spaces to maximum dimension
+ for (int stmt = 1; stmt <= stmts; stmt++) {
+ int old_dim = new_IS[stmt].n_set();
+ if (old_dim < last_level) {
+ new_IS[stmt] = Extend_Set(new_IS[stmt], last_level-old_dim);
+ F_And *f_root = new_IS[stmt].and_with_and();
+ for (int i = old_dim+1; i <= last_level; i++) {
+ EQ_Handle h = f_root->add_EQ();
+ h.update_coef(new_IS[stmt].set_var(i), 1);
+ h.update_const(posInfinity);
+ }
+ }
+ }
+
+ // standarize the known condition
+ if(known.is_null()) {
+ known = Relation::True(last_level);
+ }
+ known = Extend_Set(known, last_level-known.n_set());
+ for (int i = 1; i <= last_level; i++)
+ known.name_set_var(i, std::string("t")+to_string(i));
+ known.setup_names();
+
+ // prepare projected subspaces for each loop level
+ projected_nIS.clear();
+ projected_nIS.reallocate(last_level);
+ for(int i = 1; i <= last_level; i++ ) {
+ projected_nIS[i].reallocate(stmts);
+ }
+ for (int stmt = 1; stmt <= stmts; stmt++) {
+ if (last_level > 0)
+ projected_nIS[last_level][stmt] = new_IS[stmt];
+ for (int i = last_level-1; i >= 1; i--) {
+ projected_nIS[i][stmt] = Project(copy(projected_nIS[i+1][stmt]), i+1, Set_Var);
+ projected_nIS[i][stmt].simplify();
+ }
+ }
+
+ // recursively generate AST
+ IntTuple allStmts(stmts);
+ for(int i = 1; i <= stmts; i++)
+ allStmts[i] = 1;
+ CG_result *cg = gen_recursive(1, allStmts);
+
+ // always force finite bounds
+ cg = cg->recompute(known, known);
+ cg = cg->force_finite_bounds();
+
+ // loop overhead removal based on actual nesting depth -- by chun 09/17/2008
+ for (int i = 1; i <= min(effort, cg->depth()); i++)
+ cg = cg->liftOverhead(i);
+
+ // merge adjacent if-conditions -- by chun 10/24/2006
+ cg->hoistGuard();
+
+ // really print out the loop
+ //CG_outputRepr* sRepr = cg->printRepr(ocg, 1, std::vector<CG_outputRepr *>(last_level, NULL));
+ CG_outputRepr* sRepr = cg->printRepr(ocg, 1, std::vector<CG_outputRepr *>(last_level));
+ delete cg;
+ cg = NULL;
+ projected_nIS.clear();
+ transformations.clear();
+ new_IS.clear();
+
+ return sRepr;
+}
+
+//protonu--overload the above MMGenerateCode to take into the CUDA-CHiLL
+CG_outputRepr* MMGenerateCode(CG_outputBuilder* ocg, RelTuple &T, SetTuple &old_IS,
+ const Tuple<CG_outputRepr *> &stmt_content, Relation &known,
+ Tuple< IntTuple >& smtNonSplitLevels_,
+ std::vector< std::pair<int, std::string> > syncs_,
+ const Tuple< Tuple<std::string> >& loopIdxNames_,
+ int effort) {
+ int stmts = T.size();
+ if (stmts == 0)
+ return ocg->CreateComment(1, "No statements found!");
+ if (!known.is_null())
+ known.simplify();
+
+ //protonu--
+ //easier to handle this as a global
+ smtNonSplitLevels = smtNonSplitLevels_;
+ syncs = syncs_;
+ loopIdxNames = loopIdxNames_;
+ //end-protonu
+
+
+
+ // prepare iteration spaces by splitting disjoint conjunctions
+ int maxStmt = 1;
+ last_level = 0;
+ for (int stmt = 1; stmt <= stmts; stmt++) {
+ int old_dim = T[stmt].n_out();
+ if (old_dim > last_level)
+ last_level = old_dim;
+
+ for (int i = 1; i <= old_IS[stmt].n_set(); i++)
+ T[stmt].name_input_var(i, old_IS[stmt].set_var(i)->name());
+ for (int i = 1; i <= old_dim; i++)
+ T[stmt].name_output_var(i, std::string("t")+to_string(i));
+ T[stmt].setup_names();
+
+ Relation R = Range(Restrict_Domain(copy(T[stmt]), copy(old_IS[stmt])));
+ R.simplify();
+ while(R.is_upper_bound_satisfiable()) {
+ new_IS.reallocate(maxStmt);
+ transformations.reallocate(maxStmt);
+ statementInfo.reallocate(maxStmt);
+
+ //protonu--putting in fix provided by Mark Hall
+ smtNonSplitLevels.reallocate(maxStmt);
+ //end-protonu
+
+
+ DNF *dnf = R.query_DNF();
+ DNF_Iterator c(dnf);
+ Relation R2 = Relation(R, *c);
+ R2.simplify();
+ if (R2.is_inexact())
+ throw codegen_error("unknown constraint in loop bounds");
+ if (known.is_null()) {
+ new_IS[maxStmt] = R2;
+ transformations[maxStmt] = T[stmt];
+ statementInfo[maxStmt] = stmt_content[stmt];
+ maxStmt++;
+ }
+ else {
+ Relation R2_extended = copy(R2);
+ Relation known_extended = copy(known);
+ if (R2.n_set() > known.n_set())
+ known_extended = Extend_Set(known_extended, R2.n_set()-known.n_set());
+ else if (R2.n_set() < known.n_set())
+ R2_extended = Extend_Set(R2_extended, known.n_set()-R2.n_set());
+ if (Intersection(R2_extended, known_extended).is_upper_bound_satisfiable()) {
+ new_IS[maxStmt] = R2;
+ transformations[maxStmt] = T[stmt];
+ statementInfo[maxStmt] = stmt_content[stmt];
+ maxStmt++;
+ }
+ }
+ c.next();
+ if (!c.live())
+ break;
+ if(code_gen_debug) {
+ fprintf(DebugFile, "splitting iteration space for disjoint form\n");
+ fprintf(DebugFile, "Original iteration space: \n");
+ R.print_with_subs(DebugFile);
+ fprintf(DebugFile, "First conjunct: \n");
+ R2.print_with_subs(DebugFile);
+ }
+ Relation remainder(R, *c);
+ c.next();
+ while (c.live()) {
+ remainder = Union(remainder, Relation(R, *c));
+ c.next();
+ }
+ R = Difference(remainder, copy(R2));
+ R.simplify();
+ if(code_gen_debug) {
+ fprintf(DebugFile, "Remaining iteration space: \n");
+ R.print_with_subs(DebugFile);
+ }
+ }
+ }
+
+ // reset number of statements
+ stmts = maxStmt-1;
+ if(stmts == 0)
+ return ocg->CreateComment(1, "No points in any of the iteration spaces!");
+
+ // entend iteration spaces to maximum dimension
+ for (int stmt = 1; stmt <= stmts; stmt++) {
+ int old_dim = new_IS[stmt].n_set();
+ if (old_dim < last_level) {
+ new_IS[stmt] = Extend_Set(new_IS[stmt], last_level-old_dim);
+ F_And *f_root = new_IS[stmt].and_with_and();
+ for (int i = old_dim+1; i <= last_level; i++) {
+ EQ_Handle h = f_root->add_EQ();
+ h.update_coef(new_IS[stmt].set_var(i), 1);
+ h.update_const(posInfinity);
+ }
+ }
+ }
+
+ // standarize the known condition
+ if(known.is_null()) {
+ known = Relation::True(last_level);
+ }
+ known = Extend_Set(known, last_level-known.n_set());
+ for (int i = 1; i <= last_level; i++)
+ known.name_set_var(i, std::string("t")+to_string(i));
+ known.setup_names();
+
+ // prepare projected subspaces for each loop level
+ projected_nIS.clear();
+ projected_nIS.reallocate(last_level);
+ for(int i = 1; i <= last_level; i++ ) {
+ projected_nIS[i].reallocate(stmts);
+ }
+ for (int stmt = 1; stmt <= stmts; stmt++) {
+ if (last_level > 0)
+ projected_nIS[last_level][stmt] = new_IS[stmt];
+ for (int i = last_level-1; i >= 1; i--) {
+ projected_nIS[i][stmt] = Project(copy(projected_nIS[i+1][stmt]), i+1, Set_Var);
+ projected_nIS[i][stmt].simplify();
+ }
+ }
+
+ // recursively generate AST
+ IntTuple allStmts(stmts);
+ for(int i = 1; i <= stmts; i++)
+ allStmts[i] = 1;
+ CG_result *cg = gen_recursive(1, allStmts);
+
+ // always force finite bounds
+ cg = cg->recompute(known, known);
+ cg = cg->force_finite_bounds();
+
+ // loop overhead removal based on actual nesting depth -- by chun 09/17/2008
+ for (int i = 1; i <= min(effort, cg->depth()); i++)
+ cg = cg->liftOverhead(i);
+
+ // merge adjacent if-conditions -- by chun 10/24/2006
+ cg->hoistGuard();
+
+ // really print out the loop
+ //CG_outputRepr* sRepr = cg->printRepr(ocg, 1, std::vector<CG_outputRepr *>(last_level, NULL));
+ CG_outputRepr* sRepr = cg->printRepr(ocg, 1, std::vector<CG_outputRepr *>(last_level ));
+ delete cg;
+ cg = NULL;
+ projected_nIS.clear();
+ transformations.clear();
+ new_IS.clear();
+
+ return sRepr;
+}
+
+CG_result *gen_recursive(int level, IntTuple &isActive) {
+ int stmts = isActive.size();
+
+ Set<int> active;
+ int s;
+ for(s = 1; s <= stmts; s++)
+ if(isActive[s]) active.insert(s);
+
+ assert (active.size() >= 1);
+ if(level > last_level) return new CG_leaf(isActive);
+
+ if (active.size() == 1)
+ return new CG_loop(isActive,level, gen_recursive(level+1,isActive));
+
+ bool constantLevel = true;
+
+ int test_rel_size;
+ coef_t start,finish;
+ finish = -(posInfinity-1); // -(MAXINT-1);
+ start = posInfinity; // MAXINT;
+ Tuple<coef_t> when(stmts);
+ for(s=1; s<=stmts; s++) if (isActive[s]) {
+ coef_t lb,ub;
+ test_rel_size = projected_nIS[level][s].n_set();
+ projected_nIS[level][s].single_conjunct()
+ ->query_variable_bounds(
+ projected_nIS[level][s].set_var(level),
+ lb,ub);
+ if(code_gen_debug) {
+ fprintf(DebugFile, "IS%d: " coef_fmt " <= t%d <= " coef_fmt "\n",s,
+ lb,level,ub);
+ projected_nIS[level][s].prefix_print(DebugFile);
+ }
+ if (lb != ub) {
+ constantLevel = false;
+ break;
+ }
+ else {
+ set_max(finish,lb);
+ set_min(start,lb);
+ when[s] = lb;
+ }
+ }
+
+
+ if (constantLevel && finish-start <= stmts) {
+ IntTuple newActive(isActive.size());
+ for(int i=1; i<=stmts; i++)
+ newActive[i] = isActive[i] && when[i] == start;
+ CG_result *r = new CG_loop(isActive,level,
+ gen_recursive(level+1,newActive));
+ for(coef_t time = start+1; time <= finish; time++) {
+ int count = 0;
+ for(int i=1; i<=stmts; i++) {
+ newActive[i] = isActive[i] && when[i] == time;
+ if (newActive[i]) count++;
+ }
+ if (count) {
+ Relation test_rel(test_rel_size);
+ GEQ_Handle g = test_rel.and_with_GEQ();
+ g.update_coef(test_rel.set_var(level),-1);
+ g.update_const(time-1);
+
+ r = new CG_split(isActive,level,test_rel,r,
+ new CG_loop(isActive,level,
+ gen_recursive(level+1,newActive)));
+ }
+ }
+ return r;
+ }
+
+// Since the Hull computation is approximate, we will get regions that
+// have no stmts. (since we will have split on constraints on the
+// hull, and thus we are looking at a region outside the convex hull
+// of all the iteration spaces.)
+#if 1
+ Relation hull = Hull(projected_nIS[level],isActive,1);
+#else
+ Relation hull = Hull(projected_nIS[level],isActive,0);
+#endif
+
+ if(code_gen_debug) {
+ fprintf(DebugFile, "Hull (level %d) is:\n",level);
+ hull.prefix_print(DebugFile);
+ }
+
+
+ IntTuple firstChunk(isActive);
+ IntTuple secondChunk(isActive);
+
+ //protonu-warn Chun about this change
+ //This does some fancy splitting of statements into loops with the
+ //fewest dimentions, but that's not necessarily what we want when
+ //code-gening for CUDA. smtNonSplitLevels keeps track per-statment of
+ //the levels that should not be split on.
+ bool checkForSplits = true;
+ for (int s = 1; s <= isActive.size(); s++){
+ if (isActive[s]) {
+ if(s < smtNonSplitLevels.size() && smtNonSplitLevels[s].index(level-2) != 0){
+ checkForSplits = false;
+ break;
+ }
+ }
+ }
+
+ //protonu-modifying the next for loop
+ for (int s = 1; checkForSplits && s <= isActive.size(); s++)
+ if (isActive[s]) {
+ Relation gist = Gist(copy(projected_nIS[level][s]),copy(hull),1);
+ if (gist.is_obvious_tautology()) break;
+ gist.simplify();
+ Conjunct *s_conj = gist.single_conjunct();
+ for(GEQ_Iterator G(s_conj); G; G++) {
+ Relation test_rel(gist.n_set());
+ test_rel.and_with_GEQ(*G);
+ Variable_ID v = set_var(level);
+ coef_t sign = (*G).get_coef(v);
+ if(sign > 0) test_rel = Complement(test_rel);
+ if(code_gen_debug) {
+ fprintf(DebugFile, "Considering split from stmt %d:\n",s);
+ test_rel.prefix_print(DebugFile);
+ }
+
+ firstChunk[s] = sign <= 0;
+ secondChunk[s] = sign > 0;
+ int numberFirst = sign <= 0;
+ int numberSecond = sign > 0;
+
+ for (int s2 = 1; s2 <= isActive.size(); s2++)
+ if (isActive[s2] && s2 != s) {
+ if(code_gen_debug)
+ fprintf(DebugFile,"Consider stmt %d\n",s2);
+ bool t = Intersection(copy(projected_nIS[level][s2]),
+ copy(test_rel)).is_upper_bound_satisfiable();
+ bool f = Difference(copy(projected_nIS[level][s2]),
+ copy(test_rel)).is_upper_bound_satisfiable();
+ assert(t || f);
+ if(code_gen_debug && t&&f)
+ fprintf(DebugFile, "Slashes stmt %d\n",s2);
+ if (t&&f) goto nextGEQ;
+ if(code_gen_debug) {
+ if (t)
+ fprintf(DebugFile, "true for stmt %d\n",s2);
+ else
+ fprintf(DebugFile, "false for stmt %d\n",s2);
+ }
+ if (t) numberFirst++;
+ else numberSecond++;
+ firstChunk[s2] = t;
+ secondChunk[s2] = !t;
+ }
+
+ assert(numberFirst+numberSecond>1 && "Can't handle wildcard in iteration space");
+ if(code_gen_debug)
+ fprintf(DebugFile, "%d true, %d false\n",
+ numberFirst,
+ numberSecond);
+ if (numberFirst && numberSecond) {
+ // Found a dividing constraint
+ return new CG_split(isActive,level,test_rel,
+ gen_recursive(level,firstChunk),
+ gen_recursive(level,secondChunk));
+ }
+ nextGEQ: ;
+ }
+ }
+
+ // No way found to divide stmts without splitting, generate loop
+
+ return new CG_loop(isActive,level, gen_recursive(level+1,isActive));
+}
+
+}
diff --git a/omega/code_gen/src/codegen.cc b/omega/code_gen/src/codegen.cc
new file mode 100755
index 0000000..92ca702
--- /dev/null
+++ b/omega/code_gen/src/codegen.cc
@@ -0,0 +1,378 @@
+/*****************************************************************************
+ Copyright (C) 1994-2000 the Omega Project Team
+ Copyright (C) 2005-2011 Chun Chen
+ All Rights Reserved.
+
+ Purpose:
+ CodeGen class as entry point for code generation.
+
+ Notes:
+ Loop variable name prefix should not cause any possible name conflicts
+ with original loop variables wrapped in statement holder. This guarantees
+ that variable substitution done correctly in the generated code.
+
+ History:
+ 04/24/96 MMGenerateCode, added by Fortran D people. Lei Zhou
+ 09/17/08 loop overhead removal based on actual nesting depth -- by chun
+ 03/05/11 fold MMGenerateCode into CodeGen class, Chun Chen
+*****************************************************************************/
+
+#include <typeinfo>
+#include <omega.h>
+#include <basic/util.h>
+#include <math.h>
+#include <vector>
+#include <algorithm>
+
+#include <code_gen/CG.h>
+#include <code_gen/codegen.h>
+#include <code_gen/CG_outputBuilder.h>
+#include <code_gen/codegen_error.h>
+
+namespace omega {
+
+const std::string CodeGen::loop_var_name_prefix = "t";
+const int CodeGen::var_substitution_threshold = 10;
+
+//Anand--adding stuff to make Chun's code work with Gabe's
+std::vector< std::vector<int> > smtNonSplitLevels;
+std::vector< std::vector<std::string> > loopIdxNames;//per stmt
+std::vector< std::pair<int, std::string> > syncs;
+
+
+
+CodeGen::CodeGen(const std::vector<Relation> &xforms, const std::vector<Relation> &IS, const Relation &known, std::vector< std::vector<int> > smtNonSplitLevels_ , std::vector< std::vector<std::string> > loopIdxNames_, std::vector< std::pair<int, std::string> > syncs_) {
+ // check for sanity of parameters
+ int num_stmt = IS.size();
+ if (xforms.size() != num_stmt)
+ throw std::invalid_argument("number of iteration spaces does not match number of transformations");
+ known_ = copy(known);
+ if (known_.n_out() != 0)
+ throw std::invalid_argument("known condition must be a set relation");
+ if (known_.is_null())
+ known_ = Relation::True(0);
+ else
+ known_.simplify(2, 4);
+ if (!known_.is_upper_bound_satisfiable())
+ return;
+ if (known_.number_of_conjuncts() > 1)
+ throw std::invalid_argument("only one conjunct allowed in known condition");
+ xforms_ = xforms;
+ for (int i = 0; i < num_stmt; i++) {
+ xforms_[i].simplify();
+ if (!xforms_[i].has_single_conjunct())
+ throw std::invalid_argument("mapping relation must have only one conjunct");
+ if (xforms_[i].n_inp() != IS[i].n_inp() || IS[i].n_out() != 0)
+ throw std::invalid_argument("illegal iteration space or transformation arity");
+ }
+
+
+ //protonu--
+ //easier to handle this as a global
+ smtNonSplitLevels = smtNonSplitLevels_;
+ syncs = syncs_;
+ loopIdxNames = loopIdxNames_;
+ //end-protonu
+
+
+
+ // find the maximum iteration space dimension we are going to operate on
+ int num_level = known_.n_inp();
+ for (int i = 0; i < num_stmt; i++)
+ if (xforms_[i].n_out() > num_level)
+ num_level = xforms_[i].n_out();
+ known_ = Extend_Set(known_, num_level-known_.n_inp());
+ for (int i = 1; i <= num_level; i++)
+ known_.name_set_var(i, loop_var_name_prefix + to_string(i));
+ known_.setup_names();
+
+ // split disjoint conjunctions in original iteration spaces
+ std::vector<Relation> new_IS;
+ for (int i = 0; i < num_stmt; i++) {
+ for (int j = 1; j <= IS[i].n_inp(); j++)
+ xforms_[i].name_input_var(j, const_cast<std::vector<Relation> &>(IS)[i].input_var(j)->name());
+ for (int j = 1; j <= xforms_[i].n_out(); j++)
+ xforms_[i].name_output_var(j, loop_var_name_prefix + to_string(j));
+ xforms_[i].setup_names();
+
+ Relation R = Range(Restrict_Domain(copy(xforms_[i]), copy(IS[i])));
+ R = Intersection(Extend_Set(R, num_level-R.n_inp()), copy(known_));
+ R.simplify(2, 4);
+ if (R.is_inexact())
+ throw codegen_error("cannot generate code for inexact iteration spaces");
+
+ while(R.is_upper_bound_satisfiable()) {
+ DNF *dnf = R.query_DNF();
+ DNF_Iterator c(dnf);
+ Relation R2 = Relation(R, *c);
+ R2.simplify();
+ new_IS.push_back(copy(R2));
+ remap_.push_back(i);
+ c.next();
+ if (!c.live())
+ break;
+ Relation remainder(R, *c);
+ c.next();
+ while (c.live()) {
+ remainder = Union(remainder, Relation(R, *c));
+ c.next();
+ }
+ R = Difference(remainder, R2);
+ R.simplify(2, 4);
+ }
+ }
+
+ // number of new statements after splitting
+ num_stmt = new_IS.size();
+ if(!smtNonSplitLevels.empty())
+ smtNonSplitLevels.resize(num_stmt);
+ // assign a dummy value to loops created for the purpose of expanding to maximum dimension
+ for (int i = 0; i < num_stmt; i++) {
+ if (xforms[remap_[i]].n_out() < num_level) {
+ F_And *f_root = new_IS[i].and_with_and();
+ for (int j = xforms[remap_[i]].n_out()+1; j <= num_level; j++) {
+ EQ_Handle h = f_root->add_EQ();
+ h.update_coef(new_IS[i].set_var(j), 1);
+ h.update_const(posInfinity);
+ }
+ new_IS[i].simplify();
+ }
+ }
+
+ // calculate projected subspaces for each loop level once and save for CG tree manipulation later
+ projected_IS_ = std::vector<std::vector<Relation> >(num_level);
+ for (int i = 0; i < num_level; i++)
+ projected_IS_[i] = std::vector<Relation>(num_stmt);
+ for (int i = 0; i < num_stmt; i++) {
+ if (num_level > 0)
+ projected_IS_[num_level-1][i] = new_IS[i];
+ for (int j = num_level-1; j >= 1; j--) {
+ projected_IS_[j-1][i] = Project(copy(projected_IS_[j][i]), j+1, Set_Var);
+ projected_IS_[j-1][i].simplify(2, 4);
+ }
+ }
+}
+
+
+CG_result *CodeGen::buildAST(int level, const BoolSet<> &active, bool split_on_const, const Relation &restriction) {
+ if (level > num_level())
+ return new CG_leaf(this, active);
+
+ int num_active_stmt = active.num_elem();
+ if (num_active_stmt == 0)
+ return NULL;
+ else if (num_active_stmt == 1)
+ return new CG_loop(this, active, level, buildAST(level+1, active, true, restriction));
+
+ // use estimated constant bounds for fast non-overlap iteration space splitting
+ if (split_on_const) {
+ std::vector<std::pair<std::pair<coef_t, coef_t>, int> > bounds;
+
+ for (BoolSet<>::const_iterator i = active.begin(); i != active.end(); i++) {
+ Relation r = Intersection(copy(projected_IS_[level-1][*i]), copy(restriction));
+ r.simplify(2, 4);
+ if (!r.is_upper_bound_satisfiable())
+ continue;
+ coef_t lb, ub;
+ r.single_conjunct()->query_variable_bounds(r.set_var(level),lb,ub);
+ bounds.push_back(std::make_pair(std::make_pair(lb, ub), *i));
+ }
+ sort(bounds.begin(), bounds.end());
+
+ std::vector<Relation> split_cond;
+ std::vector<CG_result *> split_child;
+
+ coef_t prev_val = -posInfinity;
+ coef_t next_val = bounds[0].first.second;
+ BoolSet<> next_active(active.size());
+ int i = 0;
+ while (i < bounds.size()) {
+ if (bounds[i].first.first <= next_val) {
+ next_active.set(bounds[i].second);
+ next_val = max(next_val, bounds[i].first.second);
+ i++;
+ }
+ else {
+ Relation r(num_level());
+ F_And *f_root = r.add_and();
+ if (prev_val != -posInfinity) {
+ GEQ_Handle h = f_root->add_GEQ();
+ h.update_coef(r.set_var(level), 1);
+ h.update_const(-prev_val-1);
+ }
+ if (next_val != posInfinity) {
+ GEQ_Handle h = f_root->add_GEQ();
+ h.update_coef(r.set_var(level), -1);
+ h.update_const(next_val);
+ }
+ r.simplify();
+
+ Relation new_restriction = Intersection(copy(r), copy(restriction));
+ new_restriction.simplify(2, 4);
+ CG_result *child = buildAST(level, next_active, false, new_restriction);
+ if (child != NULL) {
+ split_cond.push_back(copy(r));
+ split_child.push_back(child);
+ }
+ next_active.unset_all();
+ prev_val = next_val;
+ next_val = bounds[i].first.second;
+ }
+ }
+ if (!next_active.empty()) {
+ Relation r = Relation::True(num_level());
+ if (prev_val != -posInfinity) {
+ F_And *f_root = r.and_with_and();
+ GEQ_Handle h = f_root->add_GEQ();
+ h.update_coef(r.set_var(level), 1);
+ h.update_const(-prev_val-1);
+ r.simplify();
+ }
+ Relation new_restriction = Intersection(copy(r), copy(restriction));
+ new_restriction.simplify(2, 4);
+ CG_result *child = buildAST(level, next_active, false, new_restriction);
+ if (child != NULL) {
+ split_cond.push_back(copy(r));
+ split_child.push_back(child);
+ }
+ }
+
+ if (split_child.size() == 0)
+ return NULL;
+ else if (split_child.size() == 1)
+ return split_child[0];
+ else
+ return new CG_split(this, active, split_cond, split_child);
+ }
+ // check bound conditions exhaustively for non-overlap iteration space splitting
+ else {
+ std::vector<Relation> Rs(active.size());
+ for (BoolSet<>::const_iterator i = active.begin(); i != active.end(); i++) {
+ Rs[*i] = Intersection(Approximate(copy(projected_IS_[level-1][*i])), copy(restriction));
+ Rs[*i].simplify(2, 4);
+ }
+ Relation hull = SimpleHull(Rs);
+
+ //protonu-warn Chun about this change
+ //This does some fancy splitting of statements into loops with the
+ //fewest dimentions, but that's not necessarily what we want when
+ //code-gening for CUDA. smtNonSplitLevels keeps track per-statment of
+ //the levels that should not be split on.
+ bool checkForSplits = true;
+ for (BoolSet<>::const_iterator i = active.begin(); i != active.end(); i++) {
+ if(*i < smtNonSplitLevels.size())
+ for(int k = 0; k <smtNonSplitLevels[*i].size(); k++)
+ if(smtNonSplitLevels[*i][k] == (level-2)){
+ checkForSplits = false;
+ break;
+ }
+ }
+
+
+
+
+ for (BoolSet<>::const_iterator i = active.begin(); i != active.end() && checkForSplits; i++) {
+ Relation r = Gist(copy(Rs[*i]), copy(hull), 1);
+ if (r.is_obvious_tautology())
+ continue;
+ r = EQs_to_GEQs(r);
+
+ for (GEQ_Iterator e = r.single_conjunct()->GEQs(); e; e++) {
+ if ((*e).has_wildcards())
+ continue;
+
+ Relation cond = Relation::True(num_level());
+ BoolSet<> first_chunk(active.size());
+ BoolSet<> second_chunk(active.size());
+
+ if ((*e).get_coef(hull.set_var(level)) > 0) {
+ cond.and_with_GEQ(*e);
+ cond = Complement(cond);;
+ cond.simplify();
+ second_chunk.set(*i);
+ }
+ else if ((*e).get_coef(hull.set_var(level)) < 0) {
+ cond.and_with_GEQ(*e);
+ cond.simplify();
+ first_chunk.set(*i);
+ }
+ else
+ continue;
+
+ bool is_proper_split_cond = true;
+ for (BoolSet<>::const_iterator j = active.begin(); j != active.end(); j++)
+ if ( *j != *i) {
+ bool in_first = Intersection(copy(Rs[*j]), copy(cond)).is_upper_bound_satisfiable();
+ bool in_second = Difference(copy(Rs[*j]), copy(cond)).is_upper_bound_satisfiable();
+
+ if (in_first && in_second) {
+ is_proper_split_cond = false;
+ break;
+ }
+
+ if (in_first)
+ first_chunk.set(*j);
+ else if (in_second)
+ second_chunk.set(*j);
+ }
+
+ if (is_proper_split_cond && first_chunk.num_elem() != 0 && second_chunk.num_elem() != 0) {
+ CG_result *first_cg = buildAST(level, first_chunk, false, copy(cond));
+ CG_result *second_cg = buildAST(level, second_chunk, false, Complement(copy(cond)));
+ if (first_cg == NULL)
+ return second_cg;
+ else if (second_cg == NULL)
+ return first_cg;
+ else {
+ std::vector<Relation> split_cond;
+ std::vector<CG_result *> split_child;
+ split_cond.push_back(copy(cond));
+ split_child.push_back(first_cg);
+ split_cond.push_back(Complement(copy(cond)));
+ split_child.push_back(second_cg);
+
+ return new CG_split(this, active, split_cond, split_child);
+ }
+ }
+ }
+ }
+ return new CG_loop(this, active, level, buildAST(level+1, active, true, restriction));
+ }
+}
+
+
+CG_result *CodeGen::buildAST(int effort) {
+ if (remap_.size() == 0)
+ return NULL;
+
+ CG_result *cgr = buildAST(1, ~BoolSet<>(remap_.size()), true, Relation::True(num_level()));
+ if (cgr == NULL)
+ return NULL;
+
+
+ // break down the complete iteration space condition to levels of bound/guard condtions
+ cgr = cgr->recompute(cgr->active_, copy(known_), copy(known_));
+
+
+
+ if (cgr == NULL)
+ return NULL;
+
+ // calculate each loop's nesting depth
+ int depth = cgr->populateDepth();
+
+
+ // redistribute guard condition locations by additional splittings
+ std::pair<CG_result *, Relation> result = cgr->liftOverhead(min(effort,depth), false);
+
+ // since guard conditions are postponed for non-loop levels, hoist them now.
+ // this enables proper if-condition simplication when outputting actual code.
+ result.first->hoistGuard();
+
+
+
+
+ return result.first;
+}
+
+}
diff --git a/omega/code_gen/src/cscope.out b/omega/code_gen/src/cscope.out
new file mode 100644
index 0000000..ac4e74f
--- /dev/null
+++ b/omega/code_gen/src/cscope.out
@@ -0,0 +1,89773 @@
+cscope 15 $HOME/suif-cuda-omega-latest/code_gen/src 0000481316
+ @CG.cc
+
+21 
+ ~<omega.h
+>
+
+22 
+ ~<¡ršg.h
+>
+
+23 
+ ~<basic/omega_”rÜ.h
+>
+
+24 
+ ~<code_g’/CG.h
+>
+
+25 
+ ~<code_g’/CG_ouutBužd”.h
+>
+
+26 
+ ~<code_g’/CG_ouutR•r.h
+>
+
+27 
+ ~<code_g’/CG_¡ršgBužd”.h
+>
+
+28 
+ ~<code_g’/ouut_»´.h
+>
+
+29 
+ ~<¡ack
+>
+
+31
+Çme¥aû
+
+ gomega
+ {
+
+33
+Tu¶e
+<
+R–©iÚ
+>
+Ãw_IS
+;
+
+34
+Tu¶e
+<Tu¶e<
+R–©iÚ
+> >
+´ojeùed_nIS
+;
+
+35
+Tu¶e
+<
+CG_ouutR•r
+ *>
+¡©em’tInfo
+;
+
+36
+Tu¶e
+<
+R–©iÚ
+>
+ŒªsfÜm©iÚs
+;
+
+37 
+Ï¡_Ëv–
+;
+
+39
+CG_»suÉ
+ *
+g’_»cursive
+(
+Ëv–
+,
+IÁTu¶e
+ &
+isAùive
+);
+
+43
+Çme¥aû
+
+ gomega
+ {
+
+45
+Tu¶e
+<
+IÁTu¶e
+>
+smtNÚS¶™Lev–s
+;
+
+46
+Tu¶e
+<Tu¶e<
+¡d
+::
+¡ršg
+> >
+loÝIdxNames
+;
+
+47
+¡d
+::
+veùÜ
+<¡d::
+·œ
+<, std::
+¡ršg
+> >
+syncs
+;
+
+48 
+checkLoÝLev–
+;
+
+49 
+¡mtFÜLoÝCheck
+;
+
+50 
+uµ”BoundFÜLev–
+;
+
+51 
+low”BoundFÜLev–
+;
+
+52
+boÞ
+
+fžlInBounds
+;
+
+58
+ g¡d
+::
+¡ršg
+
+CG_»suÉ
+::
+´št
+(
+šd’t
+) {
+
+59
+CG_¡ršgBužd”
+
+ocg
+;
+
+60
+CG_ouutR•r
+ *
+ g»´
+ =
+´štR•r
+(&
+ocg
+,
+šd’t
+,
+
+61
+¡d
+::
+veùÜ
+<
+CG_ouutR•r
+ *>(
+Ï¡_Ëv–
+,
+
+62
+¡©ic_ÿ¡
+<
+CG_ouutR•r
+ *>(
+NULL
+)));
+
+63 ià(
+ g»´
+ =ð
+NULL
+)
+
+64 
+¡d
+::
+¡ršg
+();
+
+66 
+G‘SŒšg
+(
+»´
+);
+
+73
+ gCG_¥l™
+::
+CG_¥l™
+(
+IÁTu¶e
+ &
+aùive
+, 
+lvl
+, cÚ¡
+R–©iÚ
+ &
+cÚd_
+,
+
+74
+CG_»suÉ
+ *
+T
+, CG_»suÉ *
+F
+) {
+
+75
+R–©iÚ
+
+ gcÚd
+ =
+cÝy
+(
+cÚd_
+);
+
+76
+as£¹
+(
+cÚd
+.
+has_sšgË_cÚjunù
+());
+
+78
+cÛf_t
+
+ gc
+ = 0;
+
+79 
+ gpos
+ = -1;
+
+80
+GEQ_I‹¿tÜ
+
+G
+(
+cÚd
+.
+sšgË_cÚjunù
+());
+
+81 ià(
+ gG
+) {
+
+82 
+CÚ¡r_V¬s_I‹r
+
+cvi
+(*
+G
+,
+çl£
+);
+ gcvi
+; cvi++)
+
+83 ià((*
+ gcvi
+).
+ gcÛf
+ && (*cvi).
+ gv¬
+->
+kšd
+(è=ð
+IÅut_V¬
+
+
+84 && (*
+cvi
+).
+v¬
+->
+g‘_pos™iÚ
+(è>
+pos
+) {
+
+85
+pos
+ = (*
+cvi
+).
+v¬
+->
+g‘_pos™iÚ
+();
+
+86
+ gc
+ = (*
+cvi
+).
+cÛf
+;
+
+89 #iâdeà
+NDEBUG
+
+
+90 ià(
+ gpos
+ >
+ glvl
+ + 1) {
+
+91
+årštf
+(
+DebugFže
+, "IÎeg® s¶™‡ˆlvÈ%d\n",
+lvl
+);
+
+92
+ gcÚd
+.
+´efix_´št
+(
+DebugFže
+);
+
+93
+ gcode_g’_debug
+ = 1;
+
+97
+as£¹
+(
+pos
+ =ð0 ||…o <ð
+lvl
+ + 1);
+
+99 ià(
+ gpos
+ > 0 &&
+ gc
+ > 0) {
+
+100
+CG_»suÉ
+ *
+ gfoo
+ =
+T
+;
+
+101
+ gT
+ =
+F
+;
+
+102
+ gF
+ =
+foo
+;
+
+103 ià(
+ gcode_g’_debug
+) {
+
+104
+årštf
+(
+DebugFže
+,
+
+105 "Rev”sšg cÏu£ iÀÃw s¶™‚od©†vÈ%d\n",
+lvl
+);
+
+106
+ gcÚd
+.
+´efix_´št
+(
+DebugFže
+);
+
+108
+ gcÚd
+ =
+Com¶em’t
+(
+cÚd
+);
+
+110
+ gcÚd
+.
+sim¶ify
+();
+
+112
+as£¹
+(
+cÚd
+.
+has_sšgË_cÚjunù
+());
+
+115
+as£¹
+(
+EQ_I‹¿tÜ
+(
+cÚd
+.
+sšgË_cÚjunù
+()));
+
+117
+ gisAùive
+ =
+aùive
+;
+
+118
+ gcÚd™iÚ
+ =
+cÚd
+;
+
+119
+ gËv–
+ =
+lvl
+;
+
+120
+ gŒueCÏu£
+ =
+T
+;
+
+121
+ gçl£CÏu£
+ =
+F
+;
+
+124
+ g¡d
+::
+¡ršg
+
+CG_¥l™
+::
+´štSŒuùu»
+(
+šd’t
+) {
+
+125
+¡d
+::
+¡ršg
+
+»suÉ
+ =
+G‘Ind’tS·ûs
+(
+šd’t
+) + "// split‡t "
+
+126 +
+to_¡ršg
+((*è
+this
+è+ "\n" +
+G‘Ind’tS·ûs
+(
+šd’t
+)
+
+127 + "// gu¬d:" +
+gu¬d
+.
+´št_fÜmuÏ_to_¡ršg
+() + "\n"
+
+128 +
+G‘Ind’tS·ûs
+(
+šd’t
+) + "// if "
+
+129 +
+cÚd™iÚ
+.
+´št_fÜmuÏ_to_¡ršg
+() + "hen\n"
+
+130 +
+ŒueCÏu£
+->
+´štSŒuùu»
+(
+šd’t
+ + 1è+
+G‘Ind’tS·ûs
+(indent)
+
+131 + "//ƒl£\n" +
+çl£CÏu£
+->
+´štSŒuùu»
+(
+šd’t
+ + 1);
+
+132 
+ g»suÉ
+;
+
+135
+CG_ouutR•r
+*
+ gCG_¥l™
+::
+´štR•r
+(
+CG_ouutBužd”
+*
+ocg
+, 
+šd’t
+,
+
+136 cÚ¡
+¡d
+::
+veùÜ
+<
+CG_ouutR•r
+ *> &
+assigÃd_Ú_the_æy
+) {
+
+138 ià(!
+Mu¡_Be_Sub£t
+(
+cÝy
+(
+»¡riùiÚs
+), cÝy(
+known
+)))
+
+139
+´štf
+("------------wrong------------------\n");
+
+141
+CG_ouutR•r
+*
+ g¡mtLi¡
+;
+
+143
+CG_ouutR•r
+ *
+ gù¾R•r
+ =
+NULL
+;
+
+144 ià(!
+ ggu¬d
+.
+is_nuÎ
+(è&& !gu¬d.
+is_obvious_utÞogy
+()) {
+
+145
+ gù¾R•r
+ =
+ouutGu¬d
+(
+ocg
+,
+gu¬d
+,
+assigÃd_Ú_the_æy
+);
+
+146
+ gšd’t
+++;
+
+148 ià(
+ gù¾R•r
+ !ð
+NULL
+)
+
+149
+¡mtLi¡
+ =
+ocg
+->
+C»©eIf
+(
+šd’t
+ - 1,
+ù¾R•r
+,
+
+150
+ŒueCÏu£
+->
+´štR•r
+(
+ocg
+,
+šd’t
+,
+assigÃd_Ú_the_æy
+),
+
+151
+çl£CÏu£
+->
+´štR•r
+(
+ocg
+,
+šd’t
+,
+assigÃd_Ú_the_æy
+));
+
+153
+ g¡mtLi¡
+ =
+ocg
+->
+StmtLi¡Aµ’d
+(
+
+154
+ŒueCÏu£
+->
+´štR•r
+(
+ocg
+,
+šd’t
+,
+assigÃd_Ú_the_æy
+),
+
+155
+çl£CÏu£
+->
+´štR•r
+(
+ocg
+,
+šd’t
+,
+assigÃd_Ú_the_æy
+));
+
+157 
+ g¡mtLi¡
+;
+
+160
+CG_»suÉ
+ *
+ gCG_¥l™
+::
+liáOv”h—d
+(
+d•th
+) {
+
+161
+as£¹
+(
+d•th
+ >= 1);
+
+162
+ gŒueCÏu£
+ =
+ŒueCÏu£
+->
+liáOv”h—d
+(
+d•th
+);
+
+163
+ gçl£CÏu£
+ =
+çl£CÏu£
+->
+liáOv”h—d
+(
+d•th
+);
+
+164 
+ gthis
+;
+
+167
+CG_»suÉ
+ *
+ gCG_¥l™
+::
+fÜû_fš™e_bounds
+() {
+
+168
+ŒueCÏu£
+ =rueCÏu£->
+fÜû_fš™e_bounds
+();
+
+169
+ gçl£CÏu£
+ =
+çl£CÏu£
+->
+fÜû_fš™e_bounds
+();
+
+170 
+ gthis
+;
+
+173
+R–©iÚ
+
+ gCG_¥l™
+::
+fšdOv”h—d
+(
+liáTo
+) {
+
+174
+R–©iÚ
+
+r
+ =
+ŒueCÏu£
+->
+fšdOv”h—d
+(
+liáTo
+);
+
+175 ià(
+ gr
+.
+is_obvious_utÞogy
+())
+
+176
+ gr
+ =
+çl£CÏu£
+->
+fšdOv”h—d
+(
+liáTo
+);
+
+177 
+ gr
+;
+
+180
+CG_»suÉ
+ *
+ gCG_¥l™
+::
+»compu‹
+(cÚ¡
+R–©iÚ
+ &
+k
+, cÚ¡ R–©iÚ &
+r
+) {
+
+181
+ gknown
+ =
+cÝy
+(
+k
+);
+
+182
+ g»¡riùiÚs
+ =
+cÝy
+(
+r
+);
+
+184 
+ gnumAùive
+ = 0;
+
+185 
+ gs
+ = 1; s <ð
+isAùive
+.
+size
+(); s++)
+
+186 ià(
+ gisAùive
+[
+s
+]) {
+
+187
+R–©iÚ
+
+ gI
+ =
+´ojeùed_nIS
+[
+Ëv–
+][
+s
+];
+
+188 ià(!
+IÁ”£ùiÚ
+(
+cÝy
+(
+»¡riùiÚs
+),
+I
+).
+is_uµ”_bound_§tisfŸbË
+())
+
+189
+ gisAùive
+[
+s
+] = 0;
+
+191
+ gnumAùive
+++;
+
+193 ià(
+ gnumAùive
+ == 0) {
+
+194
+d–‘e
+
+this
+;
+
+195 
+Ãw
+
+ gCG_nuÎ
+;
+
+196 } ià(
+ gnumAùive
+ == 1 && 0) {
+
+199
+CG_»suÉ
+ *
+cg
+ =
+g’_»cursive
+(
+Ëv–
+,
+isAùive
+);
+
+200
+ gcg
+ =
+cg
+->
+»compu‹
+(
+k
+,
+r
+);
+
+201
+d–‘e
+
+ gthis
+;
+
+202 
+ gcg
+;
+
+205
+R–©iÚ
+
+ gÃw_»¡riùiÚs
+ =
+IÁ”£ùiÚ
+(
+cÝy
+(
+»¡riùiÚs
+),
+
+206
+cÝy
+(
+cÚd™iÚ
+));
+
+207
+ gÃw_»¡riùiÚs
+.
+sim¶ify
+();
+
+208
+ gŒueCÏu£
+ =
+ŒueCÏu£
+->
+»compu‹
+(
+known
+,
+Ãw_»¡riùiÚs
+);
+
+209
+ gÃw_»¡riùiÚs
+ =
+Difã»nû
+(
+cÝy
+(
+»¡riùiÚs
+), cÝy(
+cÚd™iÚ
+));
+
+210
+ gÃw_»¡riùiÚs
+.
+sim¶ify
+();
+
+211
+ gçl£CÏu£
+ =
+çl£CÏu£
+->
+»compu‹
+(
+known
+,
+Ãw_»¡riùiÚs
+);
+
+213 ià(
+ gŒueCÏu£
+->
+isNuÎ
+()) {
+
+214
+CG_»suÉ
+ *
+ gcg
+ =
+çl£CÏu£
+;
+
+215
+ gçl£CÏu£
+ =
+NULL
+;
+
+216
+d–‘e
+
+ gthis
+;
+
+217 
+ gcg
+;
+
+219 ià(
+ gçl£CÏu£
+->
+isNuÎ
+()) {
+
+220
+CG_»suÉ
+ *
+ gcg
+ =
+ŒueCÏu£
+;
+
+221
+ gŒueCÏu£
+ =
+NULL
+;
+
+222
+d–‘e
+
+ gthis
+;
+
+223 
+ gcg
+;
+
+225 
+ gthis
+;
+
+228
+R–©iÚ
+
+ gCG_¥l™
+::
+hoi¡Gu¬d
+() {
+
+229
+R–©iÚ
+
+gu¬d1
+ =
+ŒueCÏu£
+->
+hoi¡Gu¬d
+();
+
+230
+R–©iÚ
+
+ ggu¬d2
+ =
+çl£CÏu£
+->
+hoi¡Gu¬d
+();
+
+231 ià(
+ ggu¬d
+.
+is_nuÎ
+())
+
+232
+ ggu¬d
+ =
+R–©iÚ
+::
+True
+(
+cÚd™iÚ
+.
+n_£t
+());
+
+234 ià(!
+ ggu¬d1
+.
+is_obvious_utÞogy
+(è&& !
+ ggu¬d2
+.is_obvious_tautology()
+
+235 &&
+Mu¡_Be_Sub£t
+(
+cÝy
+(
+gu¬d1
+), cÝy(
+gu¬d2
+))
+
+236 &&
+Mu¡_Be_Sub£t
+(
+cÝy
+(
+gu¬d2
+), cÝy(
+gu¬d1
+))) {
+
+237
+ gŒueCÏu£
+->
+»moveGu¬d
+();
+
+238
+ gçl£CÏu£
+->
+»moveGu¬d
+();
+
+239
+ ggu¬d
+ =
+IÁ”£ùiÚ
+(
+gu¬d
+,
+gu¬d1
+);
+
+242 
+ ggu¬d
+;
+
+249
+R–©iÚ
+
+ gCG_Ëaf
+::
+fšdOv”h—d
+(
+liáTo
+) {
+
+250 
+s
+ = 1;
+ gs
+ <ð
+isAùive
+.
+size
+(); s++)
+
+251 ià(
+ gisAùive
+[
+s
+]) {
+
+252 
+ gbb
+ = !
+gu¬d
+[
+s
+].
+is_obvious_utÞogy
+();
+
+253 ià(
+ gbb
+) {
+
+254 ià(
+ gcode_g’_debug
+)
+
+255
+årštf
+(
+DebugFže
+,
+
+257
+s
+,
+gu¬d
+[s].
+´št_fÜmuÏ_to_¡ršg
+().
+c_¡r
+());
+
+258
+R–©iÚ
+
+ gr
+ =
+pickOv”h—d
+(
+gu¬d
+[
+s
+],
+liáTo
+);
+
+259 ià(!
+ gr
+.
+is_obvious_utÞogy
+())
+
+260 
+ gr
+;
+
+263 
+ gR–©iÚ
+::
+True
+(
+known
+.
+n_£t
+());
+
+266
+ g¡d
+::
+¡ršg
+
+CG_Ëaf
+::
+´štSŒuùu»
+() {
+
+267
+¡d
+::
+¡ršg
+
+»suÉ
+;
+
+268 
+ gs
+ = 1; s <ð
+isAùive
+.
+size
+(); s++)
+
+269 ià(
+ gisAùive
+[
+s
+]) {
+
+270
+ g»suÉ
+ +ð
+¡d
+::
+¡ršg
+("s"è+
+to_¡ršg
+(
+s
+);
+
+272 
+ g»suÉ
+ + "\n";
+
+275
+CG_ouutR•r
+*
+ gCG_Ëaf
+::
+´štR•r
+(
+CG_ouutBužd”
+*
+ocg
+, 
+šd’t
+,
+
+276 cÚ¡
+¡d
+::
+veùÜ
+<
+CG_ouutR•r
+ *> &
+assigÃd_Ú_the_æy
+) {
+
+278 ià(!
+Mu¡_Be_Sub£t
+(
+cÝy
+(
+»¡riùiÚs
+), cÝy(
+known
+)))
+
+279
+´štf
+("------------wrong------------------\n");
+
+281
+ g¡d
+::
+¡ršg
+
+»suÉ
+;
+
+282
+CG_ouutR•r
+*
+ g¡mtLi¡
+ =
+NULL
+;
+
+283
+CG_ouutR•r
+*
+ g¡mtNode
+ =
+NULL
+;
+
+285
+ gTu¶e
+<>
+ gwÜkšg
+;
+
+287 ià(
+ gcode_g’_debug
+ > 1) {
+
+288
+ g»suÉ
+ = "known: " +
+known
+.
+´št_fÜmuÏ_to_¡ršg
+();
+
+289
+ g¡mtLi¡
+ =
+ocg
+->
+StmtLi¡Aµ’d
+(
+¡mtLi¡
+,
+
+290
+ocg
+->
+C»©eComm’t
+(
+šd’t
+,
+»suÉ
+));
+
+293 
+ gs
+ = 1; s <ð
+isAùive
+.
+size
+(); s++)
+
+294 ià(
+ gisAùive
+[
+s
+]) {
+
+295 ià(
+ ggu¬d
+[
+s
+].
+is_obvious_utÞogy
+()) {
+
+296
+ g¡mtNode
+ =
+ouutS‹m’t
+(
+ocg
+,
+¡©em’tInfo
+[
+s
+]->
+þÚe
+(),
+
+297
+šd’t
+,
+ŒªsfÜm©iÚs
+[
+s
+],
+known
+,
+assigÃd_Ú_the_æy
+);
+
+298
+ g¡mtLi¡
+ =
+ocg
+->
+StmtLi¡Aµ’d
+(
+¡mtLi¡
+,
+¡mtNode
+);
+
+300 ià(
+ gcode_g’_debug
+ > 1) {
+
+301
+ g»suÉ
+ = "restrictions: "
+
+302 +
+»¡riùiÚs
+.
+´št_fÜmuÏ_to_¡ršg
+();
+
+303
+ g¡mtLi¡
+ =
+ocg
+->
+StmtLi¡Aµ’d
+(
+¡mtLi¡
+,
+
+304
+ocg
+->
+C»©eComm’t
+(
+šd’t
+,
+»suÉ
+));
+
+306
+ gwÜkšg
+.
+­³nd
+(
+s
+);
+
+311 
+ gi
+ = 1; i <ð
+wÜkšg
+.
+size
+(); i++)
+
+312 ià(
+ gwÜkšg
+[
+i
+] != 0) {
+
+313
+R–©iÚ
+
+g
+ =
+IÁ”£ùiÚ
+(
+cÝy
+(
+gu¬d
+[
+wÜkšg
+[
+i
+]]), cÝy(
+known
+));
+
+314
+ g¡mtNode
+ =
+ouutS‹m’t
+(
+ocg
+,
+¡©em’tInfo
+[
+wÜkšg
+[
+i
+]]->
+þÚe
+(),
+
+315
+šd’t
+ + 1,
+ŒªsfÜm©iÚs
+[
+wÜkšg
+[
+i
+]],
+g
+,
+
+316
+assigÃd_Ú_the_æy
+);
+
+318 
+ gj
+ =
+i
+ + 1; j <ð
+wÜkšg
+.
+size
+(); j++)
+
+319 ià(
+ gwÜkšg
+[
+j
+] != 0) {
+
+320 ià(
+Mu¡_Be_Sub£t
+(
+cÝy
+(
+gu¬d
+[
+wÜkšg
+[
+i
+]]),
+
+321
+cÝy
+(
+gu¬d
+[
+wÜkšg
+[
+j
+]]))
+
+322 &&
+Mu¡_Be_Sub£t
+(
+cÝy
+(
+gu¬d
+[
+wÜkšg
+[
+j
+]]),
+
+323
+cÝy
+(
+gu¬d
+[
+wÜkšg
+[
+i
+]]))) {
+
+324
+¡mtNode
+ =
+ocg
+->
+StmtLi¡Aµ’d
+(stmtNode,
+
+325
+ouutS‹m’t
+(
+ocg
+,
+
+326
+¡©em’tInfo
+[
+wÜkšg
+[
+j
+]]->
+þÚe
+(),
+
+327
+šd’t
+ + 1,
+ŒªsfÜm©iÚs
+[
+wÜkšg
+[
+j
+]],
+
+328
+g
+,
+assigÃd_Ú_the_æy
+));
+
+329
+ gwÜkšg
+[
+j
+] = 0;
+
+333
+CG_ouutR•r
+ *
+ gifGu¬d
+ =
+ouutGu¬d
+(
+ocg
+,
+gu¬d
+[
+wÜkšg
+[
+i
+]],
+
+334
+assigÃd_Ú_the_æy
+);
+
+335
+ g¡mtNode
+ =
+ocg
+->
+C»©eIf
+(
+šd’t
+,
+ifGu¬d
+,
+¡mtNode
+,
+NULL
+);
+
+336
+ g¡mtLi¡
+ =
+ocg
+->
+StmtLi¡Aµ’d
+(
+¡mtLi¡
+,
+¡mtNode
+);
+
+339 
+ g¡mtLi¡
+;
+
+342
+CG_»suÉ
+*
+ gCG_Ëaf
+::
+»compu‹
+(cÚ¡
+R–©iÚ
+ &
+k
+, cÚ¡ R–©iÚ &
+r
+) {
+
+343
+ gknown
+ =
+cÝy
+(
+k
+);
+
+344
+ g»¡riùiÚs
+ =
+cÝy
+(
+r
+);
+
+346
+ ggu¬d
+.
+»®loÿ‹
+(
+isAùive
+.
+size
+());
+
+348
+boÞ
+
+ gªyAùive
+ =
+çl£
+;
+
+349 
+ gs
+ = 1; s <ð
+isAùive
+.
+size
+(); s++)
+
+350 ià(
+ gisAùive
+[
+s
+]) {
+
+351
+R–©iÚ
+
+ gI
+ =
+IÁ”£ùiÚ
+(
+cÝy
+(
+»¡riùiÚs
+), cÝy(
+Ãw_IS
+[
+s
+]));
+
+352 ià(!
+ gI
+.
+is_uµ”_bound_§tisfŸbË
+())
+
+353
+ gisAùive
+[
+s
+] = 0;
+
+355
+ gªyAùive
+ =
+Œue
+;
+
+356
+as£¹
+(!
+I
+.
+is_nuÎ
+());
+
+357
+ ggu¬d
+[
+s
+] =
+Gi¡
+(
+cÝy
+(
+I
+), cÝy(
+known
+), 1);
+
+363 ià(!
+ gªyAùive
+) {
+
+364
+d–‘e
+
+ gthis
+;
+
+365 
+Ãw
+
+CG_nuÎ
+();
+
+367 
+ gthis
+;
+
+370
+R–©iÚ
+
+ gCG_Ëaf
+::
+hoi¡Gu¬d
+() {
+
+371 
+s
+;
+
+372 
+ gs
+ = 1; s <ð
+isAùive
+.
+size
+(è&& !isAùive[
+s
+]; s++)
+
+375 ià(
+ gs
+ >
+ gisAùive
+.
+size
+())
+
+376 
+ gR–©iÚ
+::
+True
+(1);
+
+378
+R–©iÚ
+
+ ggu¬d1
+ =
+gu¬d
+[
+s
+];
+
+380 
+ gi
+ =
+s
+ + 1; i <ð
+isAùive
+.
+size
+(); i++)
+
+381 ià(
+ gisAùive
+[
+i
+]
+
+382 && !(
+Mu¡_Be_Sub£t
+(
+cÝy
+(
+gu¬d1
+), cÝy(
+gu¬d
+[
+i
+]))
+
+383 &&
+Mu¡_Be_Sub£t
+(
+cÝy
+(
+gu¬d
+[
+i
+]), cÝy(
+gu¬d1
+))))
+
+384 
+ gR–©iÚ
+::
+True
+(
+gu¬d1
+.
+n_£t
+());
+
+386 
+ ggu¬d1
+;
+
+389 
+ gCG_Ëaf
+::
+»moveGu¬d
+() {
+
+390 
+i
+ = 1;
+ gi
+ <ð
+isAùive
+.
+size
+(); i++)
+
+391 ià(
+ gisAùive
+[
+i
+])
+
+392
+ ggu¬d
+[
+i
+] =
+R–©iÚ
+::
+True
+(
+gu¬d
+[i].
+n_£t
+());
+
+399
+CG_»suÉ
+ *
+ gCG_loÝ
+::
+fÜû_fš™e_bounds
+() {
+
+400 ià(!
+ÃedLoÝ
+
+
+401 || (
+hasBound
+(
+bounds
+,
+Ëv–
+, 0) && hasBound(bounds,†evel, 1))) {
+
+402
+ gbody
+ =
+body
+->
+fÜû_fš™e_bounds
+();
+
+403 
+ gthis
+;
+
+406 ià(
+ gcode_g’_debug
+)
+
+407
+årštf
+(
+DebugFže
+, "Don't have finite bounds in:\n%s\n\n",
+
+408
+this
+->
+´št
+(2).
+c_¡r
+());
+
+409
+boÞ
+
+ gbb
+ = !
+hasBound
+(
+bounds
+,
+Ëv–
+, 0);
+
+410 
+ gdœeùiÚ
+ =
+bb
+ ? 0 : 1;
+
+411 
+ gs
+;
+
+412
+R–©iÚ
+
+ gS
+;
+
+413 
+ gs
+ = 1; s <ð
+isAùive
+.
+size
+(); s++)
+
+414 ià(
+ gisAùive
+[
+s
+])
+
+415 ià(
+fšd_ªy_cÚ¡¿št
+(
+s
+,
+Ëv–
+,
+»¡riùiÚs
+,
+dœeùiÚ
+,
+S
+,
+
+416
+çl£
+))
+
+420 ià(
+ gS
+.
+is_nuÎ
+())
+
+421 
+ gs
+ = 1; s <ð
+isAùive
+.
+size
+(); s++)
+
+422 ià(
+ gisAùive
+[
+s
+])
+
+423 ià(
+fšd_ªy_cÚ¡¿št
+(
+s
+,
+Ëv–
+,
+»¡riùiÚs
+,
+dœeùiÚ
+,
+S
+,
+
+424
+Œue
+))
+
+427 ià(
+ gS
+.
+is_nuÎ
+()) {
+
+429
+årštf
+(
+DebugFže
+,"hasBound(%s,%d,%sè§id f®£, buˆov”h—d wa utÞogy\n",
+I
+.
+´št_fÜmuÏ_to_¡ršg
+().
+c_¡r
+(),
+Ëv–
+,
+dœeùiÚ
+?"upper bound":"lower bound");
+
+431
+throw
+
+codeg’_”rÜ
+("unableo force finite bounds");
+
+436
+´štf
+("S¶™šg oÀ%s\n",
+S
+.
+´št_fÜmuÏ_to_¡ršg
+().
+c_¡r
+());
+
+438
+CG_»suÉ
+ *
+ g¥l
+ =
+Ãw
+
+CG_¥l™
+(
+isAùive
+,
+Ëv–
+,
+S
+,
+this
+,his->
+þÚe
+());
+
+439
+ g¥l
+ =
+¥l
+->
+»compu‹
+(
+cÝy
+(
+known
+), cÝy(
+»¡riùiÚs
+));
+
+441 ià(
+ gcode_g’_debug
+)
+
+442
+årštf
+(
+DebugFže
+,"S¶™ oÀtØü—‹ fš™bounds:\n%s\n\n",
+¥l
+->
+´št
+(2).
+c_¡r
+());
+
+444 
+ g¥l
+->
+fÜû_fš™e_bounds
+();
+
+447
+CG_»suÉ
+ *
+ gCG_loÝ
+::
+liáOv”h—d
+(
+d•th
+) {
+
+448
+as£¹
+(
+d•th
+ >= 1);
+
+449 ià(
+ gthis
+->
+d•th
+(è<
+ gd•th
+)
+
+450 
+ gthis
+;
+
+451 ià(!(
+ gÃedLoÝ
+ &&
+ gthis
+->
+d•th
+() == depth)) {
+
+452
+body
+ = body->
+liáOv”h—d
+(
+d•th
+);
+
+453 
+ gthis
+;
+
+456
+R–©iÚ
+
+ gc
+ =
+body
+->
+fšdOv”h—d
+(
+Ëv–
+);
+
+457 ià(
+ gc
+.
+is_obvious_utÞogy
+())
+
+458 
+ gthis
+;
+
+459
+as£¹
+(
+c
+.
+is_uµ”_bound_§tisfŸbË
+());
+
+460
+ g¡d
+::
+¡ršg
+
+befÜe
+;
+
+461 ià(
+ gcode_g’_debug
+) {
+
+462
+ gbefÜe
+ =
+´št
+(1);
+
+464
+CG_»suÉ
+ *
+ gs
+ =
+Ãw
+
+CG_¥l™
+(
+isAùive
+,
+Ëv–
+,
+c
+,
+this
+,his->
+þÚe
+());
+
+466
+ gs
+ =
+s
+->
+»compu‹
+(
+cÝy
+(
+known
+), cÝy(
+»¡riùiÚs
+));
+
+467 ià(
+ gcode_g’_debug
+) {
+
+468
+ g¡d
+::
+¡ršg
+
+aá”
+ =
+s
+->
+´št
+(1);
+
+469
+årštf
+(
+DebugFže
+, "Lifted out overhead of %s\n",
+
+470
+c
+.
+´št_fÜmuÏ_to_¡ršg
+().
+c_¡r
+());
+
+471
+årštf
+(
+DebugFže
+, "äom:\n%s\n",
+befÜe
+.
+c_¡r
+());
+
+472
+årštf
+(
+DebugFže
+, "tØg‘:\n%s--\n",
+aá”
+.
+c_¡r
+());
+
+474
+ gs
+ =
+s
+->
+liáOv”h—d
+(
+d•th
+);
+
+475 
+ gs
+;
+
+478
+ g¡d
+::
+¡ršg
+
+CG_loÝ
+::
+´štSŒuùu»
+(
+šd’t
+) {
+
+479
+¡d
+::
+¡ršg
+
+s
+ = "";
+
+480 
+ gšdÁ
+ =
+šd’t
+;
+
+481
+ gs
+ +ð
+G‘Ind’tS·ûs
+(
+šd’t
+è+ "//†oÝ" + (
+ÃedLoÝ
+ ? "" : "(single)")
+
+482 + " fÜ" +
+to_¡ršg
+(
+Ëv–
+è+ "‡ˆ" +o_¡ršg((*è
+this
+)
+
+484
+ gs
+ +ð
+G‘Ind’tS·ûs
+(
+šd’t
+) + "// known: "
+
+485 +
+known
+.
+´št_fÜmuÏ_to_¡ršg
+() + "\n";
+
+486
+ gs
+ +ð
+G‘Ind’tS·ûs
+(
+šd’t
+) + "// guard: "
+
+487 +
+gu¬d
+.
+´št_fÜmuÏ_to_¡ršg
+() + "\n";
+
+488
+ gs
+ +ð
+G‘Ind’tS·ûs
+(
+šd’t
+) + "// bounds: "
+
+489 +
+bounds
+.
+´št_fÜmuÏ_to_¡ršg
+() + "\n";
+
+492 
+ gi
+ = 1; i <ð
+isAùive
+.
+size
+(); i++)
+
+493 ià(
+ gisAùive
+[
+i
+]) {
+
+494
+ gs
+ +ð
+G‘Ind’tS·ûs
+(
+šd’t
+è+ "// " + "s" +
+to_¡ršg
+(
+i
+) + ":"
+
+495 +
+´ojeùed_nIS
+[
+Ëv–
+][
+i
+].
+´št_fÜmuÏ_to_¡ršg
+() + "\n";
+
+498 
+ gs
+ +
+ gbody
+->
+´štSŒuùu»
+(
+šdÁ
+ + 1è+
+G‘Ind’tS·ûs
+(indnt + 1)
+
+502
+CG_ouutR•r
+*
+ gCG_loÝ
+::
+´štR•r
+(
+CG_ouutBužd”
+*
+ocg
+, 
+šd’t
+,
+
+503 cÚ¡
+¡d
+::
+veùÜ
+<
+CG_ouutR•r
+ *> &
+assigÃd_Ú_the_æy
+) {
+
+505 ià(!
+Mu¡_Be_Sub£t
+(
+cÝy
+(
+»¡riùiÚs
+), cÝy(
+known
+)))
+
+506
+´štf
+("------------wrong------------------\n");
+
+529
+CG_ouutR•r
+*
+ ggu¬dR•r
+ =
+ouutGu¬d
+(
+ocg
+,
+gu¬d
+,
+assigÃd_Ú_the_æy
+);
+
+530
+R–©iÚ
+
+ g’fÜûd
+ =
+IÁ”£ùiÚ
+(
+cÝy
+(
+known
+), cÝy(
+gu¬d
+));
+
+531
+ g’fÜûd
+.
+sim¶ify
+();
+
+536
+ g¡d
+::
+veùÜ
+<
+CG_ouutR•r
+ *>
+aÙf
+ =
+assigÃd_Ú_the_æy
+;
+
+538
+ g¡d
+::
+·œ
+<
+CG_ouutR•r
+ *,
+ gboÞ
+>
+ geqR•r
+ =
+ouutAssignm’t
+(
+ocg
+,
+bounds
+,
+
+539
+bounds
+.
+£t_v¬
+(
+Ëv–
+),
+’fÜûd
+,
+gu¬dR•r
+,
+aÙf
+);
+
+540 ià(!
+ geqR•r
+.
+ g£cÚd
+)
+
+541
+ gaÙf
+[
+Ëv–
+ - 1] =
+eqR•r
+.
+fœ¡
+;
+
+543 
+ gšdÁ
+ =
+šd’t
+;
+
+544 ià(
+ ggu¬dR•r
+ !ð
+NULL
+)
+
+545
+šdÁ
+++;
+
+548 ià(
+ gcheckLoÝLev–
+) {
+
+549 ià(
+ gËv–
+ =ð
+checkLoÝLev–
+) {
+
+550
+boÞ
+
+¡mtP»£Á
+ =
+çl£
+;
+
+551 
+ gs
+ = 1; s <ð
+isAùive
+.
+size
+(); s++) {
+
+552 ià(
+ gisAùive
+[
+s
+] &&
+ gs
+ - 1 =ð
+¡mtFÜLoÝCheck
+)
+
+553
+¡mtP»£Á
+ =
+Œue
+;
+
+555 ià(
+ g¡mtP»£Á
+) {
+
+556
+ gfžlInBounds
+ =
+Œue
+;
+
+563
+ g¡d
+::
+·œ
+<
+CG_ouutR•r
+ *,
+ gboÞ
+>
+ gù¾R•r
+ =
+ouutBounds
+(
+ocg
+,
+bounds
+,
+
+564
+bounds
+.
+£t_v¬
+(
+Ëv–
+),
+šdÁ
+,
+’fÜûd
+,
+aÙf
+);
+
+567
+ gfžlInBounds
+ =
+çl£
+;
+
+570
+R–©iÚ
+
+ gËá_ov”
+ =
+Gi¡
+(
+cÝy
+(
+bounds
+), cÝy(
+’fÜûd
+), 1);
+
+572 ià(!
+ gËá_ov”
+.
+is_obvious_utÞogy
+())
+
+573
+´štf
+("=============something wrong===============\n");
+
+575
+CG_ouutR•r
+ *
+ gloÝR•r
+ =
+NULL
+;
+
+576 ià(
+ geqR•r
+.
+ g£cÚd
+) {
+
+577
+CG_ouutR•r
+ *
+ gbodyR•r
+ =
+body
+->
+´štR•r
+(
+ocg
+,
+šdÁ
+,
+aÙf
+);
+
+578
+CG_ouutR•r
+ *
+ gassignR•r
+ =
+ocg
+->
+C»©eAssignm’t
+(
+šdÁ
+,
+
+579
+ocg
+->
+C»©eId’t
+(
+bounds
+.
+£t_v¬
+(
+Ëv–
+)->
+Çme
+()),
+eqR•r
+.
+fœ¡
+);
+
+580
+ gloÝR•r
+ =
+ocg
+->
+StmtLi¡Aµ’d
+(
+assignR•r
+,
+bodyR•r
+);
+
+581 } ià(
+ gù¾R•r
+.
+ g£cÚd
+) {
+
+582
+CG_ouutR•r
+ *
+ gbodyR•r
+ =
+body
+->
+´štR•r
+(
+ocg
+,
+šdÁ
+ + 1,
+aÙf
+);
+
+583
+ gloÝR•r
+ =
+ocg
+->
+C»©eLoÝ
+(
+šdÁ
+,
+ù¾R•r
+.
+fœ¡
+,
+bodyR•r
+);
+
+585 #ifdeà
+BUILDCUDA
+
+
+591
+boÞ
+
+ gblockLoÝ
+ =
+çl£
+;
+
+592
+boÞ
+
+ gth»adLoÝ
+ =
+çl£
+;
+
+593
+boÞ
+
+ gsync
+ =
+çl£
+;
+
+594 
+ gfœ¡AùiveStmt
+ = -1;
+
+595 
+ gs
+ = 1; s <ð
+isAùive
+.
+size
+(); s++) {
+
+596 ià(
+ gisAùive
+[
+s
+]) {
+
+597 ià(
+ gfœ¡AùiveStmt
+ < 0)
+
+598
+ gfœ¡AùiveStmt
+ =
+s
+;
+
+602 
+ gidx
+ =
+smtNÚS¶™Lev–s
+[
+s
+].
+šdex
+(
+Ëv–
+);
+
+603 ià(
+ gidx
+ == 1) {
+
+604
+blockLoÝ
+ =
+Œue
+;
+
+607 ià(
+ gidx
+ == 2) {
+
+608
+th»adLoÝ
+ =
+Œue
+;
+
+612 ià(
+ gblockLoÝ
+ &&
+ gth»adLoÝ
+) {
+
+613
+årštf
+(
+¡d”r
+,
+
+615
+Ëv–
+);
+
+616
+ gth»adLoÝ
+ =
+çl£
+;
+
+618
+ g¡d
+::
+¡ršg
+
+´eã¼edIdx
+;
+
+619 ià(
+ gloÝIdxNames
+.
+size
+()
+
+620 && (
+ gËv–
+ / 2è- 1 <
+ gloÝIdxNames
+[
+fœ¡AùiveStmt
+].
+size
+())
+
+621
+ g´eã¼edIdx
+ =
+loÝIdxNames
+[
+fœ¡AùiveStmt
+][(
+Ëv–
+ / 2)];
+
+622 
+ gs
+ = 1; s <ð
+isAùive
+.
+size
+(); s++) {
+
+623 ià(
+ gisAùive
+[
+s
+]) {
+
+624 
+ gi
+ = 0; i <
+ gsyncs
+.
+size
+(); i++) {
+
+625 ià(
+ gsyncs
+[
+i
+].
+ gfœ¡
+ =ð
+s
+ - 1
+
+626 &&
+¡rcmp
+(
+syncs
+[
+i
+].
+£cÚd
+.
+c_¡r
+(),
+
+627
+´eã¼edIdx
+.
+c_¡r
+()) == 0) {
+
+628
+sync
+ =
+Œue
+;
+
+634 ià(
+ gth»adLoÝ
+ ||
+ gblockLoÝ
+ ||
+ g´eã¼edIdx
+.
+Ëngth
+() != 0) {
+
+635 
+buf
+[1024];
+
+636
+ g¡d
+::
+¡ršg
+
+loÝ
+;
+
+637 ià(
+ gblockLoÝ
+)
+
+638
+ gloÝ
+ = "blockLoop ";
+
+639 ià(
+ gth»adLoÝ
+)
+
+640
+ gloÝ
+ = "threadLoop ";
+
+641 ià(
+ g´eã¼edIdx
+.
+Ëngth
+(è!ð0 &&
+sync
+) {
+
+642
+¥rštf
+(
+buf
+, "~cuda~ %¥»ã¼edIdx: % sync",
+loÝ
+.
+c_¡r
+(),
+
+643
+´eã¼edIdx
+.
+c_¡r
+());
+
+644 } ià(
+ g´eã¼edIdx
+.
+Ëngth
+() != 0) {
+
+645
+¥rštf
+(
+buf
+, "~cuda~ %¥»ã¼edIdx: %s",
+loÝ
+.
+c_¡r
+(),
+
+646
+´eã¼edIdx
+.
+c_¡r
+());
+
+648
+¥rštf
+(
+buf
+, "~cuda~ %s",
+loÝ
+.
+c_¡r
+());
+
+651 #ifdeà
+BUILD_ROSE
+
+
+652
+ gloÝR•r
+ =
+ocg
+->
+C»©eA‰ribu‹
+(
+loÝR•r
+,
+buf
+);
+
+658
+ gloÝR•r
+ =
+ocg
+->
+StmtLi¡Aµ’d
+(ocg->
+C»©eComm’t
+(
+šdÁ
+,
+buf
+),
+
+659
+loÝR•r
+);
+
+668 } ià(
+ gù¾R•r
+.
+ gfœ¡
+ !ð
+NULL
+) {
+
+669
+CG_ouutR•r
+ *
+bodyR•r
+ =
+body
+->
+´štR•r
+(
+ocg
+,
+šdÁ
+,
+aÙf
+);
+
+670
+ gloÝR•r
+ =
+ocg
+->
+StmtLi¡Aµ’d
+(
+ù¾R•r
+.
+fœ¡
+,
+bodyR•r
+);
+
+672
+ gloÝR•r
+ =
+body
+->
+´štR•r
+(
+ocg
+,
+šdÁ
+,
+aÙf
+);
+
+674 ià(
+ ggu¬dR•r
+ !ð
+NULL
+)
+
+675
+loÝR•r
+ =
+ocg
+->
+C»©eIf
+(
+šd’t
+,
+gu¬dR•r
+,†oÝR•r,
+NULL
+);
+
+677
+d–‘e
+
+ gaÙf
+[
+Ëv–
+ - 1];
+
+678 
+ gloÝR•r
+;
+
+757
+R–©iÚ
+
+ gCG_loÝ
+::
+fšdOv”h—d
+(
+liáTo
+) {
+
+760 ià(
+ÃedLoÝ
+) {
+
+761 
+bb
+ = !
+gu¬d
+.
+is_obvious_utÞogy
+();
+
+762 ià(
+ gbb
+) {
+
+764
+årštf
+(
+DebugFže
+,"Tryingo„emove overhead on guard of†oop %x‡t†evel %d: %s\n",
+
+765 (*è
+this
+,
+Ëv–
+,
+gu¬d
+.
+´št_fÜmuÏ_to_¡ršg
+().
+c_¡r
+());
+
+767
+R–©iÚ
+
+ gr
+ =
+pickOv”h—d
+(
+gu¬d
+,
+liáTo
+);
+
+768 ià(!
+ gr
+.
+is_obvious_utÞogy
+())
+
+769 
+ gr
+;
+
+771
+R–©iÚ
+
+ gb
+ =
+bounds
+;
+
+772
+R–©iÚ
+
+ gr
+ =
+mšMaxOv”h—d
+(
+b
+,
+Ëv–
+);
+
+773 ià(!
+ gr
+.
+is_obvious_utÞogy
+()) {
+
+775
+årštf
+(
+DebugFže
+,"Tryingo„emove minMax overhead on guard of†oop %x‡t†evel %d: %s\n",
+
+776 (*è
+this
+,
+Ëv–
+,
+gu¬d
+.
+´št_fÜmuÏ_to_¡ršg
+().
+c_¡r
+());
+
+778 
+ gr
+;
+
+781
+R–©iÚ
+
+ gr
+ =
+body
+->
+fšdOv”h—d
+(
+liáTo
+);
+
+782 ià(
+ gr
+.
+is_obvious_utÞogy
+())
+
+783 
+ gr
+;
+
+797
+ gr
+ =
+IÁ”£ùiÚ
+(
+r
+,
+cÝy
+(
+bounds
+));
+
+799
+ gr
+ =
+´ojeù_Úto_Ëv–s
+(
+r
+,
+Ëv–
+, 0);
+
+801
+ gr
+ =
+Gi¡
+(
+r
+,
+cÝy
+(
+bounds
+), 1);
+
+804 
+ gr
+;
+
+807
+CG_»suÉ
+ *
+ gCG_loÝ
+::
+»compu‹
+(cÚ¡
+R–©iÚ
+ &
+k
+, cÚ¡ R–©iÚ &
+r
+) {
+
+808
+ gknown
+ =
+cÝy
+(
+k
+);
+
+809
+ g»¡riùiÚs
+ =
+cÝy
+(
+r
+);
+
+813
+boÞ
+
+ gªyAùive
+ =
+çl£
+;
+
+814 
+ gs
+ = 1; s <ð
+isAùive
+.
+size
+(); s++)
+
+815 ià(
+ gisAùive
+[
+s
+]) {
+
+816 ià(!
+IÁ”£ùiÚ
+(
+cÝy
+(
+»¡riùiÚs
+),
+
+817
+cÝy
+(
+´ojeùed_nIS
+[
+Ëv–
+][
+s
+])).
+is_uµ”_bound_§tisfŸbË
+()) {
+
+818
+ gisAùive
+[
+s
+] = 0;
+
+820
+ gªyAùive
+ =
+Œue
+;
+
+823 ià(!
+ gªyAùive
+) {
+
+824
+d–‘e
+
+ gthis
+;
+
+825 
+Ãw
+
+CG_nuÎ
+();
+
+832
+R–©iÚ
+
+ ghuÎ
+ =
+HuÎ
+(
+´ojeùed_nIS
+[
+Ëv–
+],
+isAùive
+, 1,
+Œue
+,
+
+833
+cÝy
+(
+»¡riùiÚs
+));
+
+834
+ ghuÎ
+ =
+IÁ”£ùiÚ
+(
+huÎ
+,
+cÝy
+(
+»¡riùiÚs
+));
+
+835
+ ghuÎ
+.
+sim¶ify
+(2, 4);
+
+838
+ gÃedLoÝ
+ =
+Œue
+;
+
+839 
+EQ_I‹¿tÜ
+
+ ge
+ =
+huÎ
+.
+sšgË_cÚjunù
+()->
+EQs
+();ƒ;ƒ++) {
+
+840 ià(!(*
+ ge
+).
+has_wždÿrds
+(è&& (*e).
+g‘_cÛf
+(
+huÎ
+.
+£t_v¬
+(
+Ëv–
+)) != 0) {
+
+841
+ÃedLoÝ
+ =
+çl£
+;
+
+842
+ gbounds
+ =
+R–©iÚ
+::
+True
+(
+huÎ
+.
+n_£t
+());
+
+843
+ gbounds
+.
+ªd_w™h_EQ
+(*
+e
+);
+
+844
+ gbounds
+.
+sim¶ify
+();
+
+845
+ gbounds
+.
+cÝy_Çmes
+(
+huÎ
+);
+
+846
+ gbounds
+.
+£tup_Çmes
+();
+
+852 ià(
+ gÃedLoÝ
+) {
+
+853
+ ghuÎ
+ =
+Gi¡
+(
+huÎ
+,
+cÝy
+(
+known
+), 1);
+
+854
+R–©iÚ
+
+ gb
+ =
+huÎ
+;
+
+856
+ gbounds
+ =
+R–©iÚ
+(
+huÎ
+.
+n_£t
+());
+
+857
+F_Exi¡s
+ *
+ gã
+ =
+bounds
+.
+add_ªd
+()->
+add_exi¡s
+();
+
+858
+F_And
+ *
+ gf_roÙ
+ =
+->
+add_ªd
+();
+
+861
+boÞ
+
+ ghas_uÄesÞved_bound
+ =
+çl£
+;
+
+863
+CÚjunù
+ *
+ gc
+ =
+b
+.
+sšgË_cÚjunù
+();
+
+864
+V¬ŸbË_ID
+
+ gv
+ =
+b
+.
+£t_v¬
+(
+Ëv–
+);
+
+865
+ g¡d
+::
+m­
+ <
+V¬ŸbË_ID
+,
+ gV¬ŸbË_ID
+ >
+ gexi¡s_m­pšg
+;
+
+866
+ g¡d
+::
+¡ack
+ <
+¡d
+::
+·œ
+<
+GEQ_HªdË
+,
+ gV¬ŸbË_ID
+> >
+ gæoÜ_geq_¡ack
+;
+
+867
+ g¡d
+::
+£t
+ <
+V¬ŸbË_ID
+ >
+æoÜ_v¬_£t
+;
+
+870 
+GEQ_I‹¿tÜ
+
+gi
+(
+c
+);
+ ggi
+; gi++)
+
+871 ià((*
+ ggi
+).
+g‘_cÛf
+(
+v
+) != 0) {
+
+872
+boÞ
+
+is_·¹_of_bound
+ =
+Œue
+;
+
+873
+GEQ_HªdË
+
+ gh2
+;
+
+874 
+CÚ¡r_V¬s_I‹r
+
+cvi
+(*
+gi
+,
+Œue
+);
+ gcvi
+; cvi++)
+
+875 ià(!
+fšdFloÜIÃqu®™y
+(
+b
+,
+cvi
+.
+cu¼_v¬
+(),
+h2
+,
+v
+)) {
+
+876
+ ghas_uÄesÞved_bound
+ =
+Œue
+;
+
+877
+ gis_·¹_of_bound
+ =
+çl£
+;
+
+880 ià(!
+ gis_·¹_of_bound
+)
+
+883
+GEQ_HªdË
+
+ gh
+ =
+f_roÙ
+->
+add_GEQ
+();
+
+884 
+CÚ¡r_V¬s_I‹r
+
+cvi
+(*
+gi
+);
+ gcvi
+; cvi++) {
+
+885
+V¬ŸbË_ID
+
+ gv2
+ =
+cvi
+.
+cu¼_v¬
+();
+
+886 
+ gv2
+->
+kšd
+()) {
+
+887 
+ gIÅut_V¬
+: {
+
+888 
+pos
+ =
+v2
+->
+g‘_pos™iÚ
+();
+
+889
+ gh
+.
+upd©e_cÛf
+(
+bounds
+.
+£t_v¬
+(
+pos
+),
+cvi
+.
+cu¼_cÛf
+());
+
+892 
+ gExi¡s_V¬
+:
+
+893 
+Wždÿrd_V¬
+: {
+
+894
+¡d
+::
+m­
+<
+V¬ŸbË_ID
+,
+ gV¬ŸbË_ID
+>::
+™”©Ü
+
+p
+ =
+
+895
+exi¡s_m­pšg
+.
+fšd
+(
+v2
+);
+
+896
+V¬ŸbË_ID
+
+ ge
+;
+
+897 ià(
+ gp
+ =ð
+exi¡s_m­pšg
+.
+’d
+()) {
+
+898
+e
+ =
+->
+deþ¬e
+();
+
+899
+ gexi¡s_m­pšg
+[
+v2
+] =
+e
+;
+
+901
+ ge
+ = (*
+p
+).
+£cÚd
+;
+
+902
+ gh
+.
+upd©e_cÛf
+(
+e
+,
+cvi
+.
+cu¼_cÛf
+());
+
+904 ià(
+ gæoÜ_v¬_£t
+.
+fšd
+(
+v2
+è=ð
+æoÜ_v¬_£t
+.
+’d
+()) {
+
+905
+fšdFloÜIÃqu®™y
+(
+b
+,
+v2
+,
+h2
+,
+v
+);
+
+906
+ gæoÜ_geq_¡ack
+.
+push
+(
+¡d
+::
+make_·œ
+(
+h2
+,
+v2
+));
+
+907
+ gæoÜ_v¬_£t
+.
+š£¹
+(
+v2
+);
+
+911 
+ gGlob®_V¬
+: {
+
+912
+Glob®_V¬_ID
+
+g
+ =
+v2
+->
+g‘_glob®_v¬
+();
+
+913
+V¬ŸbË_ID
+
+ gv3
+;
+
+914 ià(
+ gg
+->
+ªy
+() == 0)
+
+915
+v3
+ =
+bounds
+.
+g‘_loÿl
+(
+g
+);
+
+917
+ gv3
+ =
+bounds
+.
+g‘_loÿl
+(
+g
+,
+v2
+->
+funùiÚ_of
+());
+
+918
+ gh
+.
+upd©e_cÛf
+(
+v3
+,
+cvi
+.
+cu¼_cÛf
+());
+
+922
+as£¹
+(0);
+
+925
+ gh
+.
+upd©e_cÚ¡
+((*
+gi
+).
+g‘_cÚ¡
+());
+
+929 !
+ gæoÜ_geq_¡ack
+.
+em±y
+()) {
+
+930
+ g¡d
+::
+·œ
+ <
+GEQ_HªdË
+,
+ gV¬ŸbË_ID
+ >
+ gp
+ =
+æoÜ_geq_¡ack
+.
+tÝ
+();
+
+931
+ gæoÜ_geq_¡ack
+.
+pÝ
+();
+
+933
+GEQ_HªdË
+
+ gh1
+ =
+f_roÙ
+->
+add_GEQ
+();
+
+934
+GEQ_HªdË
+
+ gh2
+ =
+f_roÙ
+->
+add_GEQ
+();
+
+935 
+CÚ¡r_V¬s_I‹r
+
+cvi
+(
+p
+.
+fœ¡
+);
+ gcvi
+; cvi++) {
+
+936
+V¬ŸbË_ID
+
+ gv2
+ = (*
+cvi
+).
+v¬
+;
+
+937 
+ gv2
+->
+kšd
+()) {
+
+938 
+ gIÅut_V¬
+: {
+
+939 
+pos
+ =
+v2
+->
+g‘_pos™iÚ
+();
+
+940
+ gh1
+.
+upd©e_cÛf
+(
+bounds
+.
+šput_v¬
+(
+pos
+),
+cvi
+.
+cu¼_cÛf
+());
+
+941
+ gh2
+.
+upd©e_cÛf
+(
+bounds
+.
+šput_v¬
+(
+pos
+), -
+cvi
+.
+cu¼_cÛf
+());
+
+944 
+ gExi¡s_V¬
+:
+
+945 
+Wždÿrd_V¬
+: {
+
+946
+¡d
+::
+m­
+<
+V¬ŸbË_ID
+,
+ gV¬ŸbË_ID
+>::
+™”©Ü
+
+p2
+ =
+
+947
+exi¡s_m­pšg
+.
+fšd
+(
+v2
+);
+
+948
+V¬ŸbË_ID
+
+ ge
+;
+
+949 ià(
+ gp2
+ =ð
+exi¡s_m­pšg
+.
+’d
+()) {
+
+950
+e
+ =
+->
+deþ¬e
+();
+
+951
+ gexi¡s_m­pšg
+[
+v2
+] =
+e
+;
+
+953
+ ge
+ = (*
+p2
+).
+£cÚd
+;
+
+954
+ gh1
+.
+upd©e_cÛf
+(
+e
+,
+cvi
+.
+cu¼_cÛf
+());
+
+955
+ gh2
+.
+upd©e_cÛf
+(
+e
+, -
+cvi
+.
+cu¼_cÛf
+());
+
+957 ià(
+ gæoÜ_v¬_£t
+.
+fšd
+(
+v2
+è=ð
+æoÜ_v¬_£t
+.
+’d
+()) {
+
+958
+GEQ_HªdË
+
+h3
+;
+
+959
+fšdFloÜIÃqu®™y
+(
+b
+,
+v2
+,
+h3
+,
+v
+);
+
+960
+ gæoÜ_geq_¡ack
+.
+push
+(
+¡d
+::
+make_·œ
+(
+h3
+,
+v2
+));
+
+961
+ gæoÜ_v¬_£t
+.
+š£¹
+(
+v2
+);
+
+965 
+ gGlob®_V¬
+: {
+
+966
+Glob®_V¬_ID
+
+g
+ =
+v2
+->
+g‘_glob®_v¬
+();
+
+967
+V¬ŸbË_ID
+
+ gv3
+;
+
+968 ià(
+ gg
+->
+ªy
+() == 0)
+
+969
+v3
+ =
+bounds
+.
+g‘_loÿl
+(
+g
+);
+
+971
+ gv3
+ =
+bounds
+.
+g‘_loÿl
+(
+g
+,
+v2
+->
+funùiÚ_of
+());
+
+972
+ gh1
+.
+upd©e_cÛf
+(
+v3
+,
+cvi
+.
+cu¼_cÛf
+());
+
+973
+ gh2
+.
+upd©e_cÛf
+(
+v3
+, -
+cvi
+.
+cu¼_cÛf
+());
+
+977
+as£¹
+(0);
+
+980
+ gh1
+.
+upd©e_cÚ¡
+(
+p
+.
+fœ¡
+.
+g‘_cÚ¡
+());
+
+981
+ gh2
+.
+upd©e_cÚ¡
+(-
+p
+.
+fœ¡
+.
+g‘_cÚ¡
+());
+
+982
+ gh2
+.
+upd©e_cÚ¡
+(-
+p
+.
+fœ¡
+.
+g‘_cÛf
+Õ.
+£cÚd
+) - 1);
+
+985 ià(
+ ghas_uÄesÞved_bound
+) {
+
+986
+ gb
+ =
+Aµroxim©e
+(
+b
+);
+
+987
+ gb
+.
+sim¶ify
+();
+
+988
+ gc
+ =
+b
+.
+sšgË_cÚjunù
+();
+
+990 
+GEQ_I‹¿tÜ
+
+gi
+(
+c
+);
+ ggi
+; gi++)
+
+991 ià((*
+ ggi
+).
+g‘_cÛf
+(
+v
+) != 0)
+
+992
+f_roÙ
+->
+add_GEQ
+(*
+gi
+);
+
+996
+R–©iÚ
+
+ gthe_gcs
+ =
+g»©e¡_commÚ_¡•
+(
+´ojeùed_nIS
+[
+Ëv–
+],
+isAùive
+,
+
+997
+Ëv–
+,
+known
+);
+
+998
+ gbounds
+ =
+IÁ”£ùiÚ
+(
+bounds
+,
+cÝy
+(
+the_gcs
+));
+
+999
+ gbounds
+.
+sim¶ify
+();
+
+1000
+ gbounds
+.
+cÝy_Çmes
+(
+huÎ
+);
+
+1001
+ gbounds
+.
+£tup_Çmes
+();
+
+1005 ià(
+ gÃedLoÝ
+) {
+
+1006
+ ggu¬d
+ =
+Gi¡
+(
+cÝy
+(
+huÎ
+), cÝy(
+bounds
+));
+
+1007
+ ggu¬d
+ =
+Projeù
+(
+gu¬d
+, gu¬d.
+£t_v¬
+(
+Ëv–
+));
+
+1008
+ ggu¬d
+ =
+Gi¡
+(
+gu¬d
+,
+cÝy
+(
+known
+));
+
+1009
+ ggu¬d
+.
+sim¶ify
+();
+
+1014
+ ggu¬d
+ =
+R–©iÚ
+::
+True
+(
+huÎ
+.
+n_£t
+());
+
+1016
+ ggu¬d
+.
+cÝy_Çmes
+(
+huÎ
+);
+
+1017
+ ggu¬d
+.
+£tup_Çmes
+();
+
+1020
+R–©iÚ
+
+ g’fÜûd
+ =
+IÁ”£ùiÚ
+(
+cÝy
+(
+bounds
+), cÝy(
+gu¬d
+));
+
+1021
+ g’fÜûd
+.
+sim¶ify
+();
+
+1022
+R–©iÚ
+
+ gÃw_known
+ =
+IÁ”£ùiÚ
+(
+cÝy
+(
+known
+), cÝy(
+’fÜûd
+));
+
+1023
+ gÃw_known
+.
+sim¶ify
+();
+
+1024
+R–©iÚ
+
+ gÃw_»¡riùiÚs
+ =
+IÁ”£ùiÚ
+(
+cÝy
+(
+»¡riùiÚs
+),
+
+1025
+cÝy
+(
+’fÜûd
+));
+
+1026
+ gÃw_»¡riùiÚs
+.
+sim¶ify
+();
+
+1027
+ gbody
+ =
+body
+->
+»compu‹
+(
+Ãw_known
+,
+Ãw_»¡riùiÚs
+);
+
+1028 
+ gthis
+;
+
+1031
+R–©iÚ
+
+ gCG_loÝ
+::
+hoi¡Gu¬d
+() {
+
+1032
+R–©iÚ
+
+r
+ =
+body
+->
+hoi¡Gu¬d
+();
+
+1033 ià(!
+ gr
+.
+is_obvious_utÞogy
+()) {
+
+1035
+boÞ
+
+ g­³¬
+ =
+çl£
+;
+
+1036 
+DNF_I‹¿tÜ
+
+di
+(
+r
+.
+qu”y_DNF
+());
+ gdi
+; di++) {
+
+1037 
+GEQ_I‹¿tÜ
+
+gi
+((*
+di
+)->
+GEQs
+());
+ ggi
+; gi++)
+
+1038 ià((*
+ ggi
+).
+g‘_cÛf
+(
+r
+.
+£t_v¬
+(
+Ëv–
+)) != 0) {
+
+1039
+­³¬
+ =
+Œue
+;
+
+1042 ià(
+ g­³¬
+)
+
+1045 
+EQ_I‹¿tÜ
+
+ei
+((*
+di
+)->
+EQs
+());
+ gei
+;ƒi++)
+
+1046 ià((*
+ gei
+).
+g‘_cÛf
+(
+r
+.
+£t_v¬
+(
+Ëv–
+)) != 0) {
+
+1047
+­³¬
+ =
+Œue
+;
+
+1050 ià(
+ g­³¬
+)
+
+1054 ià(!
+ g­³¬
+) {
+
+1055
+ gbody
+->
+»moveGu¬d
+();
+
+1056
+ ggu¬d
+ =
+IÁ”£ùiÚ
+(
+gu¬d
+,
+r
+);
+
+1062 ià(
+ gÃedLoÝ
+)
+
+1063 
+ gR–©iÚ
+::
+True
+(
+bounds
+.
+n_£t
+());
+
+1065 
+ ggu¬d
+;
+
+ @CG_roseBuilder.cc
+
+15 
+ ~<¡ack
+>
+
+16 
+ ~<code_g’/CG_ro£Bužd”.h
+>
+
+17 
+ ~<¡ršg
+>
+
+19 
+ gœ_”rÜ
+:
+public
+
+¡d
+::
+ruÁime_”rÜ
+ {
+
+20
+œ_”rÜ
+(cÚ¡
+¡d
+::
+¡ršg
+ &
+msg
+) :
+
+21
+¡d
+::
+ruÁime_”rÜ
+(
+msg
+) {
+
+25
+usšg
+
+Çme¥aû
+
+ gSageBužd”
+;
+
+26
+usšg
+
+Çme¥aû
+
+ gSageIÁ”çû
+;
+
+27
+usšg
+
+Çme¥aû
+
+ gOmpSuµÜt
+;
+
+29
+Çme¥aû
+
+ gomega
+ {
+
+34 *
+ gk_ocg_comm’t
+;
+
+52
+ gCG_ro£Bužd”
+::
+CG_ro£Bužd”
+(
+SgGlob®
+*
+glob®
+, SgGlob®*
+fœ¡ScÝe
+,
+
+53
+SgSymbÞTabË
+*
+symb
+, SgSymbÞTabË*
+symb2
+,
+SgNode
+*
+roÙ
+) :
+
+54
+glob®_
+(
+glob®
+),
+glob®_scÝe
+(
+fœ¡ScÝe
+),
+symb_
+(
+symb
+),
+symb2_
+(
+
+55
+symb2
+),
+roÙ_
+(
+roÙ
+) {
+
+58
+ gCG_ro£Bužd”
+::~
+CG_ro£Bužd”
+() {
+
+64
+CG_ouutR•r
+*
+CG_ro£Bužd”
+::
+C»©ePÏûHÞd”
+(, CG_ouutR•¸*
+¡mt
+,
+
+65
+Tu¶e
+<
+CG_ouutR•r
+*> &
+funcLi¡
+, Tu¶e<
+¡d
+::
+¡ršg
+> &
+loÝ_v¬s
+) const {
+
+67
+SgS‹m’tPŒLi¡
+*
+li¡
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+ *>(
+¡mt
+)->
+li¡_
+;
+
+68
+SgNode
+ *
+ gŠl
+;
+
+69
+SgS‹m’t
+*
+ g¡©em’t
+;
+
+70 ià(
+ gli¡
+ !ð
+NULL
+) {
+
+73
+d–‘e
+
+¡mt
+;
+
+74 
+ gi
+ = 1; i <ð
+funcLi¡
+.
+size
+(); i++) {
+
+76 ià((
+ gfuncLi¡
+[
+i
+] =ð
+NULL
+è&& (˜<
+funcLi¡
+.
+size
+()))
+
+78 ià((
+ gfuncLi¡
+[
+i
+] =ð
+NULL
+è&& (˜=ð
+funcLi¡
+.
+size
+()))
+
+81
+CG_ro£R•r
+ *
+ g»´
+ =
+¡©ic_ÿ¡
+<CG_ro£R•r*>(
+funcLi¡
+[
+i
+]);
+
+82
+SgEx´essiÚ
+*
+ gÝ
+ =
+»´
+->
+Ý_
+;
+
+84 
+ gSgS‹m’tPŒLi¡
+::
+™”©Ü
+
+™
+ = (*
+li¡
+).
+begš
+();
+
+85
+ g™
+ !ð(*
+li¡
+).
+’d
+(); it++) {
+
+86
+ g¡©em’t
+ = (*
+™
+);
+
+87
+ gŠl
+ =
+isSgNode
+(
+¡©em’t
+);
+
+91 
+ gj
+;
+
+92 
+ gnÙ_š_symb_
+;
+
+94
+ gnÙ_š_symb_
+ = 0;
+
+96
+SgV¬ŸbËSymbÞ
+ *
+ gvs
+ =
+symb_
+->
+fšd_v¬ŸbË
+(
+
+97
+SgName
+(
+loÝ_v¬s
+[
+i
+].
+c_¡r
+()));
+
+99 ià(
+ gvs
+ =ð
+NULL
+) {
+
+101
+nÙ_š_symb_
+ = 1;
+
+103
+ gvs
+ =
+symb2_
+->
+fšd_v¬ŸbË
+(
+SgName
+(
+loÝ_v¬s
+[
+i
+].
+c_¡r
+()));
+
+105 ià(
+ gvs
+ !ð
+NULL
+) {
+
+109
+¡d
+::
+veùÜ
+<
+SgV¬RefExp
+ *>
+¬¿y
+ =
+sub¡™u‹
+(
+Šl
+,
+
+110 (cÚ¡
+SgV¬ŸbËSymbÞ
+*è
+vs
+,
+,
+roÙ_
+);
+
+111 
+ g¡d
+::
+veùÜ
+<
+SgV¬RefExp
+ *>::
+™”©Ü
+
+™
+ =
+
+112
+¬¿y
+.
+begš
+();
+ g™
+ !ð¬¿y.
+’d
+(); it++) {
+
+115 ià(
+isSgV¬RefExp
+(
+)) {
+
+116 ià(
+¡rcmp
+(
+
+117
+isSgV¬RefExp
+(
+)->
+g‘_symbÞ
+()->
+g‘_Çme
+().
+g‘SŒšg
+().
+c_¡r
+(),
+
+118
+vs
+->
+g‘_Çme
+().
+g‘SŒšg
+().
+c_¡r
+())) {
+
+120 (*
+ g™
+)->
+£t_symbÞ
+(
+
+121
+isSgV¬RefExp
+(
+)->
+g‘_symbÞ
+());
+
+127 } ià(
+isSgEx´essiÚ
+(
+)) {
+
+129 ià(
+isSgBš¬yOp
+((*
+™
+)->
+g‘_·»Á
+()))
+
+130
+isSgBš¬yOp
+((*
+™
+)->
+g‘_·»Á
+())->
+»¶aû_ex´essiÚ
+(
+
+131 *
+™
+,
+);
+
+143
+d–‘e
+
+ g»´
+;
+
+144
+ gfuncLi¡
+[
+i
+] =
+NULL
+;
+
+146 ià(
+ gfuncLi¡
+[
+i
+] !ð
+NULL
+)
+
+147
+throw
+
+œ_”rÜ
+("not freed…roperly");
+
+151 
+Ãw
+
+CG_ro£R•r
+(
+li¡
+);
+
+154
+ gŠl
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+ *>(
+¡mt
+)->
+Šl_
+;
+
+157 ià(
+ gŠl
+ =ð
+NULL
+)
+
+158
+throw
+
+œ_”rÜ
+("both†ist‡ndnl‡re‚ull!!");
+
+160
+d–‘e
+
+ g¡mt
+;
+
+161 
+ gj
+;
+
+162 
+ gnÙ_š_symb_
+;
+
+163 
+ gi
+ = 1; i <ð
+funcLi¡
+.
+size
+(); i++) {
+
+164
+ gnÙ_š_symb_
+ = 0;
+
+166 ià((
+ gfuncLi¡
+[
+i
+] =ð
+NULL
+è&& (˜<
+funcLi¡
+.
+size
+()))
+
+168 ià((
+ gfuncLi¡
+[
+i
+] =ð
+NULL
+è&& (˜=ð
+funcLi¡
+.
+size
+()))
+
+171
+CG_ro£R•r
+ *
+ g»´
+ =
+¡©ic_ÿ¡
+<CG_ro£R•r*>(
+funcLi¡
+[
+i
+]);
+
+172
+SgEx´essiÚ
+*
+ gÝ
+ =
+»´
+->
+Ý_
+;
+
+173
+d–‘e
+
+ g»´
+;
+
+174
+ gfuncLi¡
+[
+i
+] =
+NULL
+;
+
+176
+SgV¬ŸbËSymbÞ
+ *
+ gvs
+ =
+symb_
+->
+fšd_v¬ŸbË
+(
+
+177
+SgName
+(
+loÝ_v¬s
+[
+i
+].
+c_¡r
+()));
+
+179 ià(
+ gvs
+ =ð
+NULL
+) {
+
+181
+nÙ_š_symb_
+ = 1;
+
+183
+ gvs
+ =
+symb2_
+->
+fšd_v¬ŸbË
+(
+SgName
+(
+loÝ_v¬s
+[
+i
+].
+c_¡r
+()));
+
+185 ià(
+ gvs
+ !ð
+NULL
+) {
+
+188
+¡d
+::
+veùÜ
+<
+SgV¬RefExp
+ *>
+¬¿y
+ =
+sub¡™u‹
+(
+Šl
+,
+vs
+,
+,
+
+189
+roÙ_
+);
+
+191 ià(
+ gnÙ_š_symb_
+ &&
+isSgV¬RefExp
+(
+)) {
+
+192 ià(
+¡rcmp
+(
+
+193
+isSgV¬RefExp
+(
+)->
+g‘_symbÞ
+()->
+g‘_Çme
+().
+g‘SŒšg
+().
+c_¡r
+(),
+
+194
+vs
+->
+g‘_Çme
+().
+g‘SŒšg
+().
+c_¡r
+())) {
+
+205 
+ g¡d
+::
+veùÜ
+<
+SgV¬RefExp
+ *>::
+™”©Ü
+
+j
+ =
+¬¿y
+.
+begš
+();
+
+206
+ gj
+ !ð
+¬¿y
+.
+’d
+(); j++) {
+
+209 ià(
+isSgV¬RefExp
+(
+)) {
+
+210 ià(
+¡rcmp
+(
+
+211
+isSgV¬RefExp
+(
+)->
+g‘_symbÞ
+()->
+g‘_Çme
+().
+g‘SŒšg
+().
+c_¡r
+(),
+
+212
+vs
+->
+g‘_Çme
+().
+g‘SŒšg
+().
+c_¡r
+())) {
+
+213 (*
+ gj
+)->
+£t_symbÞ
+(
+isSgV¬RefExp
+(
+)->
+g‘_symbÞ
+());
+
+218 } ià(
+isSgEx´essiÚ
+(
+)) {
+
+220 ià(
+isSgBš¬yOp
+((*
+j
+)->
+g‘_·»Á
+()))
+
+221
+isSgBš¬yOp
+((*
+j
+)->
+g‘_·»Á
+())->
+»¶aû_ex´essiÚ
+(
+
+222 *
+j
+,
+);
+
+297 
+Ãw
+
+CG_ro£R•r
+(
+Šl
+);
+
+305
+CG_ouutR•r
+*
+ gCG_ro£Bužd”
+::
+C»©eAssignm’t
+(, CG_ouutR•¸*
+lhs
+,
+
+306
+CG_ouutR•r
+ *
+rhs
+) const {
+
+307 ià(
+ glhs
+ =ð
+NULL
+ ||
+rhs
+ == NULL) {
+
+308
+årštf
+(
+¡d”r
+, "Code generation: Missing†hs or„hs\n");
+
+309 
+ gNULL
+;
+
+312
+SgEx´essiÚ
+*
+ g¤c
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+*>(
+rhs
+)->
+Ý_
+;
+
+313
+SgEx´essiÚ
+*
+ gd¡
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+*>(
+lhs
+)->
+Ý_
+;
+
+315
+SgEx´S‹m’t
+*
+ gšs
+ =
+buždAssignS‹m’t
+(
+d¡
+,
+¤c
+);
+
+316
+ g¤c
+->
+£t_·»Á
+(
+šs
+);
+
+317
+ gd¡
+->
+£t_·»Á
+(
+šs
+);
+
+319
+SgS‹m’tPŒLi¡
+*
+ gÃw_li¡
+ =
+Ãw
+ SgStatementPtrList;
+
+321 (*
+ gÃw_li¡
+).
+push_back
+(
+isSgS‹m’t
+(
+šs
+));
+
+323
+d–‘e
+
+ glhs
+;
+
+324
+d–‘e
+
+ grhs
+;
+
+326 
+Ãw
+
+CG_ro£R•r
+(
+Ãw_li¡
+);
+
+333
+CG_ouutR•r
+*
+ gCG_ro£Bužd”
+::
+C»©eInvoke
+(cÚ¡
+¡d
+::
+¡ršg
+ &
+âame
+,
+
+334
+Tu¶e
+<
+CG_ouutR•r
+*> &
+li¡
+) const {
+
+336 ià(
+ gâame
+ =ð
+¡d
+::
+¡ršg
+("max"è||
+âame
+ == std::string("min")) {
+
+337 ià(
+li¡
+.
+size
+() == 0) {
+
+338 
+NULL
+;
+
+339 } ià(
+ gli¡
+.
+size
+() == 1) {
+
+340 
+li¡
+[1];
+
+342 
+ gϡ
+ =
+li¡
+.
+size
+();
+
+343
+SgEx´essiÚ
+*
+ gÝ2
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+*>(
+li¡
+[
+Ï¡
+])->
+Ý_
+;
+
+344
+d–‘e
+
+ gli¡
+[
+Ï¡
+];
+
+345
+ gli¡
+.
+d–‘e_Ï¡
+();
+
+346
+CG_ro£R•r
+ *
+ g»´
+ =
+¡©ic_ÿ¡
+<CG_ro£R•r*>(
+C»©eInvoke
+(
+âame
+,
+
+347
+li¡
+));
+
+348
+SgEx´essiÚ
+*
+ gÝ1
+ =
+»´
+->
+Ý_
+;
+
+350
+SgEx´essiÚ
+ *
+ gšs
+;
+
+351
+SgEx´Li¡Exp
+*
+ g¬g_li¡
+ =
+buždEx´Li¡Exp
+();
+
+352
+­³ndEx´essiÚ
+(
+¬g_li¡
+,
+Ý1
+);
+
+353
+­³ndEx´essiÚ
+(
+¬g_li¡
+,
+Ý2
+);
+
+354
+SgV¬RefExp
+*
+ gÝaque_v¬
+;
+
+356 ià(
+ gâame
+ =ð
+¡d
+::
+¡ršg
+("max")) {
+
+357
+Ýaque_v¬
+ =
+buždO·queV¬RefExp
+("__ro£_gt",
+glob®_
+);
+
+358
+ gšs
+ =
+isSgEx´essiÚ
+(
+
+359
+buždFunùiÚC®lExp
+(
+Ýaque_v¬
+,
+¬g_li¡
+));
+
+362
+ gÝaque_v¬
+ =
+buždO·queV¬RefExp
+("__ro£_É",
+glob®_
+);
+
+363
+ gšs
+ =
+isSgEx´essiÚ
+(
+
+364
+buždFunùiÚC®lExp
+(
+Ýaque_v¬
+,
+¬g_li¡
+));
+
+366
+ g»´
+->
+ gÝ_
+ =
+šs
+;
+
+368 
+ g»´
+;
+
+371
+årštf
+(
+¡d”r
+,
+
+373 
+ gNULL
+;
+
+381
+CG_ouutR•r
+*
+ gCG_ro£Bužd”
+::
+C»©eComm’t
+(,
+
+382 cÚ¡
+¡d
+::
+¡ršg
+ &
+comm’tText
+) const {
+
+383 ià(
+comm’tText
+ =ð
+¡d
+::
+¡ršg
+("")) {
+
+384 
+NULL
+;
+
+387
+SgLoÿ‹dNode
+ *
+ gŠl
+ =
+Ãw
+ SgLocatedNode();
+
+388
+buždComm’t
+(
+Šl
+, "//omega_comm’t: " +
+comm’tText
+);
+
+390 
+Ãw
+
+CG_ro£R•r
+(
+isSgNode
+(
+Šl
+));
+
+397
+CG_ouutR•r
+*
+ gCG_ro£Bužd”
+::
+C»©eIf
+(, CG_ouutR•¸*
+gu¬dLi¡
+,
+
+398
+CG_ouutR•r
+ *
+Œue_¡mtLi¡
+, CG_ouutR•¸*
+çl£_¡mtLi¡
+) const {
+
+404 ià(
+ gŒue_¡mtLi¡
+ =ð
+NULL
+ &&
+çl£_¡mtLi¡
+ == NULL) {
+
+405
+d–‘e
+
+gu¬dLi¡
+;
+
+406 
+ gNULL
+;
+
+407 } ià(
+ ggu¬dLi¡
+ =ð
+NULL
+) {
+
+408 
+StmtLi¡Aµ’d
+(
+Œue_¡mtLi¡
+,
+çl£_¡mtLi¡
+);
+
+411
+SgEx´essiÚ
+*
+ gh—d”
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+*>(
+gu¬dLi¡
+)->
+Ý_
+;
+
+413
+SgS‹m’tPŒLi¡
+ *
+ gth’_·¹1
+, *
+ g–£_·¹1
+;
+
+414
+SgS‹m’t
+*
+ gth’_·¹
+;
+
+415
+SgS‹m’t
+*
+ g–£_·¹
+;
+
+416
+SgBasicBlock
+*
+ gth’_·¹2
+;
+
+417
+SgBasicBlock
+*
+ g–£_·¹2
+;
+
+418 ià(
+ gŒue_¡mtLi¡
+ !ð
+NULL
+) {
+
+419
+th’_·¹1
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+*>(
+Œue_¡mtLi¡
+)->
+li¡_
+;
+
+420 ià(
+ gth’_·¹1
+ !ð
+NULL
+) {
+
+421
+th’_·¹
+ = *((*
+th’_·¹1
+).
+begš
+());
+
+423 ià((*
+ gth’_·¹1
+).
+size
+() > 1) {
+
+424
+ gth’_·¹2
+ =
+buždBasicBlock
+();
+
+425 
+ gSgS‹m’tPŒLi¡
+::
+™”©Ü
+
+™
+ = (*
+th’_·¹1
+).
+begš
+();
+
+426
+ g™
+ !ð(*
+th’_·¹1
+).
+’d
+(); it++) {
+
+427
+ gth’_·¹2
+->
+­³nd_¡©em’t
+(*
+™
+);
+
+430
+ gth’_·¹
+ =
+isSgS‹m’t
+(
+th’_·¹2
+);
+
+434
+ gth’_·¹
+ =
+isSgS‹m’t
+(
+
+435
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+*>(
+Œue_¡mtLi¡
+)->
+Šl_
+);
+
+437
+ gth’_·¹
+ =
+NULL
+;
+
+439 ià(
+ gçl£_¡mtLi¡
+ !ð
+NULL
+) {
+
+440
+–£_·¹1
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+*>(
+çl£_¡mtLi¡
+)->
+li¡_
+;
+
+441 ià(
+ g–£_·¹1
+ !ð
+NULL
+) {
+
+442
+–£_·¹
+ = *((*
+–£_·¹1
+).
+begš
+());
+
+443 ià((*
+ g–£_·¹1
+).
+size
+() > 1) {
+
+444
+ g–£_·¹2
+ =
+buždBasicBlock
+();
+
+445 
+ gSgS‹m’tPŒLi¡
+::
+™”©Ü
+
+™2
+ = (*
+–£_·¹1
+).
+begš
+();
+
+446
+ g™2
+ !ð(*
+–£_·¹1
+).
+’d
+(); it2++) {
+
+447
+ g–£_·¹2
+->
+­³nd_¡©em’t
+(*
+™2
+);
+
+450
+ g–£_·¹
+ =
+isSgS‹m’t
+(
+–£_·¹2
+);
+
+454
+ g–£_·¹
+ =
+isSgS‹m’t
+(
+
+455
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+*>(
+çl£_¡mtLi¡
+)->
+Šl_
+);
+
+457
+ g–£_·¹
+ =
+NULL
+;
+
+460
+SgIfStmt
+*
+ gti
+ =
+buždIfStmt
+(
+h—d”
+,
+isSgS‹m’t
+(
+th’_·¹
+),
+
+461
+isSgS‹m’t
+(
+–£_·¹
+));
+
+468
+d–‘e
+
+ ggu¬dLi¡
+;
+
+469
+d–‘e
+
+ gŒue_¡mtLi¡
+;
+
+470
+d–‘e
+
+ gçl£_¡mtLi¡
+;
+
+472 
+Ãw
+
+CG_ro£R•r
+(
+isSgNode
+(
+ti
+));
+
+479
+CG_ouutR•r
+*
+ gCG_ro£Bužd”
+::
+C»©eInduùive
+(CG_ouutR•¸*
+šdex
+,
+
+480
+CG_ouutR•r
+ *
+low”
+, CG_ouutR•¸*
+uµ”
+, CG_ouutR•¸*
+¡•
+) const {
+
+482 ià(
+ gšdex
+ =ð
+NULL
+ ||
+low”
+ =ðNULL ||
+uµ”
+ == NULL) {
+
+483
+årštf
+(
+¡d”r
+,
+
+485 
+ gNULL
+;
+
+488 ià(
+ g¡•
+ =ð
+NULL
+)
+
+489
+¡•
+ =
+Ãw
+
+CG_ro£R•r
+(
+isSgEx´essiÚ
+(
+buždIÁV®
+(1)));
+
+491
+SgV¬RefExp
+ *
+ gšdex_sym
+ =
+isSgV¬RefExp
+(
+
+492
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+*>(
+šdex
+)->
+Ý_
+);
+
+493
+SgEx´essiÚ
+*
+ glow”_bound
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+*>(
+low”
+)->
+Ý_
+;
+
+494
+SgEx´essiÚ
+*
+ guµ”_bound
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+*>(
+uµ”
+)->
+Ý_
+;
+
+495
+SgEx´essiÚ
+*
+ g¡•_size
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+*>(
+¡•
+)->
+Ý_
+;
+
+501
+SgS‹m’t
+*
+ gfÜ_š™_¡mt
+ =
+buždAssignS‹m’t
+(
+šdex_sym
+,
+low”_bound
+);
+
+502
+SgLessOrEqu®Op
+*
+ gcÚd
+ =
+buždLessOrEqu®Op
+(
+šdex_sym
+,
+uµ”_bound
+);
+
+503
+SgEx´S‹m’t
+*
+ g‹¡
+ =
+buždEx´S‹m’t
+(
+cÚd
+);
+
+504
+SgPlusAssignOp
+*
+ gšüem’t
+ =
+buždPlusAssignOp
+(
+šdex_sym
+,
+¡•_size
+);
+
+505
+SgFÜS‹m’t
+ *
+ gfÜ_¡mt
+ =
+buždFÜS‹m’t
+(
+fÜ_š™_¡mt
+,
+
+506
+isSgS‹m’t
+(
+‹¡
+),
+šüem’t
+,
+NULL
+);
+
+508
+d–‘e
+
+ gšdex
+;
+
+509
+d–‘e
+
+ glow”
+;
+
+510
+d–‘e
+
+ guµ”
+;
+
+511
+d–‘e
+
+ g¡•
+;
+
+513 
+Ãw
+
+CG_ro£R•r
+(
+isSgNode
+(
+fÜ_¡mt
+));
+
+520
+CG_ouutR•r
+*
+ gCG_ro£Bužd”
+::
+C»©eA‰ribu‹
+(CG_ouutR•¸*
+cÚŒÞ
+,
+
+521 cÚ¡
+¡d
+::
+¡ršg
+ &
+comm’tText
+) const {
+
+523
+SgNode
+ *
+Šl
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+*>(
+cÚŒÞ
+)->
+Šl_
+;
+
+525
+ gŠl
+->
+£tA‰ribu‹
+("omega_comm’t",
+Ãw
+
+A¡TextA‰ribu‹
+(
+comm’tText
+));
+
+527 
+ g¡©ic_ÿ¡
+<
+ gCG_ro£R•r
+*>(
+ gcÚŒÞ
+);
+
+534
+CG_ouutR•r
+*
+ gCG_ro£Bužd”
+::
+C»©eLoÝ
+(, CG_ouutR•¸*
+cÚŒÞ
+,
+
+535
+CG_ouutR•r
+ *
+¡mtLi¡
+) const {
+
+536 ià(
+ g¡mtLi¡
+ =ð
+NULL
+) {
+
+537
+d–‘e
+
+cÚŒÞ
+;
+
+538 
+ gNULL
+;
+
+539 } ià(
+ gcÚŒÞ
+ =ð
+NULL
+) {
+
+540
+årštf
+(
+¡d”r
+, "Code generation:‚o inductive forhis†oop\n");
+
+541 
+ g¡mtLi¡
+;
+
+544
+SgNode
+ *
+ gŠl
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+*>(
+cÚŒÞ
+)->
+Šl_
+;
+
+545
+SgFÜS‹m’t
+ *
+ gtf
+ =
+isSgFÜS‹m’t
+(
+Šl
+);
+
+547
+SgS‹m’tPŒLi¡
+ *
+ gbody
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+*>(
+¡mtLi¡
+)->
+li¡_
+;
+
+549 ià(
+ gbody
+ !ð
+NULL
+) {
+
+550 ià(!((*
+body
+).
+em±y
+())) {
+
+551 ià((*
+body
+).
+size
+() == 1) {
+
+553
+tf
+->
+£t_loÝ_body
+(*((*
+body
+).
+begš
+()));
+
+554 (*((*
+ gbody
+).
+begš
+()))->
+£t_·»Á
+(
+tf
+);
+
+564
+SgBasicBlock
+*
+ gbb
+ =
+buždBasicBlock
+();
+
+565
+ gbb
+->
+£t_·»Á
+(
+tf
+);
+
+566 
+ gSgS‹m’tPŒLi¡
+::
+™”©Ü
+
+™
+ = (*
+body
+).
+begš
+();
+
+567
+ g™
+ !ð(*
+body
+).
+’d
+(); it++) {
+
+568
+ gbb
+->
+­³nd_¡©em’t
+(*
+™
+);
+
+569 (*
+ g™
+)->
+£t_·»Á
+(
+bb
+);
+
+571
+ gtf
+->
+£t_loÝ_body
+(
+bb
+);
+
+576
+SgNode
+*
+ gŠl2
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+*>(
+¡mtLi¡
+)->
+Šl_
+;
+
+578 ià(
+ gŠl2
+ !ð
+NULL
+) {
+
+579
+tf
+->
+£t_loÝ_body
+(
+isSgS‹m’t
+(
+Šl2
+));
+
+580
+ gŠl2
+->
+£t_·»Á
+(
+tf
+);
+
+584
+d–‘e
+
+ g¡mtLi¡
+;
+
+586 
+ gcÚŒÞ
+;
+
+592
+CG_ouutR•r
+*
+ gCG_ro£Bužd”
+::
+C»©eIÁ
+(
+_i
+) const {
+
+593 
+Ãw
+
+CG_ro£R•r
+(
+isSgEx´essiÚ
+(
+buždIÁV®
+(
+_i
+)));
+
+596
+CG_ouutR•r
+*
+ gCG_ro£Bužd”
+::
+C»©eId’t
+(cÚ¡
+¡d
+::
+¡ršg
+ &
+_s
+) const {
+
+598
+SgV¬ŸbËSymbÞ
+ *
+vs
+ =
+symb_
+->
+fšd_v¬ŸbË
+(
+SgName
+(
+_s
+.
+c_¡r
+()));
+
+599
+SgV¬ŸbËSymbÞ
+ *
+ gvs2
+ =
+symb2_
+->
+fšd_v¬ŸbË
+(
+SgName
+(
+_s
+.
+c_¡r
+()));
+
+601 ià(
+ gvs
+ =ð
+NULL
+ &&
+vs2
+ == NULL) {
+
+603
+SgV¬ŸbËDeþ¬©iÚ
+*
+deâ
+ =
+buždV¬ŸbËDeþ¬©iÚ
+(
+
+604
+SgName
+(
+_s
+.
+c_¡r
+()),
+buždIÁTy³
+());
+
+605
+ gSgIn™ŸlizedNamePŒLi¡
+&
+ gv¬ŸbËs
+ =
+deâ
+->
+g‘_v¬ŸbËs
+();
+
+606
+ gSgIn™ŸlizedNamePŒLi¡
+::
+cÚ¡_™”©Ü
+
+i
+ =
+v¬ŸbËs
+.
+begš
+();
+
+607
+SgIn™ŸlizedName
+*
+ gš™ŸlizedName
+ = *
+i
+;
+
+608
+ gvs
+ =
+Ãw
+
+SgV¬ŸbËSymbÞ
+(
+š™ŸlizedName
+);
+
+609
+´•’dS‹m’t
+(
+deâ
+,
+isSgScÝeS‹m’t
+(
+roÙ_
+));
+
+611
+ gvs
+->
+£t_·»Á
+(
+symb2_
+);
+
+612
+ gsymb2_
+->
+š£¹
+(
+SgName
+(
+_s
+.
+c_¡r
+()),
+vs
+);
+
+613 
+Ãw
+
+CG_ro£R•r
+(
+isSgEx´essiÚ
+(
+buždV¬RefExp
+(
+vs
+)));
+
+619 ià(!
+isSgEx´essiÚ
+(
+buždV¬RefExp
+(
+SgName
+(
+_s
+.
+c_¡r
+()))))
+
+620
+throw
+
+œ_”rÜ
+("error in Create ident!!");
+
+621 ià(
+ gvs2
+ !ð
+NULL
+)
+
+622 
+Ãw
+
+CG_ro£R•r
+(
+isSgEx´essiÚ
+(
+buždV¬RefExp
+(
+vs2
+)));
+
+624 
+Ãw
+
+CG_ro£R•r
+(
+isSgEx´essiÚ
+(
+buždV¬RefExp
+(
+vs
+)));
+
+631
+CG_ouutR•r
+*
+ gCG_ro£Bužd”
+::
+C»©ePlus
+(CG_ouutR•¸*
+lÝ
+,
+
+632
+CG_ouutR•r
+ *
+rÝ
+) const {
+
+633 ià(
+ grÝ
+ =ð
+NULL
+) {
+
+634 
+lÝ
+;
+
+635 } ià(
+ glÝ
+ =ð
+NULL
+) {
+
+636 
+rÝ
+;
+
+639
+SgEx´essiÚ
+*
+ gÝ1
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+*>(
+lÝ
+)->
+Ý_
+;
+
+640
+SgEx´essiÚ
+*
+ gÝ2
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+*>(
+rÝ
+)->
+Ý_
+;
+
+642
+SgAddOp
+ *
+ gšs
+ =
+buždAddOp
+(
+Ý1
+,
+Ý2
+);
+
+643
+ gÝ1
+->
+£t_·»Á
+(
+šs
+);
+
+644
+ gÝ2
+->
+£t_·»Á
+(
+šs
+);
+
+645
+d–‘e
+
+ glÝ
+;
+
+646
+d–‘e
+
+ grÝ
+;
+
+648 
+Ãw
+
+CG_ro£R•r
+(
+isSgEx´essiÚ
+(
+šs
+));
+
+652
+CG_ouutR•r
+*
+ gCG_ro£Bužd”
+::
+C»©eMšus
+(CG_ouutR•¸*
+lÝ
+,
+
+653
+CG_ouutR•r
+ *
+rÝ
+) const {
+
+654 ià(
+ grÝ
+ =ð
+NULL
+) {
+
+655 
+lÝ
+;
+
+656 } ià(
+ glÝ
+ =ð
+NULL
+) {
+
+657
+SgEx´essiÚ
+ *
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+*>(
+rÝ
+)->
+Ý_
+;
+
+658
+SgMšusOp
+ *
+ gšs
+ =
+buždMšusOp
+(
+);
+
+660
+d–‘e
+
+ grÝ
+;
+
+662 
+Ãw
+
+CG_ro£R•r
+(
+isSgEx´essiÚ
+(
+šs
+));
+
+664
+SgEx´essiÚ
+*
+ gÝ1
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+*>(
+lÝ
+)->
+Ý_
+;
+
+665
+SgEx´essiÚ
+*
+ gÝ2
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+*>(
+rÝ
+)->
+Ý_
+;
+
+667
+SgSubŒaùOp
+ *
+ gšs
+ =
+buždSubŒaùOp
+(
+Ý1
+,
+Ý2
+);
+
+668
+ gÝ1
+->
+£t_·»Á
+(
+šs
+);
+
+669
+ gÝ2
+->
+£t_·»Á
+(
+šs
+);
+
+670
+d–‘e
+
+ glÝ
+;
+
+671
+d–‘e
+
+ grÝ
+;
+
+672 
+Ãw
+
+CG_ro£R•r
+(
+isSgEx´essiÚ
+(
+šs
+));
+
+677
+CG_ouutR•r
+*
+ gCG_ro£Bužd”
+::
+C»©eTimes
+(CG_ouutR•¸*
+lÝ
+,
+
+678
+CG_ouutR•r
+ *
+rÝ
+) const {
+
+679 ià(
+ grÝ
+ =ð
+NULL
+ ||
+lÝ
+ == NULL) {
+
+680 ià(
+rÝ
+ !ð
+NULL
+) {
+
+681
+rÝ
+->
+þ—r
+();
+
+682
+d–‘e
+
+ grÝ
+;
+
+684 ià(
+ glÝ
+ !ð
+NULL
+) {
+
+685
+lÝ
+->
+þ—r
+();
+
+686
+d–‘e
+
+ glÝ
+;
+
+688 
+ gNULL
+;
+
+691
+SgEx´essiÚ
+*
+ gÝ1
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+*>(
+lÝ
+)->
+Ý_
+;
+
+692
+SgEx´essiÚ
+*
+ gÝ2
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+*>(
+rÝ
+)->
+Ý_
+;
+
+694
+SgMuÉlyOp
+ *
+ gšs
+ =
+buždMuÉlyOp
+(
+Ý1
+,
+Ý2
+);
+
+695
+ gÝ1
+->
+£t_·»Á
+(
+šs
+);
+
+696
+ gÝ2
+->
+£t_·»Á
+(
+šs
+);
+
+697
+d–‘e
+
+ glÝ
+;
+
+698
+d–‘e
+
+ grÝ
+;
+
+700 
+Ãw
+
+CG_ro£R•r
+(
+isSgEx´essiÚ
+(
+šs
+));
+
+704
+CG_ouutR•r
+*
+ gCG_ro£Bužd”
+::
+C»©eIÁeg”Divide
+(CG_ouutR•¸*
+lÝ
+,
+
+705
+CG_ouutR•r
+ *
+rÝ
+) const {
+
+706 ià(
+ grÝ
+ =ð
+NULL
+) {
+
+707
+årštf
+(
+¡d”r
+, "Code generation: divide by NULL\n");
+
+708 
+ gNULL
+;
+
+709 } ià(
+ glÝ
+ =ð
+NULL
+) {
+
+710
+d–‘e
+
+rÝ
+;
+
+711 
+ gNULL
+;
+
+715
+SgEx´essiÚ
+*
+ gÝ1
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+*>(
+lÝ
+)->
+Ý_
+;
+
+716
+SgEx´essiÚ
+*
+ gÝ2
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+*>(
+rÝ
+)->
+Ý_
+;
+
+719
+SgDivideOp
+ *
+ gšs
+ =
+buždDivideOp
+(
+Ý1
+,
+Ý2
+);
+
+721
+d–‘e
+
+ glÝ
+;
+
+722
+d–‘e
+
+ grÝ
+;
+
+724 
+Ãw
+
+CG_ro£R•r
+(
+isSgEx´essiÚ
+(
+šs
+));
+
+728
+CG_ouutR•r
+*
+ gCG_ro£Bužd”
+::
+C»©eIÁeg”Mod
+(CG_ouutR•¸*
+lÝ
+,
+
+729
+CG_ouutR•r
+ *
+rÝ
+) const {
+
+730 ià(
+ grÝ
+ =ð
+NULL
+ ||
+lÝ
+ == NULL) {
+
+731 
+NULL
+;
+
+734
+SgEx´essiÚ
+*
+ gÝ1
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+*>(
+lÝ
+)->
+Ý_
+;
+
+735
+SgEx´essiÚ
+*
+ gÝ2
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+*>(
+rÝ
+)->
+Ý_
+;
+
+738
+SgModOp
+ *
+ gšs
+ =
+buždModOp
+(
+Ý1
+,
+Ý2
+);
+
+740
+d–‘e
+
+ glÝ
+;
+
+741
+d–‘e
+
+ grÝ
+;
+
+743 
+Ãw
+
+CG_ro£R•r
+(
+isSgEx´essiÚ
+(
+šs
+));
+
+750
+CG_ouutR•r
+*
+ gCG_ro£Bužd”
+::
+C»©eAnd
+(CG_ouutR•¸*
+lÝ
+,
+
+751
+CG_ouutR•r
+ *
+rÝ
+) const {
+
+752 ià(
+ grÝ
+ =ð
+NULL
+ ||
+lÝ
+ == NULL) {
+
+753 
+NULL
+;
+
+756
+SgEx´essiÚ
+*
+ gÝ1
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+*>(
+lÝ
+)->
+Ý_
+;
+
+757
+SgEx´essiÚ
+*
+ gÝ2
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+*>(
+rÝ
+)->
+Ý_
+;
+
+759
+SgAndOp
+ *
+ gšs
+ =
+buždAndOp
+(
+Ý1
+,
+Ý2
+);
+
+761
+d–‘e
+
+ glÝ
+;
+
+762
+d–‘e
+
+ grÝ
+;
+
+764 
+Ãw
+
+CG_ro£R•r
+(
+isSgEx´essiÚ
+(
+šs
+));
+
+771
+CG_ouutR•r
+*
+ gCG_ro£Bužd”
+::
+C»©eGE
+(CG_ouutR•¸*
+lÝ
+,
+
+772
+CG_ouutR•r
+ *
+rÝ
+) const {
+
+773 
+C»©eLE
+(
+rÝ
+,
+lÝ
+);
+
+776
+CG_ouutR•r
+*
+ gCG_ro£Bužd”
+::
+C»©eLE
+(CG_ouutR•¸*
+lÝ
+,
+
+777
+CG_ouutR•r
+ *
+rÝ
+) const {
+
+778 ià(
+ grÝ
+ =ð
+NULL
+ ||
+lÝ
+ == NULL) {
+
+779 
+NULL
+;
+
+782
+SgEx´essiÚ
+*
+ gÝ1
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+*>(
+lÝ
+)->
+Ý_
+;
+
+783
+SgEx´essiÚ
+*
+ gÝ2
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+*>(
+rÝ
+)->
+Ý_
+;
+
+785
+SgLessOrEqu®Op
+ *
+ gšs
+ =
+buždLessOrEqu®Op
+(
+Ý1
+,
+Ý2
+);
+
+787
+d–‘e
+
+ glÝ
+;
+
+788
+d–‘e
+
+ grÝ
+;
+
+790 
+Ãw
+
+CG_ro£R•r
+(
+isSgEx´essiÚ
+(
+šs
+));
+
+794
+CG_ouutR•r
+*
+ gCG_ro£Bužd”
+::
+C»©eEQ
+(CG_ouutR•¸*
+lÝ
+,
+
+795
+CG_ouutR•r
+ *
+rÝ
+) const {
+
+796 ià(
+ grÝ
+ =ð
+NULL
+ ||
+lÝ
+ == NULL) {
+
+797 
+NULL
+;
+
+800
+SgEx´essiÚ
+*
+ gÝ1
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+*>(
+lÝ
+)->
+Ý_
+;
+
+801
+SgEx´essiÚ
+*
+ gÝ2
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+*>(
+rÝ
+)->
+Ý_
+;
+
+803
+SgEqu®™yOp
+ *
+ gšs
+ =
+buždEqu®™yOp
+(
+Ý1
+,
+Ý2
+);
+
+805
+d–‘e
+
+ glÝ
+;
+
+806
+d–‘e
+
+ grÝ
+;
+
+808 
+Ãw
+
+CG_ro£R•r
+(
+isSgEx´essiÚ
+(
+šs
+));
+
+815
+CG_ouutR•r
+*
+ gCG_ro£Bužd”
+::
+C»©eStmtLi¡
+(CG_ouutR•¸*
+sšgËtÚ
+) const {
+
+819 ià(
+sšgËtÚ
+ =ð
+NULL
+) {
+
+820 
+Ãw
+
+CG_ro£R•r
+Òew
+SgS‹m’tPŒLi¡
+);
+
+823
+SgS‹m’tPŒLi¡
+ *
+ gŠl
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+ *>(
+sšgËtÚ
+)->
+li¡_
+;
+
+824
+SgNode
+*
+ gsgn
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+ *>(
+sšgËtÚ
+)->
+Šl_
+;
+
+826 ià(
+ gŠl
+ =ð
+NULL
+)
+
+827
+Šl
+ =
+Ãw
+
+SgS‹m’tPŒLi¡
+;
+
+829 ià(
+ gsgn
+ =ð
+NULL
+) {
+
+830
+SgEx´essiÚ
+*
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+ *>(
+sšgËtÚ
+)->
+Ý_
+;
+
+832 ià(
+ gÝ
+ !ð
+NULL
+)
+
+833 (*
+Šl
+).
+push_back
+(
+
+834
+buždEx´S‹m’t
+(
+
+835
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+ *>(
+sšgËtÚ
+)->
+Ý_
+));
+
+838 (*
+ gŠl
+).
+push_back
+(
+isSgS‹m’t
+(
+sgn
+));
+
+840
+d–‘e
+
+ gsšgËtÚ
+;
+
+841 
+Ãw
+
+CG_ro£R•r
+(
+Šl
+);
+
+850
+CG_ouutR•r
+*
+ gCG_ro£Bužd”
+::
+StmtLi¡In£¹La¡
+(CG_ouutR•¸*
+li¡
+,
+
+851
+CG_ouutR•r
+ *
+node
+) const {
+
+852 
+StmtLi¡Aµ’d
+(
+li¡
+,
+node
+);
+
+855
+CG_ouutR•r
+*
+ gCG_ro£Bužd”
+::
+StmtLi¡Aµ’d
+(CG_ouutR•¸*
+li¡1
+,
+
+856
+CG_ouutR•r
+ *
+li¡2
+) const {
+
+858 ià(
+ gli¡2
+ =ð
+NULL
+) {
+
+859 
+li¡1
+;
+
+860 } ià(
+ gli¡1
+ =ð
+NULL
+) {
+
+861 
+li¡2
+;
+
+868
+SgS‹m’tPŒLi¡
+*
+ gÃw_li¡
+;
+
+870
+SgS‹m’tPŒLi¡
+*
+ gŠl1
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+ *>(
+li¡1
+)->
+li¡_
+;
+
+871
+SgS‹m’tPŒLi¡
+*
+ gŠl2
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+ *>(
+li¡2
+)->
+li¡_
+;
+
+872
+SgNode
+*
+ gÚe
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+ *>(
+li¡1
+)->
+Šl_
+;
+
+873
+SgNode
+*
+ gtwo
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+ *>(
+li¡2
+)->
+Šl_
+;
+
+875
+SgEx´essiÚ
+*
+ gexp1
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+ *>(
+li¡1
+)->
+Ý_
+;
+
+876
+SgEx´essiÚ
+*
+ gexp2
+ =
+¡©ic_ÿ¡
+<
+CG_ro£R•r
+ *>(
+li¡2
+)->
+Ý_
+;
+
+878 ià(
+ gexp1
+ ||
+ gexp2
+)
+
+879
+throw
+
+œ_”rÜ
+("error in stmtlistappend!!");
+
+895 ià((
+ gŠl1
+ =ð
+NULL
+è&& (
+Šl2
+ == NULL)) {
+
+897 ià((
+Úe
+ !ð
+NULL
+è&& (
+two
+ != NULL)) {
+
+899
+Ãw_li¡
+ =
+Ãw
+
+SgS‹m’tPŒLi¡
+;
+
+901 (*
+ gÃw_li¡
+).
+push_back
+(
+isSgS‹m’t
+(
+Úe
+));
+
+902 (*
+ gÃw_li¡
+).
+push_back
+(
+isSgS‹m’t
+(
+two
+));
+
+904
+CG_ro£R•r
+*
+ gÃw_»p
+ =
+Ãw
+ CG_ro£R•r(
+Ãw_li¡
+);
+
+906 
+ g¡©ic_ÿ¡
+<
+ gCG_ouutR•r
+ *>(
+ gÃw_»p
+);
+
+908 } ià((
+ gÚe
+ !ð
+NULL
+è&& (
+two
+ == NULL)) {
+
+910 
+¡©ic_ÿ¡
+<
+CG_ouutR•r
+ *>(
+Ãw
+
+CG_ro£R•r
+(
+Úe
+));
+
+912 } ià((
+ gtwo
+ !ð
+NULL
+è&& (
+Úe
+ == NULL)) {
+
+913 
+¡©ic_ÿ¡
+<
+CG_ouutR•r
+ *>(
+Ãw
+
+CG_ro£R•r
+(
+two
+));
+
+918 ià((
+ gŠl2
+ !ð
+NULL
+è&& (
+Šl1
+ == NULL)) {
+
+925 ià(
+Úe
+ =ð
+NULL
+)
+
+926 
+li¡2
+;
+
+929 (*
+ gŠl2
+).
+push_back
+(
+isSgS‹m’t
+(
+Úe
+));
+
+931 
+ g¡©ic_ÿ¡
+<
+ gCG_ouutR•r
+ *>(
+Ãw
+
+CG_ro£R•r
+(
+Šl2
+));
+
+933 } ià((
+ gŠl1
+ !ð
+NULL
+è&& (
+Šl2
+ == NULL)) {
+
+934 ià(
+two
+ =ð
+NULL
+)
+
+935 
+li¡1
+;
+
+938 (*
+ gŠl1
+).
+push_back
+(
+isSgS‹m’t
+(
+two
+));
+
+940 
+ g¡©ic_ÿ¡
+<
+ gCG_ouutR•r
+ *>(
+Ãw
+
+CG_ro£R•r
+(
+Šl1
+));
+
+944 } ià((
+ gŠl1
+ !ð
+NULL
+è&& (
+Šl2
+ != NULL)) {
+
+946 
+SgS‹m’tPŒLi¡
+::
+™”©Ü
+
+™
+ = (*
+Šl2
+).
+begš
+();
+
+947
+ g™
+ !ð(*
+Šl2
+).
+’d
+(); it++) {
+
+948 (*
+ gŠl1
+).
+push_back
+(*
+™
+);
+
+954 
+ g¡©ic_ÿ¡
+<
+ gCG_ouutR•r
+ *>(
+Ãw
+
+CG_ro£R•r
+(
+Šl1
+));
+
+1002
+CG_ouutR•r
+*
+ gCG_ro£Bužd”
+::
+C»©eDim3
+(cÚ¡ *
+v¬Name
+, 
+¬g1
+,
+
+1003 
+¬g2
+) const {
+
+1005
+SgName
+
+ty³_Çme
+("dim3");
+
+1006
+SgCÏssSymbÞ
+ *
+ gty³_symbÞ
+ =
+glob®_scÝe
+->
+lookup_þass_symbÞ
+(
+ty³_Çme
+);
+
+1007
+SgCÏssDeþ¬©iÚ
+ *
+ gty³_deþ
+ =
+isSgCÏssDeþ¬©iÚ
+(
+
+1008
+ty³_symbÞ
+->
+g‘_deþ¬©iÚ
+());
+
+1012
+SgFunùiÚSymbÞ
+ *
+ gùÜ_symbÞ
+ =
+glob®_scÝe
+->
+lookup_funùiÚ_symbÞ
+(
+
+1013
+SgName
+("dim3"));
+
+1015
+SgEx´Li¡Exp
+ *
+ gùÜ_¬gs
+ =
+buždEx´Li¡Exp
+(
+buždIÁV®
+(
+¬g1
+),
+
+1016
+buždIÁV®
+(
+¬g2
+));
+
+1018
+SgFunùiÚC®lExp
+ *
+ gdim3_func_ÿÎ
+ =
+buždFunùiÚC®lExp
+(
+
+1019
+buždFunùiÚRefExp
+(
+ùÜ_symbÞ
+->
+g‘_deþ¬©iÚ
+()),
+ùÜ_¬gs
+);
+
+1021 
+ gjošed_¡r
+[20];
+
+1023
+¡rýy
+(
+jošed_¡r
+, "dim3 ");
+
+1024
+¡rÿt
+(
+jošed_¡r
+,
+v¬Name
+);
+
+1026
+SgEx´S‹m’t
+*
+ gdeþ
+ =
+buždAssignS‹m’t
+(
+
+1027
+buždO·queV¬RefExp
+(
+jošed_¡r
+,
+isSgScÝeS‹m’t
+(
+roÙ_
+)),
+
+1028
+dim3_func_ÿÎ
+);
+
+1030
+SgS‹m’tPŒLi¡
+ *
+ gŠl2
+ =
+Ãw
+ SgStatementPtrList;
+
+1033 (*
+ gŠl2
+).
+push_back
+(
+deþ
+);
+
+1034 
+Ãw
+
+CG_ro£R•r
+(
+Šl2
+);
+
+1037
+CG_ouutR•r
+*
+ gCG_ro£Bužd”
+::
+C»©eDim3
+(cÚ¡ *
+v¬Name
+, 
+¬g1
+,
+
+1038 
+¬g2
+, 
+¬g3
+) const {
+
+1040
+SgName
+
+ty³_Çme
+("dim3");
+
+1041
+SgCÏssSymbÞ
+ *
+ gty³_symbÞ
+ =
+glob®_scÝe
+->
+lookup_þass_symbÞ
+(
+ty³_Çme
+);
+
+1042
+SgCÏssDeþ¬©iÚ
+ *
+ gty³_deþ
+ =
+isSgCÏssDeþ¬©iÚ
+(
+
+1043
+ty³_symbÞ
+->
+g‘_deþ¬©iÚ
+());
+
+1047
+SgFunùiÚSymbÞ
+ *
+ gùÜ_symbÞ
+ =
+glob®_scÝe
+->
+lookup_funùiÚ_symbÞ
+(
+
+1048
+SgName
+("dim3"));
+
+1050
+SgEx´Li¡Exp
+ *
+ gùÜ_¬gs
+ =
+buždEx´Li¡Exp
+(
+buždIÁV®
+(
+¬g1
+),
+
+1051
+buždIÁV®
+(
+¬g2
+), buždIÁV®(
+¬g3
+));
+
+1053
+SgFunùiÚC®lExp
+ *
+ gdim3_func_ÿÎ
+ =
+buždFunùiÚC®lExp
+(
+
+1054
+buždFunùiÚRefExp
+(
+ùÜ_symbÞ
+->
+g‘_deþ¬©iÚ
+()),
+ùÜ_¬gs
+);
+
+1056 
+ gjošed_¡r
+[20];
+
+1058
+¡rýy
+(
+jošed_¡r
+, "dim3 ");
+
+1059
+¡rÿt
+(
+jošed_¡r
+,
+v¬Name
+);
+
+1061
+SgEx´S‹m’t
+*
+ gdeþ
+ =
+buždAssignS‹m’t
+(
+
+1062
+buždO·queV¬RefExp
+(
+jošed_¡r
+,
+isSgScÝeS‹m’t
+(
+roÙ_
+)),
+
+1063
+dim3_func_ÿÎ
+);
+
+1065
+SgS‹m’tPŒLi¡
+ *
+ gŠl2
+ =
+Ãw
+ SgStatementPtrList;
+
+1068 (*
+ gŠl2
+).
+push_back
+(
+deþ
+);
+
+1069 
+Ãw
+
+CG_ro£R•r
+(
+Šl2
+);
+
+1144
+ g¡d
+::
+veùÜ
+<
+SgV¬RefExp
+ *>
+sub¡™u‹
+(
+SgNode
+ *
+, cÚ¡
+SgV¬ŸbËSymbÞ
+ *
+sym
+,
+
+1145
+SgEx´essiÚ
+*
+ex´
+,
+SgNode
+*
+roÙ
+) {
+
+1147
+SgS‹m’t
+*
+ g¡mt
+;
+
+1148
+SgEx´essiÚ
+*
+ gÝ
+;
+
+1149
+ g¡d
+::
+veùÜ
+<
+SgV¬RefExp
+ *>
+¬¿ys
+;
+
+1151 ià(
+ gš
+ !ð
+NULL
+) {
+
+1152 ià(
+¡mt
+ =
+isSgS‹m’t
+(
+)) {
+
+1153 ià(
+isSgBasicBlock
+(
+¡mt
+)) {
+
+1154
+SgS‹m’tPŒLi¡
+&
+¡mts
+ =
+
+1155
+isSgBasicBlock
+(
+¡mt
+)->
+g‘_¡©em’ts
+();
+
+1156 
+ gi
+ = 0; i <
+ g¡mts
+.
+size
+(); i++) {
+
+1157
+ g¡mts
+[
+i
+]->
+£t_·»Á
+(
+¡mt
+);
+
+1158
+ g¡d
+::
+veùÜ
+<
+SgV¬RefExp
+ *>
+a
+ =
+sub¡™u‹
+(
+
+1159
+isSgNode
+(
+¡mts
+[
+i
+]),
+sym
+,
+ex´
+,
+roÙ
+);
+
+1160
+ g¡d
+::
+cÝy
+(
+a
+.
+begš
+(),‡.
+’d
+(),
+back_š£¹”
+(
+¬¿ys
+));
+
+1162 } ià(
+isSgFÜS‹m’t
+(
+¡mt
+)) {
+
+1163
+SgFÜS‹m’t
+ *
+ gŠf
+ =
+isSgFÜS‹m’t
+(
+¡mt
+);
+
+1164
+ gŠf
+->
+g‘_fÜ_š™_¡mt
+()->
+£t_·»Á
+(
+Šf
+);
+
+1165
+ gŠf
+->
+g‘_‹¡
+()->
+£t_·»Á
+(
+Šf
+);
+
+1166
+ gŠf
+->
+g‘_šüem’t
+()->
+£t_·»Á
+(
+Šf
+);
+
+1167
+ gŠf
+->
+g‘_loÝ_body
+()->
+£t_·»Á
+(
+Šf
+);
+
+1168
+ g¡d
+::
+veùÜ
+<
+SgV¬RefExp
+ *>
+a
+ =
+sub¡™u‹
+(
+
+1169
+isSgNode
+(
+Šf
+->
+g‘_fÜ_š™_¡mt
+()),
+sym
+,
+ex´
+,
+roÙ
+);
+
+1170
+ g¡d
+::
+cÝy
+(
+a
+.
+begš
+(),‡.
+’d
+(),
+back_š£¹”
+(
+¬¿ys
+));
+
+1171
+ g¡d
+::
+veùÜ
+<
+SgV¬RefExp
+ *>
+a1
+ =
+sub¡™u‹
+(
+
+1172
+isSgNode
+(
+Šf
+->
+g‘_‹¡
+()),
+sym
+,
+ex´
+,
+roÙ
+);
+
+1173
+ g¡d
+::
+cÝy
+(
+a1
+.
+begš
+(),‡1.
+’d
+(),
+back_š£¹”
+(
+¬¿ys
+));
+
+1174
+ g¡d
+::
+veùÜ
+<
+SgV¬RefExp
+ *>
+a2
+ =
+sub¡™u‹
+(
+
+1175
+isSgNode
+(
+Šf
+->
+g‘_šüem’t
+()),
+sym
+,
+ex´
+,
+roÙ
+);
+
+1176
+ g¡d
+::
+cÝy
+(
+a2
+.
+begš
+(),‡2.
+’d
+(),
+back_š£¹”
+(
+¬¿ys
+));
+
+1177
+ g¡d
+::
+veùÜ
+<
+SgV¬RefExp
+ *>
+a3
+ =
+sub¡™u‹
+(
+
+1178
+isSgNode
+(
+Šf
+->
+g‘_loÝ_body
+()),
+sym
+,
+ex´
+,
+roÙ
+);
+
+1179
+ g¡d
+::
+cÝy
+(
+a3
+.
+begš
+(),‡3.
+’d
+(),
+back_š£¹”
+(
+¬¿ys
+));
+
+1188 ià(
+isSgV¬ŸbËDeþ¬©iÚ
+(
+¡mt
+)) {
+
+1189 ià(
+SgEx´essiÚ
+ *
+ gš™
+ =
+
+1190
+isSgV¬ŸbËDeþ¬©iÚ
+(
+¡mt
+)->
+g‘_v¬ŸbËs
+().
+äÚt
+()->
+g‘_š™Ÿliz”
+()) {
+
+1191 ià(
+isSgAssignIn™Ÿliz”
+(
+š™
+)) {
+
+1192
+¡d
+::
+veùÜ
+<
+SgV¬RefExp
+ *>
+a
+ =
+sub¡™u‹
+(
+
+1193
+isSgAssignIn™Ÿliz”
+(
+š™
+)->
+g‘_Ý”ªd
+(),
+sym
+,
+
+1194
+ex´
+,
+roÙ
+);
+
+1195
+ g¡d
+::
+cÝy
+(
+a
+.
+begš
+(),‡.
+’d
+(),
+back_š£¹”
+(
+¬¿ys
+));
+
+1198 } ià(
+isSgIfStmt
+(
+¡mt
+)) {
+
+1199
+SgIfStmt
+*
+ gŠi
+ =
+isSgIfStmt
+(
+¡mt
+);
+
+1200
+ gŠi
+->
+g‘_cÚd™iÚ®
+()->
+£t_·»Á
+(
+Ši
+);
+
+1201
+ gŠi
+->
+g‘_Œue_body
+()->
+£t_·»Á
+(
+Ši
+);
+
+1202
+ gŠi
+->
+g‘_çl£_body
+()->
+£t_·»Á
+(
+Ši
+);
+
+1203
+ g¡d
+::
+veùÜ
+<
+SgV¬RefExp
+ *>
+a
+ =
+sub¡™u‹
+(
+
+1204
+isSgNode
+(
+Ši
+->
+g‘_cÚd™iÚ®
+()),
+sym
+,
+ex´
+,
+roÙ
+);
+
+1205
+ g¡d
+::
+cÝy
+(
+a
+.
+begš
+(),‡.
+’d
+(),
+back_š£¹”
+(
+¬¿ys
+));
+
+1206
+ g¡d
+::
+veùÜ
+<
+SgV¬RefExp
+ *>
+a1
+ =
+sub¡™u‹
+(
+
+1207
+isSgNode
+(
+Ši
+->
+g‘_Œue_body
+()),
+sym
+,
+ex´
+,
+roÙ
+);
+
+1208
+ g¡d
+::
+cÝy
+(
+a1
+.
+begš
+(),‡1.
+’d
+(),
+back_š£¹”
+(
+¬¿ys
+));
+
+1209
+ g¡d
+::
+veùÜ
+<
+SgV¬RefExp
+ *>
+a2
+ =
+sub¡™u‹
+(
+
+1210
+isSgNode
+(
+Ši
+->
+g‘_çl£_body
+()),
+sym
+,
+ex´
+,
+roÙ
+);
+
+1211
+ g¡d
+::
+cÝy
+(
+a2
+.
+begš
+(),‡2.
+’d
+(),
+back_š£¹”
+(
+¬¿ys
+));
+
+1212 } ià(
+isSgEx´S‹m’t
+(
+¡mt
+)) {
+
+1213 (
+isSgEx´S‹m’t
+(
+¡mt
+)->
+g‘_ex´essiÚ
+())->
+£t_·»Á
+(
+
+1214
+isSgEx´S‹m’t
+(
+¡mt
+));
+
+1215
+ g¡d
+::
+veùÜ
+<
+SgV¬RefExp
+ *>
+a
+ =
+sub¡™u‹
+(
+
+1216
+isSgNode
+(
+isSgEx´S‹m’t
+(
+¡mt
+)->
+g‘_ex´essiÚ
+()),
+
+1217
+sym
+,
+ex´
+,
+roÙ
+);
+
+1218
+ g¡d
+::
+cÝy
+(
+a
+.
+begš
+(),‡.
+’d
+(),
+back_š£¹”
+(
+¬¿ys
+));
+
+1222
+ gÝ
+ =
+isSgEx´essiÚ
+(
+);
+
+1224
+ g¡d
+::
+¡ršg
+
+y
+ =
+sym
+->
+g‘_Çme
+().
+g‘SŒšg
+();
+
+1226 ià(
+isSgBš¬yOp
+(
+)) {
+
+1228
+isSgBš¬yOp
+(
+)->
+g‘_lhs_Ý”ªd
+()->
+£t_·»Á
+(op);
+
+1229
+isSgBš¬yOp
+(
+)->
+g‘_rhs_Ý”ªd
+()->
+£t_·»Á
+(op);
+
+1231
+ g¡d
+::
+veùÜ
+<
+SgV¬RefExp
+ *>
+a
+ =
+sub¡™u‹
+(
+
+1232
+isSgBš¬yOp
+(
+)->
+g‘_lhs_Ý”ªd
+(),
+sym
+,
+ex´
+,
+roÙ
+);
+
+1233
+ g¡d
+::
+cÝy
+(
+a
+.
+begš
+(),‡.
+’d
+(),
+back_š£¹”
+(
+¬¿ys
+));
+
+1234
+ g¡d
+::
+veùÜ
+<
+SgV¬RefExp
+ *>
+a1
+ =
+sub¡™u‹
+(
+
+1235
+isSgBš¬yOp
+(
+)->
+g‘_rhs_Ý”ªd
+(),
+sym
+,
+ex´
+,
+roÙ
+);
+
+1236
+ g¡d
+::
+cÝy
+(
+a1
+.
+begš
+(),‡1.
+’d
+(),
+back_š£¹”
+(
+¬¿ys
+));
+
+1237 } ià(
+isSgUÇryOp
+(
+)) {
+
+1238
+isSgUÇryOp
+(
+)->
+g‘_Ý”ªd
+()->
+£t_·»Á
+(op);
+
+1239
+ g¡d
+::
+veùÜ
+<
+SgV¬RefExp
+ *>
+a
+ =
+sub¡™u‹
+(
+
+1240
+isSgUÇryOp
+(
+)->
+g‘_Ý”ªd
+(),
+sym
+,
+ex´
+,
+roÙ
+);
+
+1241
+ g¡d
+::
+cÝy
+(
+a
+.
+begš
+(),‡.
+’d
+(),
+back_š£¹”
+(
+¬¿ys
+));
+
+1242 } ià(
+isSgV¬RefExp
+(
+)) {
+
+1243
+ g¡d
+::
+¡ršg
+
+z
+ =
+
+1244
+isSgV¬RefExp
+(
+)->
+g‘_symbÞ
+()->
+g‘_Çme
+().
+g‘SŒšg
+();
+
+1245 ià(!
+¡rcmp
+(
+z
+.
+c_¡r
+(),
+y
+.c_str())) {
+
+1247
+ g¬¿ys
+.
+push_back
+(
+isSgV¬RefExp
+(
+));
+
+1273 
+ g¬¿ys
+;
+
+ @CG_roseRepr.cc
+
+14 
+ ~<code_g’/CG_ro£R•r.h
+>
+
+15 
+ ~<¡dio.h
+>
+
+16 
+ ~<¡ršg.h
+>
+
+17 
+ ~<c¡ršg
+>
+
+18
+Çme¥aû
+
+ gomega
+ {
+
+23
+ gCG_ro£R•r
+::
+CG_ro£R•r
+():
+Šl_
+(
+NULL
+),
+Ý_
+(NULL),
+li¡_
+(NULL){
+
+27
+ gCG_ro£R•r
+::
+CG_ro£R•r
+(
+SgNode
+ *
+Šl
+):
+Šl_
+ÑÆ),
+Ý_
+(
+NULL
+),
+li¡_
+(NULL) {
+
+30
+ gCG_ro£R•r
+::
+CG_ro£R•r
+(
+SgEx´essiÚ
+*
+):
+Šl_
+(
+NULL
+),
+Ý_
+(Ý),
+li¡_
+(NULL){
+
+32
+ gCG_ro£R•r
+::
+CG_ro£R•r
+(
+SgS‹m’tPŒLi¡
+*
+¡mŽi¡
+):
+Šl_
+(
+NULL
+),
+Ý_
+(NULL),
+li¡_
+(stmtlist){
+
+35
+ gCG_ro£R•r
+::~
+CG_ro£R•r
+() {
+
+40
+CG_ouutR•r
+*
+CG_ro£R•r
+::
+þÚe
+() {
+
+42 ifÐ
+Šl_
+ !ð
+NULL
+) {
+
+43
+SgT»eCÝy
+
+tc
+;
+
+44
+SgNode
+ *
+ gŠl
+ =
+Šl_
+->
+cÝy
+(
+tc
+);
+
+45
+ gŠl
+->
+£t_·»Á
+(
+Šl_
+->
+g‘_·»Á
+());
+
+46 
+Ãw
+
+CG_ro£R•r
+(
+Šl
+);
+
+48 if(
+ gÝ_
+ !ð
+NULL
+)
+
+50
+SgT»eCÝy
+
+tc1
+;
+
+51
+SgNode
+*
+ gÝ
+ =
+isSgNode
+(
+Ý_
+)->
+cÝy
+(
+tc1
+);
+
+53
+ gÝ
+->
+£t_·»Á
+(
+isSgNode
+(
+Ý_
+)->
+g‘_·»Á
+());
+
+54 
+Ãw
+
+CG_ro£R•r
+(
+isSgEx´essiÚ
+(
+));
+
+56 if(
+ gli¡_
+ !ð
+NULL
+)
+
+58
+SgS‹m’tPŒLi¡
+*
+li¡2
+ =
+Ãw
+ SgStatementPtrList;
+
+60 
+ gSgS‹m’tPŒLi¡
+::
+™”©Ü
+
+™
+ = (*
+li¡_
+).
+begš
+();
+ g™
+ !ð(*li¡_).
+’d
+(); it++){
+
+61
+SgT»eCÝy
+
+ gtc3
+;
+
+62
+SgNode
+ *
+ gŠl2
+ =
+isSgNode
+(*
+™
+)->
+cÝy
+(
+tc3
+);
+
+63
+ gŠl2
+->
+£t_·»Á
+(
+isSgNode
+(*
+™
+)->
+g‘_·»Á
+());
+
+65 (*
+ gli¡2
+).
+push_back
+(
+isSgS‹m’t
+(
+Šl2
+));
+
+67 
+Ãw
+
+CG_ro£R•r
+(
+li¡2
+);
+
+70 
+ gNULL
+;
+
+73 
+ gCG_ro£R•r
+::
+þ—r
+() {
+
+74 if(
+Šl_
+ !ð
+NULL
+) {
+
+75
+d–‘e
+
+Šl_
+;
+
+76
+ gŠl_
+ =
+NULL
+;
+
+80
+SgNode
+*
+ gCG_ro£R•r
+::
+G‘Code
+() const {
+
+81 
+Šl_
+;
+
+84
+SgS‹m’tPŒLi¡
+*
+ gCG_ro£R•r
+::
+G‘Li¡
+() const {
+
+85 
+li¡_
+;
+
+88
+SgEx´essiÚ
+*
+ gCG_ro£R•r
+::
+G‘Ex´essiÚ
+() const {
+
+89 
+Ý_
+;
+
+91 
+ gCG_ro£R•r
+::
+Dump
+() const {
+
+92
+SgNode
+*
+Šl
+ =
+Šl_
+;
+
+93
+SgEx´essiÚ
+*
+ gÝ
+ =
+Ý_
+ ;
+
+94 if(
+ gŠl
+ !ð
+NULL
+)
+
+95
+DumpFžeH–³r
+(
+Šl
+,
+¡dout
+);
+
+96 if(
+ gÝ
+ !ð
+NULL
+)
+
+97
+DumpFžeH–³r
+(
+isSgNode
+(
+),
+¡dout
+);
+
+101 
+ gCG_ro£R•r
+::
+DumpFžeH–³r
+(
+SgNode
+*
+node
+,
+FILE
+ *
+) const{
+
+102
+ g¡d
+::
+¡ršg
+
+x
+;
+
+103
+size_t
+
+ gnumb”OfSucûssÜs
+ =
+node
+->
+g‘_numb”OfT¿v”§lSucûssÜs
+();
+
+104 if(
+ gnumb”OfSucûssÜs
+ == 0){
+
+105
+x
+ =
+node
+->
+uŬ£ToSŒšg
+ ();
+
+106
+årštf
+(
+, "%s",
+x
+.
+c_¡r
+());
+
+109 
+size_t
+
+ gidx
+ = 0; idx <
+ gnumb”OfSucûssÜs
+; idx++)
+
+111
+SgNode
+ *
+ gchžd
+ =
+NULL
+;
+
+112
+ gchžd
+ =
+node
+->
+g‘_Œav”§lSucûssÜByIndex
+(
+idx
+);
+
+113
+DumpFžeH–³r
+(
+chžd
+,
+);
+
+119 
+ gCG_ro£R•r
+::
+DumpToFže
+(
+FILE
+ *
+) const {
+
+121
+SgNode
+*
+Šl
+ =
+Šl_
+;
+
+122
+SgEx´essiÚ
+*
+ gÝ
+ =
+Ý_
+ ;
+
+124 if(
+ gŠl
+!ð
+NULL
+){
+
+125
+¡d
+::
+¡ršg
+
+x
+ =
+Šl
+->
+uŬ£ToSŒšg
+();
+
+126
+årštf
+(
+, "%s",
+x
+.
+c_¡r
+());
+
+129 if(
+ gÝ
+ !ð
+NULL
+){
+
+130
+¡d
+::
+¡ršg
+
+x
+ =
+isSgNode
+(
+)->
+uŬ£ToSŒšg
+();
+
+131
+årštf
+(
+, "%s",
+x
+.
+c_¡r
+());
+
+ @CG_stringBuilder.cc
+
+17 
+ ~<code_g’/CG_¡ršgBužd”.h
+>
+
+18 
+ ~<code_g’/CG_¡ršgR•r.h
+>
+
+19 
+ ~<¡ršg
+>
+
+21
+Çme¥aû
+
+ gomega
+ {
+
+23 
+ g¡d
+::
+¡ršg
+
+Saãgu¬dSŒšg
+(cÚ¡
+¡d
+::¡ršg &
+s
+, 
+);
+
+29
+CG_ouutR•r
+*
+ gCG_¡ršgBužd”
+::
+C»©ePÏûHÞd”
+(
+šd’t
+,
+
+30
+CG_ouutR•r
+ *
+¡mt
+,
+Tu¶e
+<CG_ouutR•r*> &
+funcLi¡
+,
+
+31
+Tu¶e
+<
+¡d
+::
+¡ršg
+> &) const {
+
+32
+¡d
+::
+¡ršg
+
+li¡SŒ
+ = "";
+
+34 
+ gi
+ = 1; i <ð
+funcLi¡
+.
+size
+(); i++) {
+
+35 ià(
+ gfuncLi¡
+[
+i
+] =ð
+NULL
+)
+
+36
+li¡SŒ
+ += "N/A";
+
+38
+ gli¡SŒ
+ +ð
+G‘SŒšg
+(
+funcLi¡
+[
+i
+]);
+
+39 ià(
+ gi
+ <
+ gfuncLi¡
+.
+size
+())
+
+40
+ gli¡SŒ
+ += ",";
+
+43
+ g¡d
+::
+¡ršg
+
+¡mtName
+ =
+G‘SŒšg
+(
+¡mt
+);
+
+44
+ g¡d
+::
+¡ršg
+
+šd’tSŒ
+ =
+G‘Ind’tS·ûs
+(
+šd’t
+);
+
+46 
+Ãw
+
+CG_¡ršgR•r
+(
+šd’tSŒ
+ +
+¡mtName
+ + "(" +
+li¡SŒ
+ + ");\n");
+
+49
+CG_ouutR•r
+*
+ gCG_¡ršgBužd”
+::
+C»©eAssignm’t
+(
+šd’t
+,
+
+50
+CG_ouutR•r
+*
+lhs
+, CG_ouutR•r*
+rhs
+) const {
+
+51 ià(
+ glhs
+ =ð
+NULL
+ ||
+rhs
+ == NULL) {
+
+52
+årštf
+(
+¡d”r
+, "Code generation: missing†hs or„hs\n");
+
+53 
+ gNULL
+;
+
+56
+ g¡d
+::
+¡ršg
+
+lhsSŒ
+ =
+G‘SŒšg
+(
+lhs
+);
+
+57
+ g¡d
+::
+¡ršg
+
+rhsSŒ
+ =
+G‘SŒšg
+(
+rhs
+);
+
+59
+ g¡d
+::
+¡ršg
+
+šd’tSŒ
+ =
+G‘Ind’tS·ûs
+(
+šd’t
+);
+
+61 
+Ãw
+
+CG_¡ršgR•r
+(
+šd’tSŒ
+ +
+lhsSŒ
+ + "=" +
+rhsSŒ
+ + ";\n");
+
+64
+CG_ouutR•r
+*
+ gCG_¡ršgBužd”
+::
+C»©eInvoke
+(cÚ¡
+¡d
+::
+¡ršg
+ &
+âame
+,
+
+65
+Tu¶e
+<
+CG_ouutR•r
+*> &
+li¡
+) const {
+
+66
+ g¡d
+::
+¡ršg
+
+li¡SŒ
+ = "";
+
+68 
+ gi
+ = 1; i <ð
+li¡
+.
+size
+(); i++) {
+
+69
+ gli¡SŒ
+ +ð
+G‘SŒšg
+(
+li¡
+[
+i
+]);
+
+70 ià(
+ gi
+ <
+ gli¡
+.
+size
+())
+
+71
+ gli¡SŒ
+ += ",";
+
+74 
+Ãw
+
+CG_¡ršgR•r
+(
+âame
+ + "(" +
+li¡SŒ
+ + ")");
+
+77
+CG_ouutR•r
+*
+ gCG_¡ršgBužd”
+::
+C»©eComm’t
+(
+šd’t
+,
+
+78 cÚ¡
+¡d
+::
+¡ršg
+ &
+comm’tText
+) const {
+
+79 ià(
+comm’tText
+ =ð
+¡d
+::
+¡ršg
+("")) {
+
+80 
+NULL
+;
+
+83
+ g¡d
+::
+¡ršg
+
+šd’tSŒ
+ =
+G‘Ind’tS·ûs
+(
+šd’t
+);
+
+85 
+Ãw
+
+CG_¡ršgR•r
+(
+šd’tSŒ
+ + "// " +
+comm’tText
+ + "\n");
+
+88
+CG_ouutR•r
+*
+ gCG_¡ršgBužd”
+::
+C»©eA‰ribu‹
+(CG_ouutR•¸*
+cÚŒÞ
+,
+
+89 cÚ¡
+¡d
+::
+¡ršg
+ &
+comm’tText
+) const {
+
+90 ià(
+comm’tText
+ =ð
+¡d
+::
+¡ršg
+("")) {
+
+91 
+cÚŒÞ
+;
+
+94
+ g¡d
+::
+¡ršg
+
+cÚŒÞSŒšg
+ =
+G‘SŒšg
+(
+cÚŒÞ
+);
+
+96 
+Ãw
+
+CG_¡ršgR•r
+("// " +
+comm’tText
+ + "\n" +
+cÚŒÞSŒšg
+);
+
+100
+CG_ouutR•r
+*
+ gCG_¡ršgBužd”
+::
+C»©eIf
+(
+šd’t
+, CG_ouutR•r*
+gu¬dLi¡
+,
+
+101
+CG_ouutR•r
+*
+Œue_¡mtLi¡
+, CG_ouutR•r*
+çl£_¡mtLi¡
+) const {
+
+102 ià(
+ gŒue_¡mtLi¡
+ =ð
+NULL
+ &&
+çl£_¡mtLi¡
+ == NULL) {
+
+103
+d–‘e
+
+gu¬dLi¡
+;
+
+104 
+ gNULL
+;
+
+105 } ià(
+ ggu¬dLi¡
+ =ð
+NULL
+) {
+
+106 
+StmtLi¡Aµ’d
+(
+Œue_¡mtLi¡
+,
+çl£_¡mtLi¡
+);
+
+109
+ g¡d
+::
+¡ršg
+
+gu¬dLi¡SŒ
+ =
+G‘SŒšg
+(
+gu¬dLi¡
+);
+
+110
+ g¡d
+::
+¡ršg
+
+šd’tSŒ
+ =
+G‘Ind’tS·ûs
+(
+šd’t
+);
+
+111
+ g¡d
+::
+¡ršg
+
+s
+;
+
+112 ià(
+ gŒue_¡mtLi¡
+ !ð
+NULL
+ &&
+çl£_¡mtLi¡
+ == NULL) {
+
+113
+s
+ =
+šd’tSŒ
+ + "ià(" +
+gu¬dLi¡SŒ
+ + ") {\n"
+
+114 +
+G‘SŒšg
+(
+Œue_¡mtLi¡
+è+
+šd’tSŒ
+ + "}\n";
+
+115 } ià(
+ gŒue_¡mtLi¡
+ =ð
+NULL
+ &&
+çl£_¡mtLi¡
+ != NULL) {
+
+116
+s
+ =
+šd’tSŒ
+ + "ià!(" +
+gu¬dLi¡SŒ
+ + ") {\n"
+
+117 +
+G‘SŒšg
+(
+çl£_¡mtLi¡
+è+
+šd’tSŒ
+ + "}\n";
+
+119
+ gs
+ =
+šd’tSŒ
+ + "ià(" +
+gu¬dLi¡SŒ
+ + ") {\n"
+
+120 +
+G‘SŒšg
+(
+Œue_¡mtLi¡
+è+
+šd’tSŒ
+ + "}\n" + indentStr
+
+121 + "–£ {\n" +
+G‘SŒšg
+(
+çl£_¡mtLi¡
+è+
+šd’tSŒ
+ + "}\n";
+
+124 
+Ãw
+
+CG_¡ršgR•r
+(
+s
+);
+
+127
+CG_ouutR•r
+*
+ gCG_¡ršgBužd”
+::
+C»©eInduùive
+(CG_ouutR•r*
+šdex
+,
+
+128
+CG_ouutR•r
+*
+low”
+, CG_ouutR•r*
+uµ”
+, CG_ouutR•r*
+¡•
+) const {
+
+129 ià(
+ gšdex
+ =ð
+NULL
+) {
+
+130
+årštf
+(
+¡d”r
+, "Code generation: missing†oop index\n");
+
+131 
+ gNULL
+;
+
+134 ià(
+ glow”
+ =ð
+NULL
+ ||
+uµ”
+ == NULL) {
+
+135
+årštf
+(
+¡d”r
+, "Code generation: missing†oop bound\n");
+
+138
+ g¡d
+::
+¡ršg
+
+šdexSŒ
+ =
+G‘SŒšg
+(
+šdex
+);
+
+139
+ g¡d
+::
+¡ršg
+
+low”SŒ
+,
+ guµ”SŒ
+;
+
+140 ià(
+ glow”
+ !ð
+NULL
+)
+
+141
+low”SŒ
+ =
+G‘SŒšg
+(
+low”
+);
+
+143
+ glow”SŒ
+ =
+¡d
+::
+¡ršg
+("-infinity");
+
+144 ià(
+ guµ”
+ !ð
+NULL
+)
+
+145
+uµ”SŒ
+ =
+G‘SŒšg
+(
+uµ”
+);
+
+147
+ guµ”SŒ
+ =
+¡d
+::
+¡ršg
+("+infinity");
+
+149
+ g¡d
+::
+¡ršg
+
+doSŒ
+ = "fÜ(" +
+šdexSŒ
+ + " = " +
+low”SŒ
+ + "; " + indexStr
+
+150 + " <ð" +
+uµ”SŒ
+ + "; " +
+šdexSŒ
+;
+
+152 ià(
+ g¡•
+ !ð
+NULL
+) {
+
+153
+¡d
+::
+¡ršg
+
+¡•SŒ
+ =
+G‘SŒšg
+(
+¡•
+);
+
+154
+ gdoSŒ
+ +ð" +ð" +
+¡•SŒ
+;
+
+156
+ gdoSŒ
+ += "++";
+
+159
+ gdoSŒ
+ += ")";
+
+161 
+Ãw
+
+CG_¡ršgR•r
+(
+doSŒ
+);
+
+164
+CG_ouutR•r
+*
+ gCG_¡ršgBužd”
+::
+C»©eLoÝ
+(
+šd’t
+, CG_ouutR•r*
+cÚŒÞ
+,
+
+165
+CG_ouutR•r
+*
+¡mtLi¡
+) const {
+
+166 ià(
+ g¡mtLi¡
+ =ð
+NULL
+) {
+
+167
+d–‘e
+
+cÚŒÞ
+;
+
+168 
+ gNULL
+;
+
+169 } ià(
+ gcÚŒÞ
+ =ð
+NULL
+) {
+
+170
+årštf
+(
+¡d”r
+, "Code generation:‚o inductive forhis†oop\n");
+
+171 
+ g¡mtLi¡
+;
+
+174
+ g¡d
+::
+¡ršg
+
+ù¾SŒ
+ =
+G‘SŒšg
+(
+cÚŒÞ
+);
+
+175
+ g¡d
+::
+¡ršg
+
+¡mtSŒ
+ =
+G‘SŒšg
+(
+¡mtLi¡
+);
+
+177
+ g¡d
+::
+¡ršg
+
+šd’tSŒ
+ =
+G‘Ind’tS·ûs
+(
+šd’t
+);
+
+179
+ g¡d
+::
+¡ršg
+
+s
+ =
+šd’tSŒ
+ +
+ù¾SŒ
+ + " {\n" +
+¡mtSŒ
+ + indentStr + "}\n";
+
+181 
+Ãw
+
+CG_¡ršgR•r
+(
+s
+);
+
+184
+CG_ouutR•r
+*
+ gCG_¡ršgBužd”
+::
+C»©eIÁ
+(
+_i
+) const {
+
+185
+¡d
+::
+¡ršg
+
+_s
+ =
+to_¡ršg
+(
+_i
+);
+
+186 
+Ãw
+
+CG_¡ršgR•r
+(
+_s
+);
+
+189
+CG_ouutR•r
+*
+ gCG_¡ršgBužd”
+::
+C»©eId’t
+(cÚ¡
+¡d
+::
+¡ršg
+ &
+_s
+) const {
+
+190 ià(&
+_s
+ =ð
+NULL
+ || _ =ð
+¡d
+::
+¡ršg
+("")) {
+
+191 
+NULL
+;
+
+194 
+Ãw
+
+CG_¡ršgR•r
+(
+_s
+);
+
+197
+CG_ouutR•r
+*
+ gCG_¡ršgBužd”
+::
+C»©ePlus
+(CG_ouutR•r*
+lÝ
+,
+
+198
+CG_ouutR•r
+*
+rÝ
+) const {
+
+199 ià(
+ grÝ
+ =ð
+NULL
+) {
+
+200 
+lÝ
+;
+
+201 } ià(
+ glÝ
+ =ð
+NULL
+) {
+
+202 
+rÝ
+;
+
+205
+ g¡d
+::
+¡ršg
+
+lÝSŒ
+ =
+G‘SŒšg
+(
+lÝ
+);
+
+206
+ g¡d
+::
+¡ršg
+
+rÝSŒ
+ =
+G‘SŒšg
+(
+rÝ
+);
+
+208 
+Ãw
+
+CG_¡ršgR•r
+(
+lÝSŒ
+ + "+" +
+rÝSŒ
+);
+
+211
+CG_ouutR•r
+*
+ gCG_¡ršgBužd”
+::
+C»©eMšus
+(CG_ouutR•r*
+lÝ
+,
+
+212
+CG_ouutR•r
+*
+rÝ
+) const {
+
+213 ià(
+ grÝ
+ =ð
+NULL
+) {
+
+214 
+lÝ
+;
+
+215 } ià(
+ glÝ
+ =ð
+NULL
+) {
+
+216
+¡d
+::
+¡ršg
+
+rÝSŒ
+ =
+G‘SŒšg
+(
+rÝ
+);
+
+217 
+Ãw
+
+CG_¡ršgR•r
+("-" +
+Saãgu¬dSŒšg
+(
+rÝSŒ
+, '-'));
+
+220
+ g¡d
+::
+¡ršg
+
+lÝSŒ
+ =
+G‘SŒšg
+(
+lÝ
+);
+
+221
+ g¡d
+::
+¡ršg
+
+rÝSŒ
+ =
+G‘SŒšg
+(
+rÝ
+);
+
+223 
+Ãw
+
+CG_¡ršgR•r
+(
+lÝSŒ
+ + "-" +
+Saãgu¬dSŒšg
+(
+rÝSŒ
+, '-'));
+
+226
+CG_ouutR•r
+*
+ gCG_¡ršgBužd”
+::
+C»©eTimes
+(CG_ouutR•r*
+lÝ
+,
+
+227
+CG_ouutR•r
+*
+rÝ
+) const {
+
+228 ià(
+ grÝ
+ =ð
+NULL
+ ||
+lÝ
+ == NULL) {
+
+229
+d–‘e
+
+rÝ
+;
+
+230
+d–‘e
+
+ glÝ
+;
+
+231 
+ gNULL
+;
+
+234
+ g¡d
+::
+¡ršg
+
+lÝSŒ
+ =
+G‘SŒšg
+(
+lÝ
+);
+
+235
+ g¡d
+::
+¡ršg
+
+rÝSŒ
+ =
+G‘SŒšg
+(
+rÝ
+);
+
+237 
+Ãw
+
+CG_¡ršgR•r
+(
+
+238
+Saãgu¬dSŒšg
+(
+lÝSŒ
+, '*'è+ "*" + Saãgu¬dSŒšg(
+rÝSŒ
+, '*'));
+
+241
+CG_ouutR•r
+*
+ gCG_¡ršgBužd”
+::
+C»©eIÁeg”Divide
+(CG_ouutR•r*
+lÝ
+,
+
+242
+CG_ouutR•r
+*
+rÝ
+) const {
+
+243 ià(
+ grÝ
+ =ð
+NULL
+) {
+
+244
+årštf
+(
+¡d”r
+, "Code generation: divide by NULL\n");
+
+245 
+ gNULL
+;
+
+246 } ià(
+ glÝ
+ =ð
+NULL
+) {
+
+247
+d–‘e
+
+rÝ
+;
+
+248 
+ gNULL
+;
+
+251
+ g¡d
+::
+¡ršg
+
+lÝSŒ
+ =
+G‘SŒšg
+(
+lÝ
+);
+
+252
+ g¡d
+::
+¡ršg
+
+rÝSŒ
+ =
+G‘SŒšg
+(
+rÝ
+);
+
+254 
+Ãw
+
+CG_¡ršgR•r
+("štDiv(" +
+lÝSŒ
+ + "," +
+rÝSŒ
+ + ")");
+
+257
+CG_ouutR•r
+*
+ gCG_¡ršgBužd”
+::
+C»©eIÁeg”Mod
+(CG_ouutR•r*
+lÝ
+,
+
+258
+CG_ouutR•r
+*
+rÝ
+) const {
+
+259 ià(
+ grÝ
+ =ð
+NULL
+ ||
+lÝ
+ == NULL) {
+
+260 
+NULL
+;
+
+263
+ g¡d
+::
+¡ršg
+
+lÝSŒ
+ =
+G‘SŒšg
+(
+lÝ
+);
+
+264
+ g¡d
+::
+¡ršg
+
+rÝSŒ
+ =
+G‘SŒšg
+(
+rÝ
+);
+
+266 
+Ãw
+
+CG_¡ršgR•r
+("štMod(" +
+lÝSŒ
+ + "," +
+rÝSŒ
+ + ")");
+
+269
+CG_ouutR•r
+*
+ gCG_¡ršgBužd”
+::
+C»©eIÁeg”Cež
+(CG_ouutR•r*
+lÝ
+,
+
+270
+CG_ouutR•r
+*
+rÝ
+) const {
+
+271 ià(
+ grÝ
+ =ð
+NULL
+ ||
+lÝ
+ == NULL) {
+
+272 
+NULL
+;
+
+275
+ g¡d
+::
+¡ršg
+
+lÝSŒ
+ =
+G‘SŒšg
+(
+lÝ
+);
+
+276
+ g¡d
+::
+¡ršg
+
+rÝSŒ
+ =
+G‘SŒšg
+(
+rÝ
+);
+
+278 
+Ãw
+
+CG_¡ršgR•r
+("štCež(" +
+lÝSŒ
+ + "," +
+rÝSŒ
+ + ")");
+
+281
+CG_ouutR•r
+*
+ gCG_¡ršgBužd”
+::
+C»©eAnd
+(CG_ouutR•r*
+lÝ
+,
+
+282
+CG_ouutR•r
+*
+rÝ
+) const {
+
+283 ià(
+ grÝ
+ =ð
+NULL
+)
+
+284 
+lÝ
+;
+
+285 ià(
+ glÝ
+ =ð
+NULL
+)
+
+286 
+rÝ
+;
+
+288
+ g¡d
+::
+¡ršg
+
+lÝSŒ
+ =
+G‘SŒšg
+(
+lÝ
+);
+
+289
+ g¡d
+::
+¡ršg
+
+rÝSŒ
+ =
+G‘SŒšg
+(
+rÝ
+);
+
+291 
+Ãw
+
+CG_¡ršgR•r
+(
+lÝSŒ
+ + " && " +
+rÝSŒ
+);
+
+294
+CG_ouutR•r
+*
+ gCG_¡ršgBužd”
+::
+C»©eGE
+(CG_ouutR•r*
+lÝ
+,
+
+295
+CG_ouutR•r
+*
+rÝ
+) const {
+
+296 ià(
+ grÝ
+ =ð
+NULL
+ ||
+lÝ
+ == NULL) {
+
+297 
+NULL
+;
+
+300
+ g¡d
+::
+¡ršg
+
+lÝSŒ
+ =
+G‘SŒšg
+(
+lÝ
+);
+
+301
+ g¡d
+::
+¡ršg
+
+rÝSŒ
+ =
+G‘SŒšg
+(
+rÝ
+);
+
+303 
+Ãw
+
+CG_¡ršgR•r
+(
+lÝSŒ
+ + " >ð" +
+rÝSŒ
+);
+
+306
+CG_ouutR•r
+*
+ gCG_¡ršgBužd”
+::
+C»©eLE
+(CG_ouutR•r*
+lÝ
+,
+
+307
+CG_ouutR•r
+*
+rÝ
+) const {
+
+308 ià(
+ grÝ
+ =ð
+NULL
+ ||
+lÝ
+ == NULL) {
+
+309 
+NULL
+;
+
+312
+ g¡d
+::
+¡ršg
+
+lÝSŒ
+ =
+G‘SŒšg
+(
+lÝ
+);
+
+313
+ g¡d
+::
+¡ršg
+
+rÝSŒ
+ =
+G‘SŒšg
+(
+rÝ
+);
+
+315 
+Ãw
+
+CG_¡ršgR•r
+(
+lÝSŒ
+ + " <ð" +
+rÝSŒ
+);
+
+318
+CG_ouutR•r
+*
+ gCG_¡ršgBužd”
+::
+C»©eEQ
+(CG_ouutR•r*
+lÝ
+,
+
+319
+CG_ouutR•r
+*
+rÝ
+) const {
+
+320 ià(
+ grÝ
+ =ð
+NULL
+ ||
+lÝ
+ == NULL) {
+
+321 
+NULL
+;
+
+324
+ g¡d
+::
+¡ršg
+
+lÝSŒ
+ =
+G‘SŒšg
+(
+lÝ
+);
+
+325
+ g¡d
+::
+¡ršg
+
+rÝSŒ
+ =
+G‘SŒšg
+(
+rÝ
+);
+
+327 
+Ãw
+
+CG_¡ršgR•r
+(
+lÝSŒ
+ + " =ð" +
+rÝSŒ
+);
+
+330
+CG_ouutR•r
+*
+ gCG_¡ršgBužd”
+::
+StmtLi¡Aµ’d
+(CG_ouutR•r*
+li¡1
+,
+
+331
+CG_ouutR•r
+*
+li¡2
+) const {
+
+332 ià(
+ gli¡2
+ =ð
+NULL
+) {
+
+333 
+li¡1
+;
+
+334 } ià(
+ gli¡1
+ =ð
+NULL
+) {
+
+335 
+li¡2
+;
+
+338
+ g¡d
+::
+¡ršg
+
+li¡1SŒ
+ =
+G‘SŒšg
+(
+li¡1
+);
+
+339
+ g¡d
+::
+¡ršg
+
+li¡2SŒ
+ =
+G‘SŒšg
+(
+li¡2
+);
+
+341 
+Ãw
+
+CG_¡ršgR•r
+(
+li¡1SŒ
+ +
+li¡2SŒ
+);
+
+347
+ g¡d
+::
+¡ršg
+
+G‘Ind’tS·ûs
+(
+šd’t
+) {
+
+348
+¡d
+::
+¡ršg
+
+šd’tSŒ
+;
+
+349 
+ gi
+ = 1; i <
+ gšd’t
+; i++) {
+
+350
+ gšd’tSŒ
+ += " ";
+
+352 
+ gšd’tSŒ
+;
+
+359
+ g¡d
+::
+¡ršg
+
+G‘SŒšg
+(
+CG_ouutR•r
+*
+»´
+) {
+
+360
+¡d
+::
+¡ršg
+
+»suÉ
+ =
+¡©ic_ÿ¡
+<
+CG_¡ršgR•r
+ *>(
+»´
+)->
+G‘SŒšg
+();
+
+361
+d–‘e
+
+ g»´
+;
+
+362 
+ g»suÉ
+;
+
+365 
+ g¡d
+::
+¡ršg
+
+Saãgu¬dSŒšg
+(cÚ¡
+¡d
+::¡ršg &
+s
+, 
+) {
+
+366 
+ gËn
+ =
+s
+.
+Ëngth
+();
+
+367 
+ g·»n_Ëv–
+ = 0;
+
+368 
+ gnum_¶usmšus
+ = 0;
+
+369 
+ gnum_mul
+ = 0;
+
+370 
+ gnum_div
+ = 0;
+
+371 
+ gi
+ = 0; i <
+ gËn
+; i++)
+
+372 
+ gs
+[
+i
+]) {
+
+374
+·»n_Ëv–
+++;
+
+377
+·»n_Ëv–
+--;
+
+381 ià(
+·»n_Ëv–
+ == 0)
+
+382
+num_¶usmšus
+++;
+
+385 ià(
+·»n_Ëv–
+ == 0)
+
+386
+num_mul
+++;
+
+389 ià(
+·»n_Ëv–
+ == 0)
+
+390
+num_div
+++;
+
+396
+boÞ
+
+ gÃed_·»n
+ =
+çl£
+;
+
+397 
+ gÝ
+) {
+
+399 ià(
+num_¶usmšus
+ > 0)
+
+400
+Ãed_·»n
+ =
+Œue
+;
+
+403 ià(
+num_¶usmšus
+ > 0 ||
+num_div
+ > 0)
+
+404
+Ãed_·»n
+ =
+Œue
+;
+
+407 ià(
+num_¶usmšus
+ > 0 ||
+num_div
+ > 0 ||
+num_mul
+ > 0)
+
+408
+Ãed_·»n
+ =
+Œue
+;
+
+414 ià(
+ gÃed_·»n
+)
+
+415  "(" +
+ gs
+ + ")";
+
+417 
+ gs
+;
+
+ @CG_stringRepr.cc
+
+16 
+ ~<code_g’/CG_¡ršgR•r.h
+>
+
+17 
+ ~<¡dio.h
+>
+
+19
+Çme¥aû
+
+ gomega
+ {
+
+21
+ gCG_¡ršgR•r
+::
+CG_¡ršgR•r
+() {
+
+24
+CG_¡ršgR•r
+::CG_¡ršgR•r(cÚ¡
+¡d
+::
+¡ršg
+&
+_s
+è:
+s
+(_s) {
+
+27
+CG_¡ršgR•r
+::~CG_stringRepr() {
+
+30
+CG_ouutR•r
+*
+CG_¡ršgR•r
+::
+þÚe
+() {
+
+31 
+Ãw
+
+CG_¡ršgR•r
+(
+s
+);
+
+38
+ g¡d
+::
+¡ršg
+
+CG_¡ršgR•r
+::
+G‘SŒšg
+() const {
+
+39 
+s
+;
+
+46 
+ gCG_¡ršgR•r
+::
+Dump
+() const {
+
+47
+´štf
+("%s\n",
+s
+.
+c_¡r
+());
+
+50 
+ gCG_¡ršgR•r
+::
+DumpToFže
+(
+FILE
+ *
+) const {
+
+51
+årštf
+(
+,"%s",
+s
+.
+c_¡r
+());
+
+ @CG_suifBuilder.cc
+
+15 
+ ~<¡ack
+>
+
+16 
+ ~<code_g’/CG_suifBužd”.h
+>
+
+17 
+ ~<suif1/ªnÙe.h
+>
+
+18 
+ ~<veùÜ
+>
+
+20
+Çme¥aû
+
+ gomega
+ {
+
+25 *
+ gk_ocg_comm’t
+;
+
+26 *
+ gk_s2c_´agma
+;
+
+27 *
+ gk_cuda_dim3
+;
+
+28 *
+ gk_cuda_k”Ãl
+;
+
+29 *
+ gk_cuda_modif›r
+;
+
+30 *
+ gk_cuda_‹xtu»_memÜy
+;
+
+38
+Tu¶e
+< Tu¶e<> >
+smtNÚS¶™Lev–s
+;
+
+39
+Tu¶e
+< Tu¶e<
+¡d
+::
+¡ršg
+> >
+loÝIdxNames
+;
+
+40
+¡d
+::
+veùÜ
+< std::
+·œ
+<, std::
+¡ršg
+> >
+syncs
+;
+
+41 
+checkLoÝLev–
+;
+
+42 
+¡mtFÜLoÝCheck
+;
+
+43 
+uµ”BoundFÜLev–
+;
+
+44 
+low”BoundFÜLev–
+;
+
+45
+boÞ
+
+fžlInBounds
+;
+
+48 cÚ¡ *
+ glibcode_g’_v”_¡ršg
+ = "";
+
+49 cÚ¡ *
+ glibcode_g’_who_¡ršg
+ = "";
+
+50 cÚ¡ *
+ glibcode_g’_suif_¡ršg
+ = "";
+
+53 
+š™_code_g’
+() {
+
+54 
+boÞ
+
+ gisIn™
+ =
+çl£
+;
+
+55 if(!
+ gisIn™
+)
+
+57
+ gisIn™
+ =
+Œue
+;
+
+58
+ANNOTE
+(
+k_ocg_comm’t
+, "omega_comm’t",
+TRUE
+);
+
+59
+ANNOTE
+(
+k_s2c_´agma
+, "s2ø´agma",
+TRUE
+);
+
+60
+ANNOTE
+(
+k_cuda_dim3
+, "cud¨dim3",
+TRUE
+);
+
+61
+ANNOTE
+(
+k_cuda_k”Ãl
+, "cud¨k”Ãl",
+TRUE
+);
+
+62
+ANNOTE
+(
+k_cuda_modif›r
+, "cud¨modif›r",
+TRUE
+);
+
+67 
+ex™_code_g’
+() {
+
+75
+ gCG_suifBužd”
+::
+CG_suifBužd”
+(
+´oc_symb
+ *
+symb
+)
+
+77
+symb_
+ =
+symb
+;
+
+78
+š™_code_g’
+();
+
+81
+CG_ouutR•r
+*
+ gCG_suifBužd”
+::
+C»©ePÏûHÞd”
+ (, CG_ouutR•¸*
+¡mt
+,
+
+82
+Tu¶e
+<
+CG_ouutR•r
+*> &
+funcLi¡
+, Tu¶e<
+¡d
+::
+¡ršg
+> &
+loÝ_v¬s
+) const {
+
+83
+Œ“_node_li¡
+ *
+Šl
+ =
+¡©ic_ÿ¡
+<
+CG_suifR•r
+ *>(
+¡mt
+)->
+Šl_
+;
+
+84
+d–‘e
+
+ g¡mt
+;
+
+86 
+ gi
+ = 1; i <ð
+funcLi¡
+.
+size
+(); i++) {
+
+87 ià(
+ gfuncLi¡
+[
+i
+] =ð
+NULL
+)
+
+90
+CG_suifR•r
+ *
+ g»´
+ =
+¡©ic_ÿ¡
+<CG_suifR•r*>(
+funcLi¡
+[
+i
+]);
+
+91
+Ý”ªd
+
+ gÝ
+ =
+»´
+->
+Ý_
+;
+
+92
+d–‘e
+
+ g»´
+;
+
+94
+v¬_sym
+ *
+ gvs
+ =
+¡©ic_ÿ¡
+<v¬_sym*>(
+symb_
+->
+lookup_sym
+(
+loÝ_v¬s
+[
+i
+].
+c_¡r
+(),
+SYM_VAR
+));
+
+96
+sub¡™u‹
+(
+Šl
+,
+vs
+,
+,
+symb_
+);
+
+98 ià(
+ gÝ
+.
+is_š¡r
+())
+
+99
+d–‘e
+
+ gÝ
+.
+š¡r
+();
+
+102 
+Ãw
+
+CG_suifR•r
+(
+Šl
+);
+
+106
+CG_ouutR•r
+*
+ gCG_suifBužd”
+::
+C»©eAssignm’t
+(, CG_ouutR•¸*
+lhs
+,
+
+107
+CG_ouutR•r
+ *
+rhs
+) const {
+
+108 iàÐ
+ glhs
+ =ð
+NULL
+ ||
+rhs
+ == NULL ) {
+
+109
+årštf
+(
+¡d”r
+, "Code generation: Missing†hs or„hs\n");
+
+110 
+ gNULL
+;
+
+113
+Ý”ªd
+
+ g¤c
+ =
+¡©ic_ÿ¡
+<
+CG_suifR•r
+*>(
+rhs
+)->
+Ý_
+;
+
+114 ià(
+ g¤c
+.
+is_š¡r
+(è&& src.
+š¡r
+()->
+Ýcode
+(è=ð
+io_¬¿y
+) {
+
+115
+š_¬¿y
+ *
+ =
+¡©ic_ÿ¡
+<š_¬¿y *>(
+¤c
+.
+š¡r
+());
+
+116
+š¡ruùiÚ
+ *
+ gšs
+ =
+Ãw
+
+š_¼r
+(
+io_lod
+,
+->
+–em_ty³
+(),
+Ý”ªd
+(), ia);
+
+117
+ g¤c
+ =
+Ý”ªd
+(
+šs
+);
+
+120
+š¡ruùiÚ
+ *
+ gšs
+;
+
+121
+Ý”ªd
+
+ gd¡
+ =
+¡©ic_ÿ¡
+<
+CG_suifR•r
+*>(
+lhs
+)->
+Ý_
+;
+
+122 ià(
+ gd¡
+.
+is_š¡r
+(è&& d¡.
+š¡r
+()->
+Ýcode
+(è=ð
+io_¬¿y
+) {
+
+123
+š_¬¿y
+ *
+ =
+¡©ic_ÿ¡
+<š_¬¿y *>(
+d¡
+.
+š¡r
+());
+
+124
+ gšs
+ =
+Ãw
+
+š_¼r
+(
+io_¡r
+,
+ty³_void
+,
+Ý”ªd
+(), o³¿nd(
+),
+¤c
+);
+
+127
+ gšs
+ =
+Ãw
+
+š_¼r
+(
+io_ýy
+,
+¤c
+.
+ty³
+(),
+d¡
+, src);
+
+129
+d–‘e
+
+ glhs
+;
+
+130
+d–‘e
+
+ grhs
+;
+
+132
+Œ“_node_li¡
+ *
+ gŠl
+ =
+Ãw
+ree_node_list;
+
+133
+ gŠl
+->
+­³nd
+(
+Ãw
+
+Œ“_š¡r
+(
+šs
+));
+
+135 
+Ãw
+
+CG_suifR•r
+(
+Šl
+);
+
+139
+CG_ouutR•r
+*
+ gCG_suifBužd”
+::
+C»©eInvoke
+(cÚ¡
+¡d
+::
+¡ršg
+ &
+âame
+,
+
+140
+Tu¶e
+<
+CG_ouutR•r
+*> &
+li¡
+) const {
+
+141 ià(
+ gâame
+ =ð
+¡d
+::
+¡ršg
+("max"è||
+âame
+ == std::string("min")) {
+
+142 ià(
+li¡
+.
+size
+() == 0) {
+
+143 
+NULL
+;
+
+145 ià(
+ gli¡
+.
+size
+() == 1) {
+
+146 
+li¡
+[1];
+
+149 
+ gϡ
+ =
+li¡
+.
+size
+();
+
+150
+Ý”ªd
+
+ gÝ2
+ =
+¡©ic_ÿ¡
+<
+CG_suifR•r
+*>(
+li¡
+[
+Ï¡
+])->
+Ý_
+;
+
+151
+d–‘e
+
+ gli¡
+[
+Ï¡
+];
+
+152
+ gli¡
+.
+d–‘e_Ï¡
+();
+
+153
+CG_suifR•r
+ *
+ g»´
+ =
+¡©ic_ÿ¡
+<CG_suifR•r*>(
+C»©eInvoke
+(
+âame
+,
+li¡
+));
+
+154
+Ý”ªd
+
+ gÝ1
+ =
+»´
+->
+Ý_
+;
+
+156
+š¡ruùiÚ
+ *
+ gšs
+;
+
+157 ià(
+ gâame
+ =ð
+¡d
+::
+¡ršg
+("max"))
+
+158
+šs
+ =
+Ãw
+
+š_¼r
+(
+io_max
+,
+Ý1
+.
+ty³
+(),
+Ý”ªd
+(), op1,
+Ý2
+);
+
+160
+ gšs
+ =
+Ãw
+
+š_¼r
+(
+io_mš
+,
+Ý1
+.
+ty³
+(),
+Ý”ªd
+(), op1,
+Ý2
+);
+
+162
+ g»´
+->
+ gÝ_
+ =
+Ý”ªd
+(
+šs
+);
+
+164 
+ g»´
+;
+
+168
+årštf
+(
+¡d”r
+, "Code generation: invoke function io_call‚ot implemented\n");
+
+169 
+ gNULL
+;
+
+174
+CG_ouutR•r
+*
+ gCG_suifBužd”
+::
+C»©eA‰ribu‹
+(CG_ouutR•¸*
+cÚŒÞ
+,
+
+175 cÚ¡
+¡d
+::
+¡ršg
+ &
+comm’tText
+)const {
+
+176 ià(
+comm’tText
+ =ð
+¡d
+::
+¡ršg
+("")) {
+
+177 
+cÚŒÞ
+;
+
+180
+š¡ruùiÚ
+ *
+ gšs
+ =
+Ãw
+
+š_¼r
+(
+io_mrk
+);
+
+182
+immed_li¡
+ *
+ giml
+ =
+Ãw
+ immed_list;
+
+183
+ giml
+->
+­³nd
+(
+immed
+(
+cÚ¡_ÿ¡
+<*>(
+comm’tText
+.
+c_¡r
+())));
+
+184
+ gšs
+->
+´•’d_ªnÙe
+(
+k_ocg_comm’t
+,
+iml
+);
+
+186
+Œ“_node_li¡
+ *
+ gŠl
+ ;
+
+187
+ gŠl
+ =
+¡©ic_ÿ¡
+<
+CG_suifR•r
+*>(
+cÚŒÞ
+)->
+Šl_
+;
+
+188
+ gŠl
+->
+­³nd
+(
+Ãw
+
+Œ“_š¡r
+(
+šs
+));
+
+191 
+Ãw
+
+CG_suifR•r
+(
+Šl
+);
+
+198
+CG_ouutR•r
+*
+ gCG_suifBužd”
+::
+C»©eComm’t
+(, cÚ¡
+¡d
+::
+¡ršg
+ &
+comm’tText
+) const {
+
+199 iàÐ
+comm’tText
+ =ð
+¡d
+::
+¡ršg
+("") ) {
+
+200 
+NULL
+;
+
+203
+š¡ruùiÚ
+ *
+ gšs
+ =
+Ãw
+
+š_¼r
+(
+io_mrk
+);
+
+205
+immed_li¡
+ *
+ giml
+ =
+Ãw
+ immed_list;
+
+206
+ giml
+->
+­³nd
+(
+immed
+(
+cÚ¡_ÿ¡
+<*>(
+comm’tText
+.
+c_¡r
+())));
+
+207
+ gšs
+->
+´•’d_ªnÙe
+(
+k_ocg_comm’t
+,
+iml
+);
+
+209
+Œ“_node_li¡
+ *
+ gŠl
+ =
+Ãw
+ree_node_list;
+
+210
+ gŠl
+->
+­³nd
+(
+Ãw
+
+Œ“_š¡r
+(
+šs
+));
+
+212 
+Ãw
+
+CG_suifR•r
+(
+Šl
+);
+
+216
+CG_ouutR•r
+*
+ gCG_suifBužd”
+::
+C»©eIf
+(, CG_ouutR•¸*
+gu¬dLi¡
+,
+
+217
+CG_ouutR•r
+ *
+Œue_¡mtLi¡
+, CG_ouutR•¸*
+çl£_¡mtLi¡
+) const {
+
+218 
+ gif_couÁ”
+ = 1;
+
+219
+ g¡d
+::
+¡ršg
+
+s
+ =
+¡d
+::¡ršg("omegaif_")+
+to_¡ršg
+(
+if_couÁ”
+++);
+
+220
+Ïb–_sym
+ *
+ gif_Ïb–
+ =
+Ãw
+†ab–_sym(
+cÚ¡_ÿ¡
+<*>(
+s
+.
+c_¡r
+()));
+
+221
+ gsymb_
+->
+add_sym
+(
+if_Ïb–
+);
+
+223 iàÐ
+ gŒue_¡mtLi¡
+ =ð
+NULL
+ &&
+çl£_¡mtLi¡
+ == NULL ) {
+
+224
+d–‘e
+
+gu¬dLi¡
+;
+
+225 
+ gNULL
+;
+
+227 iàÐ
+ ggu¬dLi¡
+ =ð
+NULL
+ ) {
+
+228 
+StmtLi¡Aµ’d
+(
+Œue_¡mtLi¡
+,
+çl£_¡mtLi¡
+);
+
+231
+Œ“_node_li¡
+ *
+ gh—d”
+ =
+Ãw
+ree_node_list;
+
+232
+Ý”ªd
+
+ gÝ
+ =
+¡©ic_ÿ¡
+<
+CG_suifR•r
+*>(
+gu¬dLi¡
+)->
+Ý_
+;
+
+234
+ g¡d
+::
+¡ack
+<*>
+S
+;
+
+235
+ gS
+.
+push
+(
+.
+š¡r
+());
+
+236 !
+ gS
+.
+em±y
+()) {
+
+237
+š¡ruùiÚ
+ *
+ gšs
+ =
+¡©ic_ÿ¡
+<š¡ruùiÚ *>(
+S
+.
+tÝ
+());
+
+238
+ gS
+.
+pÝ
+();
+
+239 ià(
+ gšs
+->
+Ýcode
+(è=ð
+io_ªd
+) {
+
+240
+š¡ruùiÚ
+ *
+šs1
+ =
+šs
+->
+¤c_Ý
+(0).
+š¡r
+();
+
+241
+ gšs1
+->
+»move
+();
+
+242
+ gS
+.
+push
+(
+šs1
+);
+
+243
+š¡ruùiÚ
+ *
+ gšs2
+ =
+šs
+->
+¤c_Ý
+(1).
+š¡r
+();
+
+244
+ gšs2
+->
+»move
+();
+
+245
+ gS
+.
+push
+(
+šs2
+);
+
+246
+d–‘e
+
+ gšs
+;
+
+249
+ gšs
+ =
+Ãw
+
+š_bj
+(
+io_bçl£
+,
+if_Ïb–
+,
+Ý”ªd
+(
+šs
+));
+
+250
+ gh—d”
+->
+­³nd
+(
+Ãw
+
+Œ“_š¡r
+(
+šs
+));
+
+254
+Œ“_node_li¡
+ *
+ gth’_·¹
+, *
+ g–£_·¹
+;
+
+255 ià(
+ gŒue_¡mtLi¡
+ !ð
+NULL
+)
+
+256
+th’_·¹
+ =
+¡©ic_ÿ¡
+<
+CG_suifR•r
+*>(
+Œue_¡mtLi¡
+)->
+Šl_
+;
+
+258
+ gth’_·¹
+ =
+NULL
+;
+
+259 ià(
+ gçl£_¡mtLi¡
+ !ð
+NULL
+)
+
+260
+–£_·¹
+ =
+¡©ic_ÿ¡
+<
+CG_suifR•r
+*>(
+çl£_¡mtLi¡
+)->
+Šl_
+;
+
+262
+ g–£_·¹
+ =
+NULL
+;
+
+263
+Œ“_if
+ *
+ gti
+ =
+Ãw
+»e_if(
+if_Ïb–
+,
+h—d”
+,
+th’_·¹
+,
+–£_·¹
+);
+
+265
+Œ“_node_li¡
+ *
+ gŠl
+ =
+Ãw
+ree_node_list;
+
+266
+ gŠl
+->
+­³nd
+(
+ti
+);
+
+268
+d–‘e
+
+ ggu¬dLi¡
+;
+
+269
+d–‘e
+
+ gŒue_¡mtLi¡
+;
+
+270
+d–‘e
+
+ gçl£_¡mtLi¡
+;
+
+272 
+Ãw
+
+CG_suifR•r
+(
+Šl
+);
+
+276
+CG_ouutR•r
+*
+ gCG_suifBužd”
+::
+C»©eInduùive
+(CG_ouutR•¸*
+šdex
+,
+
+277
+CG_ouutR•r
+ *
+low”
+,
+
+278
+CG_ouutR•r
+ *
+uµ”
+,
+
+279
+CG_ouutR•r
+ *
+¡•
+) const {
+
+280 iàÐ
+ gšdex
+ =ð
+NULL
+ ||
+low”
+ =ðNULL ||
+uµ”
+ == NULL ) {
+
+281
+årštf
+(
+¡d”r
+, "Code generation: something wrong in CreateInductive\n");
+
+282 
+ gNULL
+;
+
+285 ià(
+ g¡•
+ =ð
+NULL
+)
+
+286
+¡•
+ =
+C»©eIÁ
+(1);
+
+288
+v¬_sym
+ *
+ gšdex_sym
+ =
+¡©ic_ÿ¡
+<
+CG_suifR•r
+*>(
+šdex
+)->
+Ý_
+.
+symbÞ
+();
+
+289
+Ý”ªd
+
+ glow”_bound
+ =
+¡©ic_ÿ¡
+<
+CG_suifR•r
+*>(
+low”
+)->
+Ý_
+;
+
+290
+Ý”ªd
+
+ guµ”_bound
+ =
+¡©ic_ÿ¡
+<
+CG_suifR•r
+*>(
+uµ”
+)->
+Ý_
+;
+
+291
+Ý”ªd
+
+ g¡•_size
+ =
+¡©ic_ÿ¡
+<
+CG_suifR•r
+*>(
+¡•
+)->
+Ý_
+;
+
+293
+Ïb–_sym
+ *
+ gcÚtLab–
+ =
+Ãw
+†abel_sym("");
+
+294
+Ïb–_sym
+ *
+ gbrkLab–
+ =
+Ãw
+†abel_sym("");
+
+295
+ gsymb_
+->
+add_sym
+(
+cÚtLab–
+);
+
+296
+ gsymb_
+->
+add_sym
+(
+brkLab–
+);
+
+297
+Œ“_fÜ
+ *
+ gtf
+ =
+Ãw
+»e_fÜ(
+šdex_sym
+,
+FOR_SLTE
+,
+cÚtLab–
+,
+brkLab–
+,
+NULL
+,
+
+298
+low”_bound
+,
+uµ”_bound
+,
+¡•_size
+,
+NULL
+);
+
+300
+Œ“_node_li¡
+ *
+ gŠl
+ =
+Ãw
+ree_node_list;
+
+301
+ gŠl
+->
+­³nd
+(
+tf
+);
+
+303
+d–‘e
+
+ gšdex
+;
+
+304
+d–‘e
+
+ glow”
+;
+
+305
+d–‘e
+
+ guµ”
+;
+
+306
+d–‘e
+
+ g¡•
+;
+
+308 
+Ãw
+
+CG_suifR•r
+(
+Šl
+);
+
+312
+CG_ouutR•r
+*
+ gCG_suifBužd”
+::
+C»©eLoÝ
+(, CG_ouutR•¸*
+cÚŒÞ
+,
+
+313
+CG_ouutR•r
+ *
+¡mtLi¡
+) const {
+
+314 iàÐ
+ g¡mtLi¡
+ =ð
+NULL
+ ) {
+
+315
+d–‘e
+
+cÚŒÞ
+;
+
+316 
+ gNULL
+;
+
+318 iàÐ
+ gcÚŒÞ
+ =ð
+NULL
+ ) {
+
+319
+årštf
+(
+¡d”r
+, "Code generation:‚o inductive forhis†oop\n");
+
+320 
+ g¡mtLi¡
+;
+
+323
+Œ“_node_li¡
+ *
+ gŠl
+ =
+¡©ic_ÿ¡
+<
+CG_suifR•r
+*>(
+cÚŒÞ
+)->
+Šl_
+;
+
+324
+Œ“_node_li¡_™”
+
+™”
+(
+Šl
+);
+
+325
+Œ“_fÜ
+ *
+ gtf
+ =
+¡©ic_ÿ¡
+<Œ“_fÜ*>(
+™”
+.
+¡•
+());
+
+327
+Œ“_node_li¡
+ *
+ gbody
+ =
+¡©ic_ÿ¡
+<
+CG_suifR•r
+*>(
+¡mtLi¡
+)->
+Šl_
+;
+
+328
+ gtf
+->
+£t_body
+(
+body
+);
+
+330
+d–‘e
+
+ g¡mtLi¡
+;
+
+332 
+ gcÚŒÞ
+;
+
+336
+CG_ouutR•r
+*
+ gCG_suifBužd”
+::
+C»©eIÁ
+(
+_i
+) const {
+
+337
+š_ldc
+ *
+šs
+ =
+Ãw
+ in_ldc(
+ty³_s32
+,
+Ý”ªd
+(),
+immed
+(
+_i
+));
+
+339 
+Ãw
+
+CG_suifR•r
+(
+Ý”ªd
+(
+šs
+));
+
+343
+CG_ouutR•r
+*
+ gCG_suifBužd”
+::
+C»©eId’t
+(cÚ¡
+¡d
+::
+¡ršg
+ &
+_s
+) const {
+
+344 iàÐ&
+_s
+ =ð
+NULL
+ || _ =ð
+¡d
+::
+¡ršg
+("") ) {
+
+345 
+NULL
+;
+
+348
+v¬_sym
+ *
+ gvs
+ =
+¡©ic_ÿ¡
+<v¬_sym*>(
+symb_
+->
+lookup_sym
+(
+_s
+.
+c_¡r
+(),
+SYM_VAR
+));
+
+350 ià(
+ gvs
+ =ð
+NULL
+) {
+
+351
+vs
+ =
+Ãw
+
+v¬_sym
+(
+ty³_s32
+,
+cÚ¡_ÿ¡
+<*>(
+_s
+.
+c_¡r
+()));
+
+352
+ gsymb_
+->
+add_sym
+(
+vs
+);
+
+355 
+Ãw
+
+CG_suifR•r
+(
+Ý”ªd
+(
+vs
+));
+
+359
+CG_ouutR•r
+*
+ gCG_suifBužd”
+::
+C»©ePlus
+(CG_ouutR•¸*
+lÝ
+,
+
+360
+CG_ouutR•r
+ *
+rÝ
+) const {
+
+361 iàÐ
+ grÝ
+ =ð
+NULL
+ ) {
+
+362 
+lÝ
+;
+
+364 iàÐ
+ glÝ
+ =ð
+NULL
+ ) {
+
+365 
+rÝ
+;
+
+368
+Ý”ªd
+
+ gÝ1
+ =
+¡©ic_ÿ¡
+<
+CG_suifR•r
+*>(
+lÝ
+)->
+Ý_
+;
+
+369
+Ý”ªd
+
+ gÝ2
+ =
+¡©ic_ÿ¡
+<
+CG_suifR•r
+*>(
+rÝ
+)->
+Ý_
+;
+
+371
+š¡ruùiÚ
+ *
+ gšs
+ =
+Ãw
+
+š_¼r
+(
+io_add
+,
+Ý1
+.
+ty³
+(),
+Ý”ªd
+(), op1,
+Ý2
+);
+
+373
+d–‘e
+
+ glÝ
+;
+
+374
+d–‘e
+
+ grÝ
+;
+
+376 
+Ãw
+
+CG_suifR•r
+(
+Ý”ªd
+(
+šs
+));
+
+380
+CG_ouutR•r
+*
+ gCG_suifBužd”
+::
+C»©eMšus
+(CG_ouutR•¸*
+lÝ
+,
+
+381
+CG_ouutR•r
+ *
+rÝ
+) const {
+
+382 iàÐ
+ grÝ
+ =ð
+NULL
+ ) {
+
+383 
+lÝ
+;
+
+385 iàÐ
+ glÝ
+ =ð
+NULL
+ ) {
+
+386
+Ý”ªd
+
+ =
+¡©ic_ÿ¡
+<
+CG_suifR•r
+*>(
+rÝ
+)->
+Ý_
+;
+
+387
+š¡ruùiÚ
+ *
+ gšs
+ =
+Ãw
+
+š_¼r
+(
+io_Ãg
+,
+.
+ty³
+(),
+Ý”ªd
+(), op);
+
+389
+d–‘e
+
+ grÝ
+;
+
+391 
+Ãw
+
+CG_suifR•r
+(
+Ý”ªd
+(
+šs
+));
+
+394
+Ý”ªd
+
+ gÝ1
+ =
+¡©ic_ÿ¡
+<
+CG_suifR•r
+*>(
+lÝ
+)->
+Ý_
+;
+
+395
+Ý”ªd
+
+ gÝ2
+ =
+¡©ic_ÿ¡
+<
+CG_suifR•r
+*>(
+rÝ
+)->
+Ý_
+;
+
+397
+š¡ruùiÚ
+ *
+ gšs
+ =
+Ãw
+
+š_¼r
+(
+io_sub
+,
+Ý1
+.
+ty³
+(),
+Ý”ªd
+(), op1,
+Ý2
+);
+
+399
+d–‘e
+
+ glÝ
+;
+
+400
+d–‘e
+
+ grÝ
+;
+
+402 
+Ãw
+
+CG_suifR•r
+(
+Ý”ªd
+(
+šs
+));
+
+407
+CG_ouutR•r
+*
+ gCG_suifBužd”
+::
+C»©eTimes
+(CG_ouutR•¸*
+lÝ
+,
+
+408
+CG_ouutR•r
+ *
+rÝ
+) const {
+
+409 iàÐ
+ grÝ
+ =ð
+NULL
+ ||
+lÝ
+ == NULL) {
+
+410 ià(
+rÝ
+ !ð
+NULL
+) {
+
+411
+rÝ
+->
+þ—r
+();
+
+412
+d–‘e
+
+ grÝ
+;
+
+414 ià(
+ glÝ
+ !ð
+NULL
+) {
+
+415
+lÝ
+->
+þ—r
+();
+
+416
+d–‘e
+
+ glÝ
+;
+
+418 
+ gNULL
+;
+
+421
+Ý”ªd
+
+ gÝ1
+ =
+¡©ic_ÿ¡
+<
+CG_suifR•r
+*>(
+lÝ
+)->
+Ý_
+;
+
+422
+Ý”ªd
+
+ gÝ2
+ =
+¡©ic_ÿ¡
+<
+CG_suifR•r
+*>(
+rÝ
+)->
+Ý_
+;
+
+424
+š¡ruùiÚ
+ *
+ gšs
+ =
+Ãw
+
+š_¼r
+(
+io_mul
+,
+Ý1
+.
+ty³
+(),
+Ý”ªd
+(), op1,
+Ý2
+);
+
+426
+d–‘e
+
+ glÝ
+;
+
+427
+d–‘e
+
+ grÝ
+;
+
+429 
+Ãw
+
+CG_suifR•r
+(
+Ý”ªd
+(
+šs
+));
+
+433
+CG_ouutR•r
+*
+ gCG_suifBužd”
+::
+C»©eIÁeg”Divide
+(CG_ouutR•¸*
+lÝ
+,
+
+434
+CG_ouutR•r
+ *
+rÝ
+) const {
+
+435 iàÐ
+ grÝ
+ =ð
+NULL
+ ) {
+
+436
+årštf
+(
+¡d”r
+, "Code generation: divide by NULL\n");
+
+437 
+ gNULL
+;
+
+439 iàÐ
+ glÝ
+ =ð
+NULL
+ ) {
+
+440
+d–‘e
+
+rÝ
+;
+
+441 
+ gNULL
+;
+
+445
+Ý”ªd
+
+ gÝ1
+ =
+¡©ic_ÿ¡
+<
+CG_suifR•r
+*>(
+lÝ
+)->
+Ý_
+;
+
+446
+Ý”ªd
+
+ gÝ2
+ =
+¡©ic_ÿ¡
+<
+CG_suifR•r
+*>(
+rÝ
+)->
+Ý_
+;
+
+449
+š¡ruùiÚ
+ *
+ gšs
+ =
+Ãw
+
+š_¼r
+(
+io_div
+,
+Ý1
+.
+ty³
+(),
+Ý”ªd
+(), op1,
+Ý2
+);
+
+451
+d–‘e
+
+ glÝ
+;
+
+452
+d–‘e
+
+ grÝ
+;
+
+454 
+Ãw
+
+CG_suifR•r
+(
+Ý”ªd
+(
+šs
+));
+
+458
+CG_ouutR•r
+*
+ gCG_suifBužd”
+::
+C»©eIÁeg”Mod
+(CG_ouutR•¸*
+lÝ
+,
+
+459
+CG_ouutR•r
+ *
+rÝ
+) const {
+
+460 iàÐ
+ grÝ
+ =ð
+NULL
+ ||
+lÝ
+ == NULL ) {
+
+461 
+NULL
+;
+
+464
+Ý”ªd
+
+ gÝ1
+ =
+¡©ic_ÿ¡
+<
+CG_suifR•r
+*>(
+lÝ
+)->
+Ý_
+;
+
+465
+Ý”ªd
+
+ gÝ2
+ =
+¡©ic_ÿ¡
+<
+CG_suifR•r
+*>(
+rÝ
+)->
+Ý_
+;
+
+468
+š¡ruùiÚ
+ *
+ gšs
+ =
+Ãw
+
+š_¼r
+(
+io_»m
+,
+ty³_s32
+,
+Ý”ªd
+(),
+Ý1
+,
+Ý2
+);
+
+470
+d–‘e
+
+ glÝ
+;
+
+471
+d–‘e
+
+ grÝ
+;
+
+473 
+Ãw
+
+CG_suifR•r
+(
+Ý”ªd
+(
+šs
+));
+
+477
+CG_ouutR•r
+*
+ gCG_suifBužd”
+::
+C»©eAnd
+(CG_ouutR•¸*
+lÝ
+,
+
+478
+CG_ouutR•r
+ *
+rÝ
+) const {
+
+479 ià(
+ grÝ
+ =ð
+NULL
+)
+
+480 
+lÝ
+;
+
+481 ià(
+ glÝ
+ =ð
+NULL
+)
+
+482 
+rÝ
+;
+
+484
+Ý”ªd
+
+ gÝ1
+ =
+¡©ic_ÿ¡
+<
+CG_suifR•r
+*>(
+lÝ
+)->
+Ý_
+;
+
+485
+Ý”ªd
+
+ gÝ2
+ =
+¡©ic_ÿ¡
+<
+CG_suifR•r
+*>(
+rÝ
+)->
+Ý_
+;
+
+487
+š¡ruùiÚ
+ *
+ gšs
+ =
+Ãw
+
+š_¼r
+(
+io_ªd
+,
+Ý1
+.
+ty³
+(),
+Ý”ªd
+(), op1,
+Ý2
+);
+
+489
+d–‘e
+
+ glÝ
+;
+
+490
+d–‘e
+
+ grÝ
+;
+
+492 
+Ãw
+
+CG_suifR•r
+(
+Ý”ªd
+(
+šs
+));
+
+496
+CG_ouutR•r
+*
+ gCG_suifBužd”
+::
+C»©eGE
+(CG_ouutR•¸*
+lÝ
+,
+
+497
+CG_ouutR•r
+ *
+rÝ
+) const {
+
+498 
+C»©eLE
+(
+rÝ
+,
+lÝ
+);
+
+502
+CG_ouutR•r
+*
+ gCG_suifBužd”
+::
+C»©eLE
+(CG_ouutR•¸*
+lÝ
+,
+
+503
+CG_ouutR•r
+ *
+rÝ
+) const {
+
+504 iàÐ
+ grÝ
+ =ð
+NULL
+ ||
+lÝ
+ == NULL ) {
+
+505 
+NULL
+;
+
+508
+Ý”ªd
+
+ gÝ1
+ =
+¡©ic_ÿ¡
+<
+CG_suifR•r
+*>(
+lÝ
+)->
+Ý_
+;
+
+509
+Ý”ªd
+
+ gÝ2
+ =
+¡©ic_ÿ¡
+<
+CG_suifR•r
+*>(
+rÝ
+)->
+Ý_
+;
+
+511
+š¡ruùiÚ
+ *
+ gšs
+ =
+Ãw
+
+š_¼r
+(
+io_¦e
+,
+ty³_s32
+,
+Ý”ªd
+(),
+Ý1
+,
+Ý2
+);
+
+513
+d–‘e
+
+ glÝ
+;
+
+514
+d–‘e
+
+ grÝ
+;
+
+516 
+Ãw
+
+CG_suifR•r
+(
+Ý”ªd
+(
+šs
+));
+
+520
+CG_ouutR•r
+*
+ gCG_suifBužd”
+::
+C»©eEQ
+(CG_ouutR•¸*
+lÝ
+,
+
+521
+CG_ouutR•r
+ *
+rÝ
+) const {
+
+522 iàÐ
+ grÝ
+ =ð
+NULL
+ ||
+lÝ
+ == NULL ) {
+
+523 
+NULL
+;
+
+526
+Ý”ªd
+
+ gÝ1
+ =
+¡©ic_ÿ¡
+<
+CG_suifR•r
+*>(
+lÝ
+)->
+Ý_
+;
+
+527
+Ý”ªd
+
+ gÝ2
+ =
+¡©ic_ÿ¡
+<
+CG_suifR•r
+*>(
+rÝ
+)->
+Ý_
+;
+
+529
+š¡ruùiÚ
+ *
+ gšs
+ =
+Ãw
+
+š_¼r
+(
+io_£q
+,
+ty³_s32
+,
+Ý”ªd
+(),
+Ý1
+,
+Ý2
+);
+
+531
+d–‘e
+
+ glÝ
+;
+
+532
+d–‘e
+
+ grÝ
+;
+
+534 
+Ãw
+
+CG_suifR•r
+(
+Ý”ªd
+(
+šs
+));
+
+539
+CG_ouutR•r
+*
+ gCG_suifBužd”
+::
+StmtLi¡Aµ’d
+(CG_ouutR•¸*
+li¡1
+,
+
+540
+CG_ouutR•r
+ *
+li¡2
+) const {
+
+541 iàÐ
+ gli¡2
+ =ð
+NULL
+ ) {
+
+542 
+li¡1
+;
+
+544 iàÐ
+ gli¡1
+ =ð
+NULL
+ ) {
+
+545 
+li¡2
+;
+
+548
+Œ“_node_li¡
+ *
+ gŠl1
+ =
+¡©ic_ÿ¡
+<
+CG_suifR•r
+ *>(
+li¡1
+)->
+Šl_
+;
+
+549
+Œ“_node_li¡
+ *
+ gŠl2
+ =
+¡©ic_ÿ¡
+<
+CG_suifR•r
+ *>(
+li¡2
+)->
+Šl_
+;
+
+550 ià(
+ gŠl2
+ =ð
+NULL
+)
+
+551
+Šl1
+->
+­³nd
+(
+Ãw
+
+Œ“_š¡r
+(
+¡©ic_ÿ¡
+<
+CG_suifR•r
+ *>(
+li¡2
+)->
+Ý_
+.
+š¡r
+()));
+
+553
+ gŠl1
+->
+­³nd
+(
+Šl2
+);
+
+555
+d–‘e
+
+ gli¡2
+;
+
+557 
+ gli¡1
+;
+
+565
+CG_ouutR•r
+*
+ gCG_suifBužd”
+::
+C»©eP¿gma
+(,
+
+566 cÚ¡
+¡d
+::
+¡ršg
+ &
+´agmaText
+) const {
+
+567 iàÐ
+´agmaText
+ =ð
+¡d
+::
+¡ršg
+("") ) {
+
+568 
+NULL
+;
+
+570
+š¡ruùiÚ
+ *
+ gšs
+ =
+Ãw
+
+š_¼r
+(
+io_mrk
+);
+
+571
+immed_li¡
+ *
+ giml
+ =
+Ãw
+ immed_list;
+
+572
+ giml
+->
+­³nd
+(
+immed
+(
+cÚ¡_ÿ¡
+<*>(
+´agmaText
+.
+c_¡r
+())));
+
+573
+ gšs
+->
+­³nd_ªnÙe
+(
+k_s2c_´agma
+,
+iml
+);
+
+574
+Œ“_node_li¡
+ *
+ gŠl
+ =
+Ãw
+ree_node_list;
+
+575
+ gŠl
+->
+­³nd
+(
+Ãw
+
+Œ“_š¡r
+(
+šs
+));
+
+576 
+Ãw
+
+CG_suifR•r
+(
+Šl
+);
+
+579
+CG_ouutR•r
+*
+ gCG_suifBužd”
+::
+C»©eDim3
+(
+immed
+
+v¬Name
+, immed
+¬g1
+, immed
+¬g2
+) const {
+
+580
+š¡ruùiÚ
+ *
+ gšs
+ =
+Ãw
+
+š_¼r
+(
+io_mrk
+);
+
+581
+immed_li¡
+ *
+ giml
+ =
+Ãw
+ immed_list;
+
+582
+ giml
+->
+­³nd
+(
+immed
+(
+v¬Name
+));
+
+583
+ giml
+->
+­³nd
+(
+¬g1
+);
+
+584
+ giml
+->
+­³nd
+(
+¬g2
+);
+
+585
+ gšs
+->
+­³nd_ªnÙe
+(
+k_cuda_dim3
+,
+iml
+);
+
+586
+Œ“_node_li¡
+ *
+ gŠl
+ =
+Ãw
+ree_node_list;
+
+587
+ gŠl
+->
+­³nd
+(
+Ãw
+
+Œ“_š¡r
+(
+šs
+));
+
+588 
+Ãw
+
+CG_suifR•r
+(
+Šl
+);
+
+591
+CG_ouutR•r
+*
+ gCG_suifBužd”
+::
+C»©eDim3
+(
+immed
+
+v¬Name
+, immed
+¬g1
+, immed
+¬g2
+, immed
+¬g3
+) const {
+
+592
+š¡ruùiÚ
+ *
+ gšs
+ =
+Ãw
+
+š_¼r
+(
+io_mrk
+);
+
+593
+immed_li¡
+ *
+ giml
+ =
+Ãw
+ immed_list;
+
+594
+ giml
+->
+­³nd
+(
+immed
+(
+v¬Name
+));
+
+595
+ giml
+->
+­³nd
+(
+¬g1
+);
+
+596
+ giml
+->
+­³nd
+(
+¬g2
+);
+
+597
+ giml
+->
+­³nd
+(
+¬g3
+);
+
+598
+ gšs
+->
+­³nd_ªnÙe
+(
+k_cuda_dim3
+,
+iml
+);
+
+599
+Œ“_node_li¡
+ *
+ gŠl
+ =
+Ãw
+ree_node_list;
+
+600
+ gŠl
+->
+­³nd
+(
+Ãw
+
+Œ“_š¡r
+(
+šs
+));
+
+601 
+Ãw
+
+CG_suifR•r
+(
+Šl
+);
+
+604
+CG_ouutR•r
+*
+ gCG_suifBužd”
+::
+C»©eK”Ãl
+(
+immed_li¡
+*
+iml
+) const {
+
+605
+š¡ruùiÚ
+ *
+šs
+ =
+Ãw
+
+š_¼r
+(
+io_mrk
+);
+
+606
+ gšs
+->
+­³nd_ªnÙe
+(
+k_cuda_k”Ãl
+,
+iml
+);
+
+607
+Œ“_node_li¡
+ *
+ gŠl
+ =
+Ãw
+ree_node_list;
+
+608
+ gŠl
+->
+­³nd
+(
+Ãw
+
+Œ“_š¡r
+(
+šs
+));
+
+609 
+Ãw
+
+CG_suifR•r
+(
+Šl
+);
+
+612
+ty³_node
+*
+ gCG_suifBužd”
+::
+ModifyTy³
+Ñy³_node*
+ba£
+, cÚ¡ *
+modif›r
+) const {
+
+613
+modif›r_ty³
+*
+ g»suÉ
+ =
+Ãw
+ modif›r_ty³(
+TYPE_NULL
+,
+ba£
+);
+
+614
+immed_li¡
+ *
+ giml
+ =
+Ãw
+ immed_list;
+
+615
+ giml
+->
+­³nd
+(
+immed
+((*)
+modif›r
+));
+
+616
+ g»suÉ
+->
+­³nd_ªnÙe
+(
+k_cuda_modif›r
+,
+iml
+);
+
+617 
+ g»suÉ
+;
+
+626
+boÞ
+
+sub¡™u‹
+(
+š¡ruùiÚ
+ *
+,
+v¬_sym
+ *
+sym
+,
+Ý”ªd
+
+ex´
+,
+ba£_symb
+ *
+) {
+
+627 ià(
+ gš
+ =ð
+NULL
+ ||
+sym
+ == NULL)
+
+628 
+çl£
+;
+
+630
+boÞ
+
+ gr
+ =
+çl£
+;
+
+631 
+ gi
+ = 0; i <
+ gš
+->
+num_¤cs
+(); i++) {
+
+632
+Ý”ªd
+
+(
+->
+¤c_Ý
+(
+i
+));
+
+634 ià(
+ gÝ
+.
+is_symbÞ
+(è&& op.
+symbÞ
+(è=ð
+sym
+) {
+
+635
+->
+£t_¤c_Ý
+(
+i
+,
+ex´
+.
+þÚe
+(
+));
+
+636
+ gr
+ =
+Œue
+;
+
+638 ià(
+ gÝ
+.
+is_š¡r
+()) {
+
+639
+ gr
+ =
+sub¡™u‹
+(
+.
+š¡r
+(),
+sym
+,
+ex´
+,
+) ||„;
+
+643 
+ gr
+;
+
+646
+boÞ
+
+sub¡™u‹
+(
+Œ“_node
+ *
+,
+v¬_sym
+ *
+sym
+,
+Ý”ªd
+
+ex´
+,
+ba£_symb
+ *
+) {
+
+647 ià(
+ gŠ
+ =ð
+NULL
+)
+
+648 
+çl£
+;
+
+650
+boÞ
+
+ gr
+ =
+çl£
+;
+
+651 ià(
+ gŠ
+->
+kšd
+(è=ð
+TREE_INSTR
+)
+
+652
+r
+ =
+sub¡™u‹
+(
+¡©ic_ÿ¡
+<
+Œ“_š¡r
+*>(
+)->
+š¡r
+(),
+sym
+,
+ex´
+,
+è||
+ gr
+;
+
+654 
+ gi
+ = 0; i <
+ gŠ
+->
+num_chžd_li¡s
+(); i++) {
+
+655
+ gr
+ =
+sub¡™u‹
+(
+->
+chžd_li¡_num
+(
+i
+),
+sym
+,
+ex´
+,
+) ||„;
+
+659 
+ gr
+;
+
+662
+boÞ
+
+sub¡™u‹
+(
+Œ“_node_li¡
+ *
+Šl
+,
+v¬_sym
+ *
+sym
+,
+Ý”ªd
+
+ex´
+,
+
+663
+ba£_symb
+ *
+) {
+
+664 ià(
+ gŠl
+ =ð
+NULL
+)
+
+665 
+çl£
+;
+
+667
+boÞ
+
+ gr
+ =
+çl£
+;
+
+668
+Œ“_node_li¡_™”
+
+™”
+(
+Šl
+);
+
+669 !
+ g™”
+.
+is_em±y
+()) {
+
+670
+Œ“_node
+ *
+ gŠ
+ =
+™”
+.
+¡•
+();
+
+672
+ gr
+ =
+sub¡™u‹
+(
+,
+sym
+,
+ex´
+,
+) ||„;
+
+675 
+ gr
+;
+
+ @CG_suifRepr.cc
+
+14 
+ ~<code_g’/CG_suifR•r.h
+>
+
+15 
+ ~<¡dio.h
+>
+
+17
+Çme¥aû
+
+ gomega
+ {
+
+19
+ gCG_suifR•r
+::
+CG_suifR•r
+():
+Šl_
+(
+NULL
+),
+Ý_
+() {
+
+22
+ gCG_suifR•r
+::
+CG_suifR•r
+(
+Œ“_node_li¡
+ *
+Šl
+):
+Šl_
+ÑÆ),
+Ý_
+() {
+
+25
+ gCG_suifR•r
+::
+CG_suifR•r
+(
+Ý”ªd
+
+):
+Šl_
+(
+NULL
+),
+Ý_
+(op) {
+
+28
+ gCG_suifR•r
+::~
+CG_suifR•r
+() {
+
+33
+CG_ouutR•r
+*
+CG_suifR•r
+::
+þÚe
+() {
+
+34 ià(!
+Ý_
+.
+is_nuÎ
+() ) {
+
+35
+Ý”ªd
+
+ =
+Ý_
+.
+þÚe
+();
+
+36 
+Ãw
+
+CG_suifR•r
+(
+);
+
+38 ià(
+ gŠl_
+ !ð
+NULL
+) {
+
+39
+Œ“_node_li¡
+ *
+Šl
+ =
+Šl_
+->
+þÚe
+();
+
+40 
+Ãw
+
+CG_suifR•r
+(
+Šl
+);
+
+43 
+Ãw
+
+CG_suifR•r
+();
+
+46 
+ gCG_suifR•r
+::
+þ—r
+() {
+
+47 ià(!
+Ý_
+.
+is_nuÎ
+()) {
+
+48 ià(
+Ý_
+.
+is_š¡r
+())
+
+49
+d–‘e
+
+Ý_
+.
+š¡r
+();
+
+50
+ gÝ_
+.
+£t_nuÎ
+();
+
+52 ià(
+ gŠl_
+ !ð
+NULL
+) {
+
+53
+d–‘e
+
+Šl_
+;
+
+54
+ gŠl_
+ =
+NULL
+;
+
+58
+Œ“_node_li¡
+*
+ gCG_suifR•r
+::
+G‘Code
+() const {
+
+59 
+Šl_
+;
+
+62
+Ý”ªd
+
+ gCG_suifR•r
+::
+G‘Ex´essiÚ
+() const {
+
+63 
+Ý_
+;
+
+66 
+ gCG_suifR•r
+::
+Dump
+() const {
+
+67 ià(
+Šl_
+ !ð
+NULL
+)
+
+68
+Šl_
+->
+´št
+();
+
+69 ià(!
+ gÝ_
+.
+is_nuÎ
+())
+
+70
+ gÝ_
+.
+´št
+();
+
+73 
+ gCG_suifR•r
+::
+DumpToFže
+(
+FILE
+ *
+) const {
+
+74 ià(
+Šl_
+ !ð
+NULL
+)
+
+75
+Šl_
+->
+´št
+(
+);
+
+76 ià(!
+ gÝ_
+.
+is_nuÎ
+())
+
+77
+ gÝ_
+.
+´št
+(
+);
+
+ @code_gen.cc
+
+16 
+ ~<omega.h
+>
+
+17 
+ ~<omega/R–_m­.h
+>
+
+18 
+ ~<basic/CÞËùiÚ.h
+>
+
+19 
+ ~<basic/Bag.h
+>
+
+20 
+ ~<basic/M­.h
+>
+
+21 
+ ~<basic/utž.h
+>
+
+22 
+ ~<basic/omega_”rÜ.h
+>
+
+23 
+ ~<m©h.h
+>
+
+24 
+ ~<veùÜ
+>
+
+26 
+ ~<code_g’/CG.h
+>
+
+27 
+ ~<code_g’/code_g’.h
+>
+
+28 
+ ~<code_g’/CG_ouutBužd”.h
+>
+
+29 
+ ~<code_g’/CG_ouutR•r.h
+>
+
+30 
+ ~<code_g’/CG_¡ršgBužd”.h
+>
+
+31 
+ ~<code_g’/CG_¡ršgR•r.h
+>
+
+32 
+ ~<code_g’/ouut_»´.h
+>
+
+34
+Çme¥aû
+
+ gomega
+ {
+
+37 
+ gÏ¡_Ëv–
+;
+
+38
+S‘Tu¶e
+
+ gÃw_IS
+;
+
+39
+S‘Tu¶eTu¶e
+
+ g´ojeùed_nIS
+;
+
+40
+ gTu¶e
+<
+ gCG_ouutR•r
+ *>
+ g¡©em’tInfo
+;
+
+41
+R–Tu¶e
+
+ gŒªsfÜm©iÚs
+;
+
+44
+ gTu¶e
+< Tu¶e<> >
+ gsmtNÚS¶™Lev–s
+;
+
+45
+ gTu¶e
+< Tu¶e<
+ g¡d
+::
+¡ršg
+> >
+loÝIdxNames
+;
+
+46
+ g¡d
+::
+veùÜ
+<
+¡d
+::
+·œ
+<, std::
+¡ršg
+> >
+syncs
+;
+
+51 
+ gcheckLoÝLev–
+;
+
+52 
+ g¡mtFÜLoÝCheck
+;
+
+53 
+ guµ”BoundFÜLev–
+;
+
+54 
+ glow”BoundFÜLev–
+;
+
+55
+boÞ
+
+ gfžlInBounds
+;
+
+58 þas 
+ cJunkSticIn™
+{
+ gpublic
+:
+JunkSticIn™
+(){
+checkLoÝLev–
+=0;
+ gfžlInBounds
+=
+çl£
+;} };
+
+59 
+JunkSticIn™
+
+ gjunkIn™In¡ªû__
+;
+
+64
+CG_»suÉ
+ *
+g’_»cursive
+(
+Ëv–
+,
+IÁTu¶e
+ &
+isAùive
+);
+
+67 
+ gcode_g’_debug
+=0;
+
+70
+S‘Tu¶e
+
+ $fž‹r_funùiÚ_symbÞs
+(
+S‘Tu¶e
+ &
+£ts
+,
+boÞ
+
+k“p_fs
+){
+
+71
+S‘Tu¶e
+
+ `Ãw_£ts
+(
+£ts
+.
+ `size
+());
+
+72 
+i
+ = 1; i <ð
+£ts
+.
+ `size
+(); i++) {
+
+73
+R–©iÚ
+
+R
+ =
+£ts
+[
+i
+];
+
+74
+R–©iÚ
+ &
+S
+ =
+Ãw_£ts
+[
+i
+];
+
+75
+ `as£¹
+(
+R
+.
+ `is_£t
+());
+
+77
+S
+ =
+ `R–©iÚ
+(
+R
+.
+ `n_£t
+());
+
+78
+S
+.
+ `cÝy_Çmes
+(
+R
+);
+
+79
+F_Exi¡s
+ *
+ =
+S
+.
+ `add_exi¡s
+();
+
+80
+F_Or
+ *
+fo
+ =
+->
+ `add_Ü
+();
+
+81 
+DNF_I‹¿tÜ
+
+ `D
+(
+R
+.
+ `qu”y_DNF
+());
+D
+; D++) {
+
+82
+F_And
+ *
+ =
+fo
+->
+ `add_ªd
+();
+
+83
+V¬ŸbË_ID_Tu¶e
+ &
+Þdloÿls
+ = (*
+D
+)->
+ `loÿls
+();
+
+84
+SeùiÚ
+<
+V¬ŸbË_ID
+>
+Ãwloÿls
+ =
+->
+ `deþ¬e_tu¶e
+(
+Þdloÿls
+.
+ `size
+());
+
+91 
+EQ_I‹¿tÜ
+
+ `e
+(*
+D
+);
+e
+;ƒ++)
+
+92 if((
+ `max_fs_ªy
+(*
+e
+è> 0è=ð
+k“p_fs
+){
+
+93
+EQ_HªdË
+
+n
+ =
+->
+ `add_EQ
+();
+
+94 
+CÚ¡r_V¬s_I‹r
+
+ `cvi
+(*
+e
+,
+çl£
+);
+cvi
+;cvi++)
+
+95 if((*
+cvi
+).
+v¬
+->
+ `kšd
+(è=ð
+Wždÿrd_V¬
+)
+
+96
+n
+.
+ `upd©e_cÛf
+(
+Ãwloÿls
+[
+Þdloÿls
+.
+ `šdex
+((*
+cvi
+).
+v¬
+)],
+
+97 (*
+cvi
+).
+cÛf
+);
+
+99 if((*
+cvi
+).
+v¬
+->
+ `kšd
+(è=ð
+Glob®_V¬
+)
+
+100
+n
+.
+ `upd©e_cÛf
+(
+S
+.
+ `g‘_loÿl
+((*
+cvi
+).
+v¬
+->
+ `g‘_glob®_v¬
+(),
+
+101 (*
+cvi
+).
+v¬
+->
+ `funùiÚ_of
+()),
+
+102 (*
+cvi
+).
+cÛf
+);
+
+104
+n
+.
+ `upd©e_cÛf
+((*
+cvi
+).
+v¬
+,(*cvi).
+cÛf
+);
+
+105
+n
+.
+ `upd©e_cÚ¡
+((*
+e
+).
+ `g‘_cÚ¡
+());
+
+106
+n
+.
+ `fš®ize
+();
+
+109 
+GEQ_I‹¿tÜ
+
+ `g
+(*
+D
+);
+g
+; g++)
+
+110 if((
+ `max_fs_ªy
+(*
+g
+è> 0è=ð
+k“p_fs
+) {
+
+111
+GEQ_HªdË
+
+n
+ =
+->
+ `add_GEQ
+();
+
+112 
+CÚ¡r_V¬s_I‹r
+
+ `cvi
+(*
+g
+,
+çl£
+);
+cvi
+;cvi++)
+
+113 if((*
+cvi
+).
+v¬
+->
+ `kšd
+(è=ð
+Wždÿrd_V¬
+)
+
+114
+n
+.
+ `upd©e_cÛf
+(
+Ãwloÿls
+[
+Þdloÿls
+.
+ `šdex
+((*
+cvi
+).
+v¬
+)],
+
+115 (*
+cvi
+).
+cÛf
+);
+
+117 if((*
+cvi
+).
+v¬
+->
+ `kšd
+(è=ð
+Glob®_V¬
+)
+
+118
+n
+.
+ `upd©e_cÛf
+(
+S
+.
+ `g‘_loÿl
+((*
+cvi
+).
+v¬
+->
+ `g‘_glob®_v¬
+(),
+
+119 (*
+cvi
+).
+v¬
+->
+ `funùiÚ_of
+()),
+
+120 (*
+cvi
+).
+cÛf
+);
+
+122
+n
+.
+ `upd©e_cÛf
+((*
+cvi
+).
+v¬
+,(*cvi).
+cÛf
+);
+
+123
+n
+.
+ `upd©e_cÚ¡
+((*
+g
+).
+ `g‘_cÚ¡
+());
+
+124
+n
+.
+ `fš®ize
+();
+
+127
+S
+.
+ `fš®ize
+();
+
+130 
+Ãw_£ts
+;
+
+131
+ }
+}
+
+134
+R–Tu¶e
+
+ $¡r_funùiÚ_symbÞs
+(
+S‘Tu¶e
+ &
+£ts
+) {
+
+135 
+ `fž‹r_funùiÚ_symbÞs
+(
+£ts
+,
+çl£
+);
+
+136
+ }
+}
+
+138
+R–Tu¶e
+
+ $exŒaù_funùiÚ_symbÞs
+(
+S‘Tu¶e
+ &
+£ts
+) {
+
+139 
+ `fž‹r_funùiÚ_symbÞs
+(
+£ts
+,
+Œue
+);
+
+140
+ }
+}
+
+143
+ g¡d
+::
+¡ršg
+
+ $MMG’”©eCode
+(
+R–Tu¶e
+ &
+T
+,
+S‘Tu¶e
+ &
+Þd_IS
+,
+R–©iÚ
+ &
+known
+, 
+effÜt
+) {
+
+144
+Tu¶e
+<
+CG_ouutR•r
+ *>
+ÇmeInfo
+;
+
+145 
+¡mt
+ = 1; stmˆ<ð
+T
+.
+ `size
+(); stmt++)
+
+146
+ÇmeInfo
+.
+ `­³nd
+(
+Ãw
+
+ `CG_¡ršgR•r
+("s" +
+ `to_¡ršg
+(
+¡mt
+)));
+
+148
+CG_¡ršgBužd”
+
+ocg
+;
+
+149
+CG_¡ršgR•r
+ *
+sR•r
+ =
+¡©ic_ÿ¡
+<CG_¡ršgR•¸*>(
+ `MMG’”©eCode
+(&
+ocg
+,
+T
+,
+Þd_IS
+,
+ÇmeInfo
+,
+known
+,
+effÜt
+));
+
+151 
+i
+ = 1; i <ð
+ÇmeInfo
+.
+ `size
+(); i++)
+
+152
+d–‘e
+
+ÇmeInfo
+[
+i
+];
+
+153 ià(
+sR•r
+ !ð
+NULL
+)
+
+154 
+ `G‘SŒšg
+(
+sR•r
+);
+
+156 
+¡d
+::
+ `¡ršg
+();
+
+157
+ }
+}
+
+163
+CG_ouutR•r
+*
+MMG’”©eCode
+(
+CG_ouutBužd”
+*
+ocg
+,
+R–Tu¶e
+ &
+T
+,
+S‘Tu¶e
+ &
+Þd_IS
+, cÚ¡
+Tu¶e
+<CG_ouutR•¸*> &
+¡mt_cÚ‹Á
+,
+R–©iÚ
+ &
+known
+, 
+effÜt
+) {
+
+164 
+ g¡mts
+ =
+T
+.
+size
+();
+
+165 ià(
+ g¡mts
+ == 0)
+
+166 
+ocg
+->
+C»©eComm’t
+(1, "No statements found!");
+
+167 ià(!
+ gknown
+.
+is_nuÎ
+())
+
+168
+ gknown
+.
+sim¶ify
+();
+
+171 
+ gmaxStmt
+ = 1;
+
+172
+ gÏ¡_Ëv–
+ = 0;
+
+173 
+ g¡mt
+ = 1; stmˆ<ð
+¡mts
+; stmt++) {
+
+174 
+ gÞd_dim
+ =
+T
+[
+¡mt
+].
+n_out
+();
+
+175 ià(
+ gÞd_dim
+ >
+ gÏ¡_Ëv–
+)
+
+176
+ gÏ¡_Ëv–
+ =
+Þd_dim
+;
+
+178 
+ gi
+ = 1; i <ð
+Þd_IS
+[
+¡mt
+].
+n_£t
+(); i++)
+
+179
+ gT
+[
+¡mt
+].
+Çme_šput_v¬
+(
+i
+,
+Þd_IS
+[¡mt].
+£t_v¬
+(i)->
+Çme
+());
+
+180 
+ gi
+ = 1; i <ð
+Þd_dim
+; i++)
+
+181
+ gT
+[
+¡mt
+].
+Çme_ouut_v¬
+(
+i
+,
+¡d
+::
+¡ršg
+("t")+
+to_¡ršg
+(i));
+
+182
+ gT
+[
+¡mt
+].
+£tup_Çmes
+();
+
+184
+R–©iÚ
+
+ gR
+ =
+Rªge
+(
+Re¡riù_Domaš
+(
+cÝy
+(
+T
+[
+¡mt
+]), cÝy(
+Þd_IS
+[stmt])));
+
+185
+ gR
+.
+sim¶ify
+();
+
+186 
+ gR
+.
+is_uµ”_bound_§tisfŸbË
+()) {
+
+187
+ gÃw_IS
+.
+»®loÿ‹
+(
+maxStmt
+);
+
+188
+ gŒªsfÜm©iÚs
+.
+»®loÿ‹
+(
+maxStmt
+);
+
+189
+ g¡©em’tInfo
+.
+»®loÿ‹
+(
+maxStmt
+);
+
+190
+DNF
+ *
+ gdnf
+ =
+R
+.
+qu”y_DNF
+();
+
+191
+DNF_I‹¿tÜ
+
+c
+(
+dnf
+);
+
+192
+R–©iÚ
+
+ gR2
+ = R–©iÚ(
+R
+, *
+c
+);
+
+193
+ gR2
+.
+sim¶ify
+();
+
+194 ià(
+ gR2
+.
+is_šexaù
+())
+
+195
+throw
+
+codeg’_”rÜ
+("unknown constraint in†oop bounds");
+
+196 ià(
+ gknown
+.
+is_nuÎ
+()) {
+
+197
+ gÃw_IS
+[
+maxStmt
+] =
+R2
+;
+
+198
+ gŒªsfÜm©iÚs
+[
+maxStmt
+] =
+T
+[
+¡mt
+];
+
+199
+ g¡©em’tInfo
+[
+maxStmt
+] =
+¡mt_cÚ‹Á
+[
+¡mt
+];
+
+200
+ gmaxStmt
+++;
+
+203
+R–©iÚ
+
+ gR2_ex‹nded
+ =
+cÝy
+(
+R2
+);
+
+204
+R–©iÚ
+
+ gknown_ex‹nded
+ =
+cÝy
+(
+known
+);
+
+205 ià(
+ gR2
+.
+n_£t
+(è>
+ gknown
+.n_set())
+
+206
+ gknown_ex‹nded
+ =
+Ex‹nd_S‘
+(
+known_ex‹nded
+,
+R2
+.
+n_£t
+()-
+known
+.n_set());
+
+207 ià(
+ gR2
+.
+n_£t
+(è<
+ gknown
+.n_set())
+
+208
+ gR2_ex‹nded
+ =
+Ex‹nd_S‘
+(
+R2_ex‹nded
+,
+known
+.
+n_£t
+()-
+R2
+.n_set());
+
+209 ià(
+IÁ”£ùiÚ
+(
+R2_ex‹nded
+,
+known_ex‹nded
+).
+is_uµ”_bound_§tisfŸbË
+()) {
+
+210
+ gÃw_IS
+[
+maxStmt
+] =
+R2
+;
+
+211
+ gŒªsfÜm©iÚs
+[
+maxStmt
+] =
+T
+[
+¡mt
+];
+
+212
+ g¡©em’tInfo
+[
+maxStmt
+] =
+¡mt_cÚ‹Á
+[
+¡mt
+];
+
+213
+ gmaxStmt
+++;
+
+216
+ gc
+.
+Ãxt
+();
+
+217 ià(!
+ gc
+.
+live
+())
+
+219 if(
+ gcode_g’_debug
+) {
+
+220
+årštf
+(
+DebugFže
+, "splitting iteration space for disjoint form\n");
+
+221
+årštf
+(
+DebugFže
+, "Original iteration space: \n");
+
+222
+ gR
+.
+´št_w™h_subs
+(
+DebugFže
+);
+
+223
+årštf
+(
+DebugFže
+, "First conjunct: \n");
+
+224
+ gR2
+.
+´št_w™h_subs
+(
+DebugFže
+);
+
+226
+R–©iÚ
+
+»mašd”
+(
+R
+, *
+c
+);
+
+227
+ gc
+.
+Ãxt
+();
+
+228 
+ gc
+.
+live
+()) {
+
+229
+ g»mašd”
+ =
+UniÚ
+(
+»mašd”
+,
+R–©iÚ
+(
+R
+, *
+c
+));
+
+230
+ gc
+.
+Ãxt
+();
+
+232
+ gR
+ =
+Difã»nû
+(
+»mašd”
+,
+cÝy
+(
+R2
+));
+
+233
+ gR
+.
+sim¶ify
+();
+
+234 if(
+ gcode_g’_debug
+) {
+
+235
+årštf
+(
+DebugFže
+, "Remaining iteration space: \n");
+
+236
+ gR
+.
+´št_w™h_subs
+(
+DebugFže
+);
+
+242
+ g¡mts
+ =
+maxStmt
+-1;
+
+243 if(
+ g¡mts
+ == 0)
+
+244 
+ocg
+->
+C»©eComm’t
+(1, "No…oints in‡ny ofhe iteration spaces!");
+
+247 
+ g¡mt
+ = 1; stmˆ<ð
+¡mts
+; stmt++) {
+
+248 
+ gÞd_dim
+ =
+Ãw_IS
+[
+¡mt
+].
+n_£t
+();
+
+249 ià(
+ gÞd_dim
+ <
+ gÏ¡_Ëv–
+) {
+
+250
+ gÃw_IS
+[
+¡mt
+] =
+Ex‹nd_S‘
+(
+Ãw_IS
+[¡mt],
+Ï¡_Ëv–
+-
+Þd_dim
+);
+
+251
+F_And
+ *
+ gf_roÙ
+ =
+Ãw_IS
+[
+¡mt
+].
+ªd_w™h_ªd
+();
+
+252 
+ gi
+ =
+Þd_dim
++1; i <ð
+Ï¡_Ëv–
+; i++) {
+
+253
+EQ_HªdË
+
+ gh
+ =
+f_roÙ
+->
+add_EQ
+();
+
+254
+ gh
+.
+upd©e_cÛf
+(
+Ãw_IS
+[
+¡mt
+].
+£t_v¬
+(
+i
+), 1);
+
+255
+ gh
+.
+upd©e_cÚ¡
+(
+posInfš™y
+);
+
+261 if(
+ gknown
+.
+is_nuÎ
+()) {
+
+262
+ gknown
+ =
+R–©iÚ
+::
+True
+(
+Ï¡_Ëv–
+);
+
+264
+ gknown
+ =
+Ex‹nd_S‘
+(
+known
+,
+Ï¡_Ëv–
+-known.
+n_£t
+());
+
+265 
+ gi
+ = 1; i <ð
+Ï¡_Ëv–
+; i++)
+
+266
+ gknown
+.
+Çme_£t_v¬
+(
+i
+,
+¡d
+::
+¡ršg
+("t")+
+to_¡ršg
+(i));
+
+267
+ gknown
+.
+£tup_Çmes
+();
+
+270
+ g´ojeùed_nIS
+.
+þ—r
+();
+
+271
+ g´ojeùed_nIS
+.
+»®loÿ‹
+(
+Ï¡_Ëv–
+);
+
+272 
+ gi
+ = 1; i <ð
+Ï¡_Ëv–
+; i++ ) {
+
+273
+ g´ojeùed_nIS
+[
+i
+].
+»®loÿ‹
+(
+¡mts
+);
+
+275 
+ g¡mt
+ = 1; stmˆ<ð
+¡mts
+; stmt++) {
+
+276 ià(
+ gÏ¡_Ëv–
+ > 0)
+
+277
+ g´ojeùed_nIS
+[
+Ï¡_Ëv–
+][
+¡mt
+] =
+Ãw_IS
+[stmt];
+
+278 
+ gi
+ =
+Ï¡_Ëv–
+-1; i >= 1; i--) {
+
+279
+ g´ojeùed_nIS
+[
+i
+][
+¡mt
+] =
+Projeù
+(
+cÝy
+(
+´ojeùed_nIS
+[i+1][¡mt]), i+1,
+S‘_V¬
+);
+
+280
+ g´ojeùed_nIS
+[
+i
+][
+¡mt
+].
+sim¶ify
+();
+
+285
+IÁTu¶e
+
+®lStmts
+(
+¡mts
+);
+
+286 
+ gi
+ = 1; i <ð
+¡mts
+; i++)
+
+287
+ g®lStmts
+[
+i
+] = 1;
+
+288
+CG_»suÉ
+ *
+ gcg
+ =
+g’_»cursive
+(1,
+®lStmts
+);
+
+291
+ gcg
+ =
+cg
+->
+»compu‹
+(
+known
+, known);
+
+292
+ gcg
+ =
+cg
+->
+fÜû_fš™e_bounds
+();
+
+295 
+ gi
+ = 1; i <ð
+mš
+(
+effÜt
+,
+cg
+->
+d•th
+()); i++)
+
+296
+ gcg
+ =
+cg
+->
+liáOv”h—d
+(
+i
+);
+
+299
+ gcg
+->
+hoi¡Gu¬d
+();
+
+303
+CG_ouutR•r
+*
+ gsR•r
+ =
+cg
+->
+´štR•r
+(
+ocg
+, 1,
+¡d
+::
+veùÜ
+<CG_ouutR•¸*>(
+Ï¡_Ëv–
+));
+
+304
+d–‘e
+
+ gcg
+;
+
+305
+ gcg
+ =
+NULL
+;
+
+306
+ g´ojeùed_nIS
+.
+þ—r
+();
+
+307
+ gŒªsfÜm©iÚs
+.
+þ—r
+();
+
+308
+ gÃw_IS
+.
+þ—r
+();
+
+310 
+ gsR•r
+;
+
+314
+CG_ouutR•r
+*
+MMG’”©eCode
+(
+CG_ouutBužd”
+*
+ocg
+,
+R–Tu¶e
+ &
+T
+,
+S‘Tu¶e
+ &
+Þd_IS
+,
+
+315 cÚ¡
+Tu¶e
+<
+CG_ouutR•r
+ *> &
+¡mt_cÚ‹Á
+,
+R–©iÚ
+ &
+known
+,
+
+316
+Tu¶e
+<
+IÁTu¶e
+ >&
+smtNÚS¶™Lev–s_
+,
+
+317
+¡d
+::
+veùÜ
+< std::
+·œ
+<, std::
+¡ršg
+> >
+syncs_
+,
+
+318 cÚ¡
+Tu¶e
+< Tu¶e<
+¡d
+::
+¡ršg
+> >&
+loÝIdxNames_
+,
+
+319 
+effÜt
+) {
+
+320 
+ g¡mts
+ =
+T
+.
+size
+();
+
+321 ià(
+ g¡mts
+ == 0)
+
+322 
+ocg
+->
+C»©eComm’t
+(1, "No statements found!");
+
+323 ià(!
+ gknown
+.
+is_nuÎ
+())
+
+324
+ gknown
+.
+sim¶ify
+();
+
+328
+ gsmtNÚS¶™Lev–s
+ =
+smtNÚS¶™Lev–s_
+;
+
+329
+ gsyncs
+ =
+syncs_
+;
+
+330
+ gloÝIdxNames
+ =
+loÝIdxNames_
+;
+
+336 
+ gmaxStmt
+ = 1;
+
+337
+ gÏ¡_Ëv–
+ = 0;
+
+338 
+ g¡mt
+ = 1; stmˆ<ð
+¡mts
+; stmt++) {
+
+339 
+ gÞd_dim
+ =
+T
+[
+¡mt
+].
+n_out
+();
+
+340 ià(
+ gÞd_dim
+ >
+ gÏ¡_Ëv–
+)
+
+341
+ gÏ¡_Ëv–
+ =
+Þd_dim
+;
+
+343 
+ gi
+ = 1; i <ð
+Þd_IS
+[
+¡mt
+].
+n_£t
+(); i++)
+
+344
+ gT
+[
+¡mt
+].
+Çme_šput_v¬
+(
+i
+,
+Þd_IS
+[¡mt].
+£t_v¬
+(i)->
+Çme
+());
+
+345 
+ gi
+ = 1; i <ð
+Þd_dim
+; i++)
+
+346
+ gT
+[
+¡mt
+].
+Çme_ouut_v¬
+(
+i
+,
+¡d
+::
+¡ršg
+("t")+
+to_¡ršg
+(i));
+
+347
+ gT
+[
+¡mt
+].
+£tup_Çmes
+();
+
+349
+R–©iÚ
+
+ gR
+ =
+Rªge
+(
+Re¡riù_Domaš
+(
+cÝy
+(
+T
+[
+¡mt
+]), cÝy(
+Þd_IS
+[stmt])));
+
+350
+ gR
+.
+sim¶ify
+();
+
+351 
+ gR
+.
+is_uµ”_bound_§tisfŸbË
+()) {
+
+352
+ gÃw_IS
+.
+»®loÿ‹
+(
+maxStmt
+);
+
+353
+ gŒªsfÜm©iÚs
+.
+»®loÿ‹
+(
+maxStmt
+);
+
+354
+ g¡©em’tInfo
+.
+»®loÿ‹
+(
+maxStmt
+);
+
+357
+ gsmtNÚS¶™Lev–s
+.
+»®loÿ‹
+(
+maxStmt
+);
+
+361
+DNF
+ *
+ gdnf
+ =
+R
+.
+qu”y_DNF
+();
+
+362
+DNF_I‹¿tÜ
+
+c
+(
+dnf
+);
+
+363
+R–©iÚ
+
+ gR2
+ = R–©iÚ(
+R
+, *
+c
+);
+
+364
+ gR2
+.
+sim¶ify
+();
+
+365 ià(
+ gR2
+.
+is_šexaù
+())
+
+366
+throw
+
+codeg’_”rÜ
+("unknown constraint in†oop bounds");
+
+367 ià(
+ gknown
+.
+is_nuÎ
+()) {
+
+368
+ gÃw_IS
+[
+maxStmt
+] =
+R2
+;
+
+369
+ gŒªsfÜm©iÚs
+[
+maxStmt
+] =
+T
+[
+¡mt
+];
+
+370
+ g¡©em’tInfo
+[
+maxStmt
+] =
+¡mt_cÚ‹Á
+[
+¡mt
+];
+
+371
+ gmaxStmt
+++;
+
+374
+R–©iÚ
+
+ gR2_ex‹nded
+ =
+cÝy
+(
+R2
+);
+
+375
+R–©iÚ
+
+ gknown_ex‹nded
+ =
+cÝy
+(
+known
+);
+
+376 ià(
+ gR2
+.
+n_£t
+(è>
+ gknown
+.n_set())
+
+377
+ gknown_ex‹nded
+ =
+Ex‹nd_S‘
+(
+known_ex‹nded
+,
+R2
+.
+n_£t
+()-
+known
+.n_set());
+
+378 ià(
+ gR2
+.
+n_£t
+(è<
+ gknown
+.n_set())
+
+379
+ gR2_ex‹nded
+ =
+Ex‹nd_S‘
+(
+R2_ex‹nded
+,
+known
+.
+n_£t
+()-
+R2
+.n_set());
+
+380 ià(
+IÁ”£ùiÚ
+(
+R2_ex‹nded
+,
+known_ex‹nded
+).
+is_uµ”_bound_§tisfŸbË
+()) {
+
+381
+ gÃw_IS
+[
+maxStmt
+] =
+R2
+;
+
+382
+ gŒªsfÜm©iÚs
+[
+maxStmt
+] =
+T
+[
+¡mt
+];
+
+383
+ g¡©em’tInfo
+[
+maxStmt
+] =
+¡mt_cÚ‹Á
+[
+¡mt
+];
+
+384
+ gmaxStmt
+++;
+
+387
+ gc
+.
+Ãxt
+();
+
+388 ià(!
+ gc
+.
+live
+())
+
+390 if(
+ gcode_g’_debug
+) {
+
+391
+årštf
+(
+DebugFže
+, "splitting iteration space for disjoint form\n");
+
+392
+årštf
+(
+DebugFže
+, "Original iteration space: \n");
+
+393
+ gR
+.
+´št_w™h_subs
+(
+DebugFže
+);
+
+394
+årštf
+(
+DebugFže
+, "First conjunct: \n");
+
+395
+ gR2
+.
+´št_w™h_subs
+(
+DebugFže
+);
+
+397
+R–©iÚ
+
+»mašd”
+(
+R
+, *
+c
+);
+
+398
+ gc
+.
+Ãxt
+();
+
+399 
+ gc
+.
+live
+()) {
+
+400
+ g»mašd”
+ =
+UniÚ
+(
+»mašd”
+,
+R–©iÚ
+(
+R
+, *
+c
+));
+
+401
+ gc
+.
+Ãxt
+();
+
+403
+ gR
+ =
+Difã»nû
+(
+»mašd”
+,
+cÝy
+(
+R2
+));
+
+404
+ gR
+.
+sim¶ify
+();
+
+405 if(
+ gcode_g’_debug
+) {
+
+406
+årštf
+(
+DebugFže
+, "Remaining iteration space: \n");
+
+407
+ gR
+.
+´št_w™h_subs
+(
+DebugFže
+);
+
+413
+ g¡mts
+ =
+maxStmt
+-1;
+
+414 if(
+ g¡mts
+ == 0)
+
+415 
+ocg
+->
+C»©eComm’t
+(1, "No…oints in‡ny ofhe iteration spaces!");
+
+418 
+ g¡mt
+ = 1; stmˆ<ð
+¡mts
+; stmt++) {
+
+419 
+ gÞd_dim
+ =
+Ãw_IS
+[
+¡mt
+].
+n_£t
+();
+
+420 ià(
+ gÞd_dim
+ <
+ gÏ¡_Ëv–
+) {
+
+421
+ gÃw_IS
+[
+¡mt
+] =
+Ex‹nd_S‘
+(
+Ãw_IS
+[¡mt],
+Ï¡_Ëv–
+-
+Þd_dim
+);
+
+422
+F_And
+ *
+ gf_roÙ
+ =
+Ãw_IS
+[
+¡mt
+].
+ªd_w™h_ªd
+();
+
+423 
+ gi
+ =
+Þd_dim
++1; i <ð
+Ï¡_Ëv–
+; i++) {
+
+424
+EQ_HªdË
+
+ gh
+ =
+f_roÙ
+->
+add_EQ
+();
+
+425
+ gh
+.
+upd©e_cÛf
+(
+Ãw_IS
+[
+¡mt
+].
+£t_v¬
+(
+i
+), 1);
+
+426
+ gh
+.
+upd©e_cÚ¡
+(
+posInfš™y
+);
+
+432 if(
+ gknown
+.
+is_nuÎ
+()) {
+
+433
+ gknown
+ =
+R–©iÚ
+::
+True
+(
+Ï¡_Ëv–
+);
+
+435
+ gknown
+ =
+Ex‹nd_S‘
+(
+known
+,
+Ï¡_Ëv–
+-known.
+n_£t
+());
+
+436 
+ gi
+ = 1; i <ð
+Ï¡_Ëv–
+; i++)
+
+437
+ gknown
+.
+Çme_£t_v¬
+(
+i
+,
+¡d
+::
+¡ršg
+("t")+
+to_¡ršg
+(i));
+
+438
+ gknown
+.
+£tup_Çmes
+();
+
+441
+ g´ojeùed_nIS
+.
+þ—r
+();
+
+442
+ g´ojeùed_nIS
+.
+»®loÿ‹
+(
+Ï¡_Ëv–
+);
+
+443 
+ gi
+ = 1; i <ð
+Ï¡_Ëv–
+; i++ ) {
+
+444
+ g´ojeùed_nIS
+[
+i
+].
+»®loÿ‹
+(
+¡mts
+);
+
+446 
+ g¡mt
+ = 1; stmˆ<ð
+¡mts
+; stmt++) {
+
+447 ià(
+ gÏ¡_Ëv–
+ > 0)
+
+448
+ g´ojeùed_nIS
+[
+Ï¡_Ëv–
+][
+¡mt
+] =
+Ãw_IS
+[stmt];
+
+449 
+ gi
+ =
+Ï¡_Ëv–
+-1; i >= 1; i--) {
+
+450
+ g´ojeùed_nIS
+[
+i
+][
+¡mt
+] =
+Projeù
+(
+cÝy
+(
+´ojeùed_nIS
+[i+1][¡mt]), i+1,
+S‘_V¬
+);
+
+451
+ g´ojeùed_nIS
+[
+i
+][
+¡mt
+].
+sim¶ify
+();
+
+456
+IÁTu¶e
+
+®lStmts
+(
+¡mts
+);
+
+457 
+ gi
+ = 1; i <ð
+¡mts
+; i++)
+
+458
+ g®lStmts
+[
+i
+] = 1;
+
+459
+CG_»suÉ
+ *
+ gcg
+ =
+g’_»cursive
+(1,
+®lStmts
+);
+
+462
+ gcg
+ =
+cg
+->
+»compu‹
+(
+known
+, known);
+
+463
+ gcg
+ =
+cg
+->
+fÜû_fš™e_bounds
+();
+
+466 
+ gi
+ = 1; i <ð
+mš
+(
+effÜt
+,
+cg
+->
+d•th
+()); i++)
+
+467
+ gcg
+ =
+cg
+->
+liáOv”h—d
+(
+i
+);
+
+470
+ gcg
+->
+hoi¡Gu¬d
+();
+
+474
+CG_ouutR•r
+*
+ gsR•r
+ =
+cg
+->
+´štR•r
+(
+ocg
+, 1,
+¡d
+::
+veùÜ
+<CG_ouutR•¸*>(
+Ï¡_Ëv–
+ ));
+
+475
+d–‘e
+
+ gcg
+;
+
+476
+ gcg
+ =
+NULL
+;
+
+477
+ g´ojeùed_nIS
+.
+þ—r
+();
+
+478
+ gŒªsfÜm©iÚs
+.
+þ—r
+();
+
+479
+ gÃw_IS
+.
+þ—r
+();
+
+481 
+ gsR•r
+;
+
+484
+CG_»suÉ
+ *
+ $g’_»cursive
+(
+Ëv–
+,
+IÁTu¶e
+ &
+isAùive
+) {
+
+485 
+¡mts
+ =
+isAùive
+.
+ `size
+();
+
+487
+S‘
+<>
+aùive
+;
+
+488 
+s
+;
+
+489 
+s
+ = 1; s <ð
+¡mts
+; s++)
+
+490 if(
+isAùive
+[
+s
+]è
+aùive
+.
+ `š£¹
+(s);
+
+492
+ `as£¹
+ (
+aùive
+.
+ `size
+() >= 1);
+
+493 if(
+Ëv–
+ >
+Ï¡_Ëv–
+è
+Ãw
+
+ `CG_Ëaf
+(
+isAùive
+);
+
+495 ià(
+aùive
+.
+ `size
+() == 1)
+
+496 
+Ãw
+
+ `CG_loÝ
+(
+isAùive
+,
+Ëv–
+,
+ `g’_»cursive
+(level+1,isActive));
+
+498
+boÞ
+
+cÚ¡ªtLev–
+ =
+Œue
+;
+
+500 
+‹¡_»l_size
+;
+
+501
+cÛf_t
+
+¡¬t
+,
+fšish
+;
+
+502
+fšish
+ = -(
+posInfš™y
+-1);
+
+503
+¡¬t
+ =
+posInfš™y
+;
+
+504
+Tu¶e
+<
+cÛf_t
+>
+ `wh’
+(
+¡mts
+);
+
+505 
+s
+=1; s<=
+¡mts
+; s++èià(
+isAùive
+[s]) {
+
+506
+cÛf_t
+
+lb
+,
+ub
+;
+
+507
+‹¡_»l_size
+ =
+´ojeùed_nIS
+[
+Ëv–
+][
+s
+].
+ `n_£t
+();
+
+508
+´ojeùed_nIS
+[
+Ëv–
+][
+s
+].
+ `sšgË_cÚjunù
+()
+
+509 ->
+ `qu”y_v¬ŸbË_bounds
+(
+
+510
+´ojeùed_nIS
+[
+Ëv–
+][
+s
+].
+ `£t_v¬
+(level),
+
+511
+lb
+,
+ub
+);
+
+512 if(
+code_g’_debug
+) {
+
+513
+ `årštf
+(
+DebugFže
+, "IS%d: "
+cÛf_fmt
+ " <ðt%d <ð" cÛf_fmˆ"\n",
+s
+,
+
+514
+lb
+,
+Ëv–
+,
+ub
+);
+
+515
+´ojeùed_nIS
+[
+Ëv–
+][
+s
+].
+ `´efix_´št
+(
+DebugFže
+);
+
+517 ià(
+lb
+ !ð
+ub
+) {
+
+518
+cÚ¡ªtLev–
+ =
+çl£
+;
+
+522
+ `£t_max
+(
+fšish
+,
+lb
+);
+
+523
+ `£t_mš
+(
+¡¬t
+,
+lb
+);
+
+524
+wh’
+[
+s
+] =
+lb
+;
+
+529 ià(
+cÚ¡ªtLev–
+ &&
+fšish
+-
+¡¬t
+ <ð
+¡mts
+) {
+
+530
+IÁTu¶e
+
+ `ÃwAùive
+(
+isAùive
+.
+ `size
+());
+
+531 
+i
+=1; i<=
+¡mts
+; i++)
+
+532
+ÃwAùive
+[
+i
+] =
+isAùive
+[i] &&
+wh’
+[i] =ð
+¡¬t
+;
+
+533
+CG_»suÉ
+ *
+r
+ =
+Ãw
+
+ `CG_loÝ
+(
+isAùive
+,
+Ëv–
+,
+
+534
+ `g’_»cursive
+(
+Ëv–
++1,
+ÃwAùive
+));
+
+535 
+cÛf_t
+
+time
+ =
+¡¬t
++1;im<ð
+fšish
+;ime++) {
+
+536 
+couÁ
+ = 0;
+
+537 
+i
+=1; i<=
+¡mts
+; i++) {
+
+538
+ÃwAùive
+[
+i
+] =
+isAùive
+[i] &&
+wh’
+[i] =ð
+time
+;
+
+539 ià(
+ÃwAùive
+[
+i
+]è
+couÁ
+++;
+
+541 ià(
+couÁ
+) {
+
+542
+R–©iÚ
+
+ `‹¡_»l
+(
+‹¡_»l_size
+);
+
+543
+GEQ_HªdË
+
+g
+ =
+‹¡_»l
+.
+ `ªd_w™h_GEQ
+();
+
+544
+g
+.
+ `upd©e_cÛf
+(
+‹¡_»l
+.
+ `£t_v¬
+(
+Ëv–
+),-1);
+
+545
+g
+.
+ `upd©e_cÚ¡
+(
+time
+-1);
+
+547
+r
+ =
+Ãw
+
+ `CG_¥l™
+(
+isAùive
+,
+Ëv–
+,
+‹¡_»l
+,r,
+
+548
+Ãw
+
+ `CG_loÝ
+(
+isAùive
+,
+Ëv–
+,
+
+549
+ `g’_»cursive
+(
+Ëv–
++1,
+ÃwAùive
+)));
+
+552 
+r
+;
+
+560
+R–©iÚ
+
+huÎ
+ =
+ `HuÎ
+(
+´ojeùed_nIS
+[
+Ëv–
+],
+isAùive
+,1);
+
+562
+R–©iÚ
+
+huÎ
+ =
+ `HuÎ
+(
+´ojeùed_nIS
+[
+Ëv–
+],
+isAùive
+,0);
+
+565 if(
+code_g’_debug
+) {
+
+566
+ `årštf
+(
+DebugFže
+, "HuÎ (Ëv– %dèis:\n",
+Ëv–
+);
+
+567
+huÎ
+.
+ `´efix_´št
+(
+DebugFže
+);
+
+571
+IÁTu¶e
+
+ `fœ¡Chunk
+(
+isAùive
+);
+
+572
+IÁTu¶e
+
+ `£cÚdChunk
+(
+isAùive
+);
+
+579
+boÞ
+
+checkFÜS¶™s
+ =
+Œue
+;
+
+580 
+s
+ = 1; s <ð
+isAùive
+.
+ `size
+(); s++){
+
+581 ià(
+isAùive
+[
+s
+]) {
+
+582 if(
+s
+ <
+smtNÚS¶™Lev–s
+.
+ `size
+(è&& smtNÚS¶™Lev–s[s].
+ `šdex
+(
+Ëv–
+-2) != 0){
+
+583
+checkFÜS¶™s
+ =
+çl£
+;
+
+590 
+s
+ = 1;
+checkFÜS¶™s
+ && s <ð
+isAùive
+.
+ `size
+(); s++)
+
+591 ià(
+isAùive
+[
+s
+]) {
+
+592
+R–©iÚ
+
+gi¡
+ =
+ `Gi¡
+(
+ `cÝy
+(
+´ojeùed_nIS
+[
+Ëv–
+][
+s
+]),cÝy(
+huÎ
+),1);
+
+593 ià(
+gi¡
+.
+ `is_obvious_utÞogy
+()) ;
+
+594
+gi¡
+.
+ `sim¶ify
+();
+
+595
+CÚjunù
+ *
+s_cÚj
+ =
+gi¡
+.
+ `sšgË_cÚjunù
+();
+
+596 
+GEQ_I‹¿tÜ
+
+ `G
+(
+s_cÚj
+);
+G
+; G++) {
+
+597
+R–©iÚ
+
+ `‹¡_»l
+(
+gi¡
+.
+ `n_£t
+());
+
+598
+‹¡_»l
+.
+ `ªd_w™h_GEQ
+(*
+G
+);
+
+599
+V¬ŸbË_ID
+
+v
+ =
+ `£t_v¬
+(
+Ëv–
+);
+
+600
+cÛf_t
+
+sign
+ = (*
+G
+).
+ `g‘_cÛf
+(
+v
+);
+
+601 if(
+sign
+ > 0è
+‹¡_»l
+ =
+ `Com¶em’t
+(test_rel);
+
+602 if(
+code_g’_debug
+) {
+
+603
+ `årštf
+(
+DebugFže
+, "CÚsid”šg s¶™ from stmˆ%d:\n",
+s
+);
+
+604
+‹¡_»l
+.
+ `´efix_´št
+(
+DebugFže
+);
+
+607
+fœ¡Chunk
+[
+s
+] =
+sign
+ <= 0;
+
+608
+£cÚdChunk
+[
+s
+] =
+sign
+ > 0;
+
+609 
+numb”Fœ¡
+ =
+sign
+ <= 0;
+
+610 
+numb”SecÚd
+ =
+sign
+ > 0;
+
+612 
+s2
+ = 1; s2 <ð
+isAùive
+.
+ `size
+(); s2++)
+
+613 ià(
+isAùive
+[
+s2
+] && s2 !ð
+s
+) {
+
+614 if(
+code_g’_debug
+)
+
+615
+ `årštf
+(
+DebugFže
+,"CÚsid” stmˆ%d\n",
+s2
+);
+
+616
+boÞ
+
+t
+ =
+ `IÁ”£ùiÚ
+(
+ `cÝy
+(
+´ojeùed_nIS
+[
+Ëv–
+][
+s2
+]),
+
+617
+ `cÝy
+(
+‹¡_»l
+)).
+ `is_uµ”_bound_§tisfŸbË
+();
+
+618
+boÞ
+
+f
+ =
+ `Difã»nû
+(
+ `cÝy
+(
+´ojeùed_nIS
+[
+Ëv–
+][
+s2
+]),
+
+619
+ `cÝy
+(
+‹¡_»l
+)).
+ `is_uµ”_bound_§tisfŸbË
+();
+
+620
+ `as£¹
+(
+t
+ ||
+f
+);
+
+621 if(
+code_g’_debug
+ &&
+t
+&&
+f
+)
+
+622
+ `årštf
+(
+DebugFže
+, "SÏshe ¡mˆ%d\n",
+s2
+);
+
+623 ià(
+t
+&&
+f
+è
+ÃxtGEQ
+;
+
+624 if(
+code_g’_debug
+) {
+
+625 ià(
+t
+)
+
+626
+ `årštf
+(
+DebugFže
+, "ŒufÜ stmˆ%d\n",
+s2
+);
+
+628
+ `årštf
+(
+DebugFže
+, "çl£ fÜ stmˆ%d\n",
+s2
+);
+
+630 ià(
+t
+numb”Fœ¡
+++;
+
+631
+numb”SecÚd
+++;
+
+632
+fœ¡Chunk
+[
+s2
+] =
+t
+;
+
+633
+£cÚdChunk
+[
+s2
+] = !
+t
+;
+
+636
+ `as£¹
+(
+numb”Fœ¡
++
+numb”SecÚd
+>1 && "Can't handle wildcard in iteration space");
+
+637 if(
+code_g’_debug
+)
+
+638
+ `årštf
+(
+DebugFže
+, "%drue, %d false\n",
+
+639
+numb”Fœ¡
+,
+
+640
+numb”SecÚd
+);
+
+641 ià(
+numb”Fœ¡
+ &&
+numb”SecÚd
+) {
+
+643 
+Ãw
+
+ `CG_¥l™
+(
+isAùive
+,
+Ëv–
+,
+‹¡_»l
+,
+
+644
+ `g’_»cursive
+(
+Ëv–
+,
+fœ¡Chunk
+),
+
+645
+ `g’_»cursive
+(
+Ëv–
+,
+£cÚdChunk
+));
+
+647
+ÃxtGEQ
+: ;
+
+653 
+Ãw
+
+ `CG_loÝ
+(
+isAùive
+,
+Ëv–
+,
+ `g’_»cursive
+(level+1,isActive));
+
+654
+ }
+}
+
+ @output_repr.cc
+
+16 
+ ~<omega.h
+>
+
+17 
+ ~<code_g’/CG_¡ršgBužd”.h
+>
+
+18 
+ ~<code_g’/ouut_»´.h
+>
+
+19 
+ ~<basic/omega_”rÜ.h
+>
+
+20 
+ ~<m©h.h
+>
+
+21 
+ ~<¡ack
+>
+
+22 
+ ~<ty³šfo
+>
+
+24
+Çme¥aû
+
+ gomega
+ {
+
+26
+Tu¶e
+<Tu¶e<
+R–©iÚ
+> >
+´ojeùed_nIS
+;
+
+27 
+ gv¬_sub¡™utiÚ_th»shÞd
+ = 100;
+
+29 
+uµ”BoundFÜLev–
+;
+
+30 
+low”BoundFÜLev–
+;
+
+31
+boÞ
+
+fžlInBounds
+;
+
+37
+Çme¥aû
+
+ gomega
+ {
+
+39
+ g¡d
+::
+·œ
+<
+EQ_HªdË
+, >
+fšd_sim¶e¡_assignm’t
+(cÚ¡
+R–©iÚ
+ &
+R_
+,
+V¬ŸbË_ID
+
+v
+, cÚ¡
+¡d
+::
+veùÜ
+<
+CG_ouutR•r
+ *> &
+assigÃd_Ú_the_æy
+);
+
+42
+ gÇme¥aû
+ {
+
+47 
+g‘_¡ride
+(cÚ¡
+CÚ¡¿št_HªdË
+ &
+h
+,
+V¬ŸbË_ID
+ &
+wc
+,
+cÛf_t
+ &
+¡•
+){
+
+48
+ gwc
+ = 0;
+
+49 
+CÚ¡r_V¬s_I‹r
+
+i
+(
+h
+,
+Œue
+);
+ gi
+; i++) {
+
+50
+as£¹
+(
+wc
+ == 0);
+
+51
+ gwc
+ = (*
+i
+).
+v¬
+;
+
+52
+ g¡•
+ = ((*
+i
+).
+cÛf
+);
+
+58
+CG_ouutR•r
+*
+ouutId’t
+(
+CG_ouutBužd”
+*
+ocg
+, cÚ¡
+R–©iÚ
+ &
+R_
+,
+V¬ŸbË_ID
+
+v
+, cÚ¡
+¡d
+::
+veùÜ
+<CG_ouutR•¸*> &
+assigÃd_Ú_the_æy
+) {
+
+59
+R–©iÚ
+ &
+R
+ =
+cÚ¡_ÿ¡
+<R–©iÚ &>(
+R_
+);
+
+61 
+ gv
+->
+kšd
+()) {
+
+62 
+ gS‘_V¬
+: {
+
+63 
+pos
+ =
+v
+->
+g‘_pos™iÚ
+();
+
+64 ià(
+ gassigÃd_Ú_the_æy
+[
+pos
+-1] !ð
+NULL
+)
+
+65 
+assigÃd_Ú_the_æy
+[
+pos
+-1]->
+þÚe
+();
+
+67 
+ gocg
+->
+C»©eId’t
+(
+v
+->
+Çme
+());
+
+70 
+ gGlob®_V¬
+: {
+
+71 ià(
+v
+->
+g‘_glob®_v¬
+()->
+ªy
+() == 0)
+
+72 
+ocg
+->
+C»©eId’t
+(
+v
+->
+Çme
+());
+
+76 
+ gªy
+ =
+v
+->
+g‘_glob®_v¬
+()->
+ªy
+();
+
+78
+ gTu¶e
+<
+ gCG_ouutR•r
+ *>
+ g¬gLi¡
+;
+
+82 
+ gi
+ = 1; i <ð
+ªy
+; i++)
+
+83
+ g¬gLi¡
+.
+­³nd
+(
+ocg
+->
+C»©eId’t
+(
+R
+.
+£t_v¬
+(
+i
+)->
+Çme
+()));
+
+84
+CG_ouutR•r
+ *
+ gÿÎ
+ =
+ocg
+->
+C»©eInvoke
+(
+v
+->
+g‘_glob®_v¬
+()->
+ba£_Çme
+(),
+¬gLi¡
+);
+
+85 
+ gÿÎ
+;
+
+90
+throw
+
+¡d
+::
+šv®id_¬gum’t
+("wrong variableype");
+
+101
+ g¡d
+::
+·œ
+<
+CG_ouutR•r
+ *,
+ gboÞ
+>
+ouutAssignm’t
+(
+CG_ouutBužd”
+ *
+ocg
+, cÚ¡
+R–©iÚ
+ &
+R_
+,
+V¬ŸbË_ID
+
+v
+, R–©iÚ &
+’fÜûd
+, CG_ouutR•¸*&
+if_»´
+, cÚ¡
+¡d
+::
+veùÜ
+<CG_ouutR•¸*> &
+assigÃd_Ú_the_æy
+) {
+
+102
+R–©iÚ
+ &
+R
+ =
+cÚ¡_ÿ¡
+<R–©iÚ &>(
+R_
+);
+
+104
+CÚjunù
+ *
+ gc
+ =
+R
+.
+qu”y_DNF
+()->
+sšgË_cÚjunù
+();
+
+107 
+EQ_I‹¿tÜ
+
+ei
+(
+c
+);
+ gei
+;ƒi++)
+
+108 ià(!(*
+ gei
+).
+has_wždÿrds
+(è&&
+abs
+((*
+ei
+).
+g‘_cÛf
+(
+v
+)) > 1) {
+
+109
+R–©iÚ
+
+r
+(
+R
+.
+n_£t
+());
+
+110
+F_And
+ *
+ gf_su³r_roÙ
+ =
+r
+.
+add_ªd
+();
+
+111
+F_Exi¡s
+ *
+ gã
+ =
+f_su³r_roÙ
+->
+add_exi¡s
+();
+
+112
+V¬ŸbË_ID
+
+ ge
+ =
+->
+deþ¬e
+();
+
+113
+F_And
+ *
+ gf_roÙ
+ =
+->
+add_ªd
+();
+
+114
+EQ_HªdË
+
+ gh
+ =
+f_roÙ
+->
+add_EQ
+();
+
+115 
+CÚ¡r_V¬s_I‹r
+
+cvi
+(*
+ei
+);
+ gcvi
+; cvi++)
+
+116 (*
+ gcvi
+).
+ gv¬
+->
+kšd
+()) {
+
+117 
+ gIÅut_V¬
+: {
+
+118 ià((*
+cvi
+).
+v¬
+ =ð
+v
+)
+
+119
+h
+.
+upd©e_cÛf
+(
+e
+, (*
+cvi
+).
+cÛf
+);
+
+121
+ gh
+.
+upd©e_cÛf
+(
+r
+.
+£t_v¬
+((*
+cvi
+).
+v¬
+->
+g‘_pos™iÚ
+()), (*cvi).
+cÛf
+);
+
+124 
+ gGlob®_V¬
+: {
+
+125
+Glob®_V¬_ID
+
+g
+ = (*
+cvi
+).
+v¬
+->
+g‘_glob®_v¬
+();
+
+126
+V¬ŸbË_ID
+
+ gv2
+;
+
+127 ià(
+ gg
+->
+ªy
+() == 0)
+
+128
+v2
+ =
+r
+.
+g‘_loÿl
+(
+g
+);
+
+130
+ gv2
+ =
+r
+.
+g‘_loÿl
+(
+g
+, (*
+cvi
+).
+v¬
+->
+funùiÚ_of
+());
+
+131
+ gh
+.
+upd©e_cÛf
+(
+v2
+, (*
+cvi
+).
+cÛf
+);
+
+135
+as£¹
+(0);
+
+137
+ gh
+.
+upd©e_cÚ¡
+((*
+ei
+).
+g‘_cÚ¡
+());
+
+139
+ gr
+.
+cÝy_Çmes
+(
+R
+);
+
+140
+ gr
+.
+£tup_Çmes
+();
+
+143 ià(!
+Gi¡
+(
+r
+,
+cÝy
+(
+’fÜûd
+), 1).
+is_obvious_utÞogy
+()) {
+
+144
+cÛf_t
+
+ gcÛf
+ = (*
+ei
+).
+g‘_cÛf
+(
+v
+);
+
+145
+cÛf_t
+
+ gsign
+ = -((
+cÛf
+>0)?1:-1);
+
+146
+ gcÛf
+ =
+abs
+(
+cÛf
+);
+
+148
+CG_ouutR•r
+ *
+ g‹rm
+ =
+NULL
+;
+
+149 
+CÚ¡r_V¬s_I‹r
+
+cvi
+(*
+ei
+);
+ gcvi
+; cvi++)
+
+150 ià((*
+ gcvi
+).
+ gv¬
+ !ð
+v
+) {
+
+151
+CG_ouutR•r
+ *
+v¬R•r
+ =
+ouutId’t
+(
+ocg
+,
+R
+, (*
+cvi
+).
+v¬
+,
+assigÃd_Ú_the_æy
+);
+
+152
+cÛf_t
+
+ gt
+ =
+sign
+*(*
+cvi
+).
+cÛf
+;
+
+153 ià(
+ gt
+ == 1)
+
+154
+‹rm
+ =
+ocg
+->
+C»©ePlus
+єm,
+v¬R•r
+);
+
+155 ià(
+ gt
+ == -1)
+
+156
+‹rm
+ =
+ocg
+->
+C»©eMšus
+єm,
+v¬R•r
+);
+
+157 ià(
+ gt
+ > 0)
+
+158
+ g‹rm
+ =
+ocg
+->
+C»©ePlus
+(
+‹rm
+, ocg->
+C»©eTimes
+(ocg->
+C»©eIÁ
+(
+t
+),
+v¬R•r
+));
+
+159 ià(
+ gt
+ < 0)
+
+160
+ g‹rm
+ =
+ocg
+->
+C»©eMšus
+(
+‹rm
+, ocg->
+C»©eTimes
+(ocg->
+C»©eIÁ
+(-
+t
+),
+v¬R•r
+));
+
+162
+cÛf_t
+
+ gt
+ =
+sign
+*(*
+ei
+).
+g‘_cÚ¡
+();
+
+163 ià(
+ gt
+ > 0)
+
+164
+ g‹rm
+ =
+ocg
+->
+C»©ePlus
+(
+‹rm
+, ocg->
+C»©eIÁ
+(
+t
+));
+
+165 ià(
+ gt
+ < 0)
+
+166
+ g‹rm
+ =
+ocg
+->
+C»©eMšus
+(
+‹rm
+, ocg->
+C»©eIÁ
+(-
+t
+));
+
+168
+ g‹rm
+ =
+ocg
+->
+C»©eIÁeg”Mod
+(
+‹rm
+, ocg->
+C»©eIÁ
+(
+cÛf
+));
+
+169
+ g‹rm
+ =
+ocg
+->
+C»©eEQ
+(
+‹rm
+, ocg->
+C»©eIÁ
+(0));
+
+171
+ gif_»´
+ =
+ocg
+->
+C»©eAnd
+(
+if_»´
+,
+‹rm
+);
+
+174
+ g’fÜûd
+.
+ªd_w™h_EQ
+(*
+ei
+);
+
+175
+ g’fÜûd
+.
+sim¶ify
+();
+
+179
+ g¡d
+::
+·œ
+<
+EQ_HªdË
+, >
+ ga
+ =
+fšd_sim¶e¡_assignm’t
+(
+R
+,
+v
+,
+assigÃd_Ú_the_æy
+);
+
+182 ià(
+ ga
+.
+ g£cÚd
+ <
+ gINT_MAX
+) {
+
+183
+EQ_HªdË
+
+ geq
+ =
+a
+.
+fœ¡
+;
+
+184
+CG_ouutR•r
+ *
+ grÝ_»´
+ =
+NULL
+;
+
+186
+cÛf_t
+
+ gdivid”
+ =
+eq
+.
+g‘_cÛf
+(
+v
+);
+
+187 
+ gsign
+ = 1;
+
+188 ià(
+ gdivid”
+ < 0) {
+
+189
+ gdivid”
+ = -
+divid”
+;
+
+190
+ gsign
+ = -1;
+
+193 
+CÚ¡r_V¬s_I‹r
+
+cvi
+(
+eq
+);
+ gcvi
+; cvi++)
+
+194 ià((*
+ gcvi
+).
+ gv¬
+ !ð
+v
+) {
+
+195
+CG_ouutR•r
+ *
+v¬_»´
+ =
+ouutId’t
+(
+ocg
+,
+R
+, (*
+cvi
+).
+v¬
+,
+assigÃd_Ú_the_æy
+);
+
+196
+cÛf_t
+
+ gcÛf
+ = (*
+cvi
+).
+cÛf
+;
+
+197 ià(-
+sign
+ *
+ gcÛf
+ == -1)
+
+198
+rÝ_»´
+ =
+ocg
+->
+C»©eMšus
+ÔÝ_»´,
+v¬_»´
+);
+
+199 ià(-
+sign
+ *
+ gcÛf
+ < -1)
+
+200
+ grÝ_»´
+ =
+ocg
+->
+C»©eMšus
+(
+rÝ_»´
+, ocg->
+C»©eTimes
+(ocg->
+C»©eIÁ
+(
+sign
+ *
+cÛf
+),
+v¬_»´
+));
+
+201 ià(-
+sign
+ *
+ gcÛf
+ == 1)
+
+202
+rÝ_»´
+ =
+ocg
+->
+C»©ePlus
+ÔÝ_»´,
+v¬_»´
+);
+
+204
+ grÝ_»´
+ =
+ocg
+->
+C»©ePlus
+(
+rÝ_»´
+, ocg->
+C»©eTimes
+(ocg->
+C»©eIÁ
+(-
+sign
+ *
+cÛf
+),
+v¬_»´
+));
+
+207
+cÛf_t
+
+ gc_‹rm
+ = -(
+eq
+.
+g‘_cÚ¡
+(è*
+sign
+);
+
+209 ià(
+ gc_‹rm
+ > 0)
+
+210
+ grÝ_»´
+ =
+ocg
+->
+C»©ePlus
+(
+rÝ_»´
+, ocg->
+C»©eIÁ
+(
+c_‹rm
+));
+
+211 ià(
+ gc_‹rm
+ < 0)
+
+212
+ grÝ_»´
+ =
+ocg
+->
+C»©eMšus
+(
+rÝ_»´
+, ocg->
+C»©eIÁ
+(-
+c_‹rm
+));
+
+213 ià(
+ grÝ_»´
+ =ð
+NULL
+)
+
+214
+rÝ_»´
+ =
+ocg
+->
+C»©eIÁ
+(0);
+
+216 ià(
+ gdivid”
+ != 1)
+
+217
+rÝ_»´
+ =
+ocg
+->
+C»©eIÁeg”Divide
+ÔÝ_»´, ocg->
+C»©eIÁ
+(
+divid”
+));
+
+219
+ g’fÜûd
+.
+ªd_w™h_EQ
+(
+eq
+);
+
+220
+ g’fÜûd
+.
+sim¶ify
+();
+
+222 ià(
+ ga
+.
+ g£cÚd
+ >
+ gv¬_sub¡™utiÚ_th»shÞd
+)
+
+223 
+ g¡d
+::
+make_·œ
+(
+rÝ_»´
+,
+Œue
+);
+
+225 
+ g¡d
+::
+make_·œ
+(
+rÝ_»´
+,
+çl£
+);
+
+228 
+ g¡d
+::
+make_·œ
+(
+¡©ic_ÿ¡
+<
+CG_ouutR•r
+ *>(
+NULL
+),
+çl£
+);
+
+237
+ gTu¶e
+<
+ gCG_ouutR•r
+*>
+ouutSub¡™utiÚ
+(
+CG_ouutBužd”
+*
+ocg
+, cÚ¡
+R–©iÚ
+ &
+R_
+, cÚ¡
+¡d
+::
+veùÜ
+<
+CG_ouutR•r
+ *> &
+assigÃd_Ú_the_æy
+) {
+
+238
+R–©iÚ
+ &
+R
+ =
+cÚ¡_ÿ¡
+<R–©iÚ &>(
+R_
+);
+
+240 cÚ¡ 
+ gn
+ =
+R
+.
+n_out
+();
+
+241
+ gTu¶e
+<
+ gCG_ouutR•r
+*>
+ goR•rLi¡
+;
+
+244 
+ gi
+ = 1; i <ð
+n
+; i++) {
+
+245
+R–©iÚ
+
+m­pšg
+(
+n
+, 1);
+
+246
+F_And
+ *
+ gf_roÙ
+ =
+m­pšg
+.
+add_ªd
+();
+
+247
+EQ_HªdË
+
+ gh
+ =
+f_roÙ
+->
+add_EQ
+();
+
+248
+ gh
+.
+upd©e_cÛf
+(
+m­pšg
+.
+ouut_v¬
+(1), 1);
+
+249
+ gh
+.
+upd©e_cÛf
+(
+m­pšg
+.
+šput_v¬
+(
+i
+), -1);
+
+251
+R–©iÚ
+
+ gS
+ =
+Compos™iÚ
+(
+m­pšg
+,
+cÝy
+(
+R
+));
+
+253
+ g¡d
+::
+·œ
+<
+EQ_HªdË
+, >
+ ga
+ =
+fšd_sim¶e¡_assignm’t
+(
+S
+, S.
+ouut_v¬
+(1),
+assigÃd_Ú_the_æy
+);
+
+255 ià(
+ ga
+.
+ g£cÚd
+ <
+ gINT_MAX
+) {
+
+256 
+ ga
+.
+ g£cÚd
+ > 0) {
+
+257
+EQ_HªdË
+
+ geq
+ =
+a
+.
+fœ¡
+;
+
+258
+ g¡d
+::
+£t
+<>
+ÿndid©es
+;
+
+259 
+CÚ¡r_V¬s_I‹r
+
+cvi
+(
+eq
+);
+ gcvi
+; cvi++)
+
+260 ià((*
+ gcvi
+).
+ gv¬
+->
+kšd
+(è=ð
+IÅut_V¬
+)
+
+261
+ÿndid©es
+.
+š£¹
+((*
+cvi
+).
+v¬
+->
+g‘_pos™iÚ
+());
+
+263
+boÞ
+
+ gchªged
+ =
+çl£
+;
+
+264 
+ g¡d
+::
+£t
+<>::
+™”©Ü
+
+j
+ =
+ÿndid©es
+.
+begš
+();
+ gj
+ !ðÿndid©es.
+’d
+(); j++) {
+
+265
+R–©iÚ
+
+ gS2
+ =
+Projeù
+(
+cÝy
+(
+S
+), *
+j
+,
+IÅut_V¬
+);
+
+266
+ g¡d
+::
+·œ
+<
+EQ_HªdË
+, >
+ ga2
+ =
+fšd_sim¶e¡_assignm’t
+(
+S2
+, S2.
+ouut_v¬
+(1),
+assigÃd_Ú_the_æy
+);
+
+267 ià(
+ ga2
+.
+ g£cÚd
+ <ð
+a
+.
+£cÚd
+) {
+
+268
+S
+ =
+S2
+;
+
+269
+ ga
+ =
+a2
+;
+
+270
+ gchªged
+ =
+Œue
+;
+
+274 ià(!
+ gchªged
+)
+
+279 ià(
+ ga
+.
+ g£cÚd
+ <
+ gINT_MAX
+) {
+
+280
+CG_ouutR•r
+ *
+ g»´
+ =
+NULL
+;
+
+281
+EQ_HªdË
+
+ geq
+ =
+a
+.
+fœ¡
+;
+
+282
+V¬ŸbË_ID
+
+ gv
+ =
+S
+.
+ouut_v¬
+(1);
+
+284 
+ gj
+ = 1; j <ð
+S
+.
+n_šp
+(); j++)
+
+285
+ gS
+.
+Çme_šput_v¬
+(
+j
+,
+R
+.
+šput_v¬
+(j)->
+Çme
+());
+
+286
+ gS
+.
+£tup_Çmes
+();
+
+288 
+ gd
+ =
+eq
+.
+g‘_cÛf
+(
+v
+);
+
+289
+as£¹
+(
+d
+ != 0);
+
+290 
+ gsign
+ = (
+d
+>0)?-1:1;
+
+291
+ gd
+ = -
+sign
+ *
+d
+;
+
+292 
+CÚ¡r_V¬s_I‹r
+
+cvi
+(
+eq
+);
+ gcvi
+; cvi++)
+
+293 ià((*
+ gcvi
+).
+ gv¬
+ !ð
+v
+) {
+
+294 
+cÛf
+ =
+sign
+ * (*
+cvi
+).coef;
+
+295
+CG_ouutR•r
+ *
+ gÝ
+ =
+ouutId’t
+(
+ocg
+,
+S
+, (*
+cvi
+).
+v¬
+,
+assigÃd_Ú_the_æy
+);
+
+296 ià(
+ gcÛf
+ > 1)
+
+297
+ gÝ
+ =
+ocg
+->
+C»©eTimes
+(ocg->
+C»©eIÁ
+(
+cÛf
+),
+);
+
+298 ià(
+ gcÛf
+ < -1)
+
+299
+ gÝ
+ =
+ocg
+->
+C»©eTimes
+(ocg->
+C»©eIÁ
+(-
+cÛf
+),
+);
+
+300 ià(
+ gcÛf
+ > 0)
+
+301
+ g»´
+ =
+ocg
+->
+C»©ePlus
+(
+»´
+,
+);
+
+302 ià(
+ gcÛf
+ < 0)
+
+303
+ g»´
+ =
+ocg
+->
+C»©eMšus
+(
+»´
+,
+);
+
+306 
+ gc
+ =
+sign
+ *
+eq
+.
+g‘_cÚ¡
+();
+
+307 ià(
+ gc
+ > 0)
+
+308
+ g»´
+ =
+ocg
+->
+C»©ePlus
+(
+»´
+, ocg->
+C»©eIÁ
+(
+c
+));
+
+309 ià(
+ gc
+ < 0)
+
+310
+ g»´
+ =
+ocg
+->
+C»©eMšus
+(
+»´
+, ocg->
+C»©eIÁ
+(-
+c
+));
+
+311 ià(
+ g»´
+ =ð
+NULL
+)
+
+312
+»´
+ =
+ocg
+->
+C»©eIÁ
+(0);
+
+314 ià(
+ gd
+ != 1)
+
+315
+»´
+ =
+ocg
+->
+C»©eIÁeg”Divide
+Ô•r, ocg->
+C»©eIÁ
+(
+d
+));
+
+317
+ goR•rLi¡
+.
+­³nd
+(
+»´
+);
+
+320
+ goR•rLi¡
+.
+­³nd
+(
+NULL
+);
+
+323 
+ goR•rLi¡
+;
+
+326
+ gÇme¥aû
+ {
+
+328
+R–©iÚ
+
+ü—‹_¡ride_Ú_bound
+(
+n
+, cÚ¡
+¡d
+::
+m­
+<
+V¬ŸbË_ID
+,
+cÛf_t
+> &
+lb
+, cÛf_ˆ
+¡ride
+) {
+
+329
+R–©iÚ
+
+»suÉ
+(
+n
+);
+
+330
+F_And
+ *
+ gf_roÙ
+ =
+»suÉ
+.
+add_ªd
+();
+
+331
+EQ_HªdË
+
+ gh
+ =
+f_roÙ
+->
+add_¡ride
+(
+¡ride
+);
+
+333 
+ g¡d
+::
+m­
+<
+V¬ŸbË_ID
+,
+ gcÛf_t
+>::
+cÚ¡_™”©Ü
+
+i
+ =
+lb
+.
+begš
+();
+ gi
+ !ðlb.
+’d
+(); i++) {
+
+334 ià(
+ gi
+->
+ gfœ¡
+ =ð
+NULL
+)
+
+335
+h
+.
+upd©e_cÚ¡
+(
+i
+->
+£cÚd
+);
+
+337 
+ gi
+->
+ gfœ¡
+->
+kšd
+()) {
+
+338 
+ gIÅut_V¬
+: {
+
+339 
+pos
+ =
+i
+->
+fœ¡
+->
+g‘_pos™iÚ
+();
+
+340
+ gh
+.
+upd©e_cÛf
+(
+»suÉ
+.
+£t_v¬
+(
+pos
+),
+i
+->
+£cÚd
+);
+
+343 
+ gGlob®_V¬
+: {
+
+344
+Glob®_V¬_ID
+
+g
+ =
+i
+->
+fœ¡
+->
+g‘_glob®_v¬
+();
+
+345
+V¬ŸbË_ID
+
+ gv
+;
+
+346 ià(
+ gg
+->
+ªy
+() == 0)
+
+347
+v
+ =
+»suÉ
+.
+g‘_loÿl
+(
+g
+);
+
+349
+ gv
+ =
+»suÉ
+.
+g‘_loÿl
+(
+g
+,
+i
+->
+fœ¡
+->
+funùiÚ_of
+());
+
+350
+ gh
+.
+upd©e_cÛf
+(
+v
+,
+i
+->
+£cÚd
+);
+
+354
+as£¹
+(0);
+
+359 
+ g»suÉ
+;
+
+368
+R–©iÚ
+
+g»©e¡_commÚ_¡•
+(cÚ¡
+Tu¶e
+<R–©iÚ> &
+I
+, cÚ¡ Tu¶e<> &
+aùive
+, 
+Ëv–
+, cÚ¡ R–©iÚ &
+known
+) {
+
+369
+as£¹
+(
+I
+.
+size
+(è=ð
+aùive
+.size());
+
+370 
+ gn
+ = 0;
+
+372
+ g¡d
+::
+veùÜ
+<
+R–©iÚ
+>
+I1
+,
+ gI2
+;
+
+373 
+ gi
+ = 1; i <ð
+I
+.
+size
+(); i++)
+
+374 ià(
+ gaùive
+[
+i
+]) {
+
+375 ià(
+ gn
+ == 0)
+
+376
+n
+ =
+I
+[
+i
+].
+n_£t
+();
+
+378
+R–©iÚ
+
+ gr1
+;
+
+379 ià(
+ gknown
+.
+is_nuÎ
+())
+
+380
+ gr1
+ =
+cÝy
+(
+I
+[
+i
+]);
+
+382
+ gr1
+ =
+IÁ”£ùiÚ
+(
+cÝy
+(
+I
+[
+i
+]), cÝy(
+known
+));
+
+383
+ gr1
+.
+sim¶ify
+();
+
+385
+ gI1
+.
+push_back
+(
+r1
+);
+
+386
+R–©iÚ
+
+ gr2
+ =
+Gi¡
+(
+cÝy
+(
+I
+[
+i
+]), cÝy(
+known
+));
+
+387
+as£¹
+(
+r2
+.
+is_uµ”_bound_§tisfŸbË
+());
+
+388 ià(
+ gr2
+.
+is_obvious_utÞogy
+())
+
+389 
+ gR–©iÚ
+::
+True
+(
+n
+);
+
+390
+ gI2
+.
+push_back
+(
+r2
+);
+
+393
+ g¡d
+::
+veùÜ
+<
+boÞ
+>
+is_exaù
+(
+I2
+.
+size
+(),
+Œue
+);
+
+394
+ g¡d
+::
+veùÜ
+<
+cÛf_t
+>
+¡•
+(
+I2
+.
+size
+(), 0);
+
+395
+ g¡d
+::
+veùÜ
+<
+cÛf_t
+>
+messy_¡•
+(
+I2
+.
+size
+(), 0);
+
+396
+V¬ŸbË_ID
+
+ gt_cÞ
+ =
+£t_v¬
+(
+Ëv–
+);
+
+397
+ g¡d
+::
+m­
+<
+V¬ŸbË_ID
+,
+ gcÛf_t
+>
+ glb
+;
+
+400 
+size_t
+
+ gi
+ = 0; i <
+ gI2
+.
+size
+(); i++) {
+
+401
+CÚjunù
+ *
+ gc
+ =
+I2
+[
+i
+].
+qu”y_DNF
+()->
+sšgË_cÚjunù
+();
+
+403
+boÞ
+
+ gis_deg’”©ed
+ =
+çl£
+;
+
+404 
+EQ_I‹¿tÜ
+
+ ge
+ =
+c
+->
+EQs
+();ƒ;ƒ++) {
+
+405
+cÛf_t
+
+ gcÛf
+ =
+abs
+((*
+e
+).
+g‘_cÛf
+(
+t_cÞ
+));
+
+406 ià(
+ gcÛf
+ !ð0 && !(*
+e
+).
+has_wždÿrds
+()) {
+
+407
+is_deg’”©ed
+ =
+Œue
+;
+
+411 ià(
+ gis_deg’”©ed
+)
+
+414 
+EQ_I‹¿tÜ
+
+ ge
+ =
+c
+->
+EQs
+();ƒ;ƒ++) {
+
+415 ià((*
+ ge
+).
+has_wždÿrds
+()) {
+
+416
+cÛf_t
+
+ gcÛf
+ =
+abs
+((*
+e
+).
+g‘_cÛf
+(
+t_cÞ
+));
+
+417 ià(
+ gcÛf
+ == 0)
+
+419 ià(
+ gcÛf
+ != 1) {
+
+420
+is_exaù
+[
+i
+] =
+çl£
+;
+
+424
+cÛf_t
+
+ gthis_¡•
+ =
+abs
+(
+CÚ¡r_V¬s_I‹r
+(*
+e
+,
+Œue
+).
+cu¼_cÛf
+());
+
+425
+as£¹
+(
+this_¡•
+ != 1);
+
+427 ià(
+ glb
+.
+size
+() != 0) {
+
+428
+R–©iÚ
+
+‹¡
+ =
+ü—‹_¡ride_Ú_bound
+(
+n
+,
+lb
+,
+this_¡•
+);
+
+429 ià(
+Gi¡
+(
+‹¡
+,
+cÝy
+(
+I1
+[
+i
+])).
+is_obvious_utÞogy
+()) {
+
+430 ià(
+ g¡•
+[
+i
+] == 0)
+
+431
+¡•
+[
+i
+] =
+this_¡•
+;
+
+433
+ g¡•
+[
+i
+] =
+lcm
+(
+¡•
+[i],
+this_¡•
+);
+
+436
+ gis_exaù
+[
+i
+] =
+çl£
+;
+
+440
+CÚjunù
+ *
+ gc
+ =
+I2
+[
+i
+].
+qu”y_DNF
+()->
+sšgË_cÚjunù
+();
+
+441 
+GEQ_I‹¿tÜ
+
+ gge
+ =
+c
+->
+GEQs
+(); ge; ge++) {
+
+442 ià((*
+ gge
+).
+has_wždÿrds
+(è|| (*ge).
+g‘_cÛf
+(
+t_cÞ
+) != 1)
+
+445
+ g¡d
+::
+m­
+<
+V¬ŸbË_ID
+,
+ gcÛf_t
+>
+ gcur_lb
+;
+
+446 
+CÚ¡r_V¬s_I‹r
+
+cv
+(*
+ge
+);
+ gcv
+; cv++)
+
+447
+ gcur_lb
+[
+cv
+.
+cu¼_v¬
+()] = cv.
+cu¼_cÛf
+();
+
+448
+ gcur_lb
+[
+NULL
+] = (*
+ge
+).
+g‘_cÚ¡
+();
+
+450
+R–©iÚ
+
+ g‹¡
+ =
+ü—‹_¡ride_Ú_bound
+(
+n
+,
+cur_lb
+,
+this_¡•
+);
+
+451 ià(
+Gi¡
+(
+‹¡
+,
+cÝy
+(
+I1
+[
+i
+])).
+is_obvious_utÞogy
+()) {
+
+452 ià(
+ g¡•
+[
+i
+] == 0)
+
+453
+¡•
+[
+i
+] =
+this_¡•
+;
+
+455
+ g¡•
+[
+i
+] =
+lcm
+(
+¡•
+[i],
+this_¡•
+);
+
+457
+ glb
+ =
+cur_lb
+;
+
+463 ià(
+ glb
+.
+size
+() == 0) {
+
+464
+¡d
+::
+m­
+<
+V¬ŸbË_ID
+,
+cÛf_t
+>
+cur_lb
+;
+
+465 
+ gwžd_couÁ
+ = 0;
+
+466 
+CÚ¡r_V¬s_I‹r
+
+cv
+(*
+e
+);
+ gcv
+; cv++)
+
+467 ià(
+ gcv
+.
+cu¼_v¬
+()->
+kšd
+(è=ð
+Wždÿrd_V¬
+)
+
+468
+wžd_couÁ
+++;
+
+470
+ gcur_lb
+[
+cv
+.
+cu¼_v¬
+()] = cv.
+cu¼_cÛf
+();
+
+471
+ gcur_lb
+[
+NULL
+] = (*
+e
+).
+g‘_cÚ¡
+();
+
+473 ià(
+ gwžd_couÁ
+ == 1) {
+
+474
+lb
+ =
+cur_lb
+;
+
+475 ià(
+ g¡•
+[
+i
+] == 0)
+
+476
+¡•
+[
+i
+] =
+this_¡•
+;
+
+478
+ g¡•
+[
+i
+] =
+lcm
+(
+¡•
+[i],
+this_¡•
+);
+
+482 ià(
+ glb
+.
+size
+() == 0)
+
+483
+is_exaù
+[
+i
+] =
+çl£
+;
+
+490
+cÛf_t
+
+ gglob®_¡•
+ = 0;
+
+491 
+size_t
+
+ gi
+ = 0; i <
+ gis_exaù
+.
+size
+(); i++)
+
+492 ià(
+ gis_exaù
+[
+i
+])
+
+493
+ gglob®_¡•
+ =
+gcd
+(
+glob®_¡•
+,
+¡•
+[
+i
+]);
+
+494 ià(
+ gglob®_¡•
+ == 1)
+
+495 
+R–©iÚ
+::
+True
+(
+n
+);
+
+498 
+size_t
+
+ gi
+ = 0; i <
+ gI2
+.
+size
+(); i++)
+
+499 ià(!
+ gis_exaù
+[
+i
+]) {
+
+500
+CÚjunù
+ *
+ gc
+ =
+I2
+[
+i
+].
+qu”y_DNF
+()->
+sšgË_cÚjunù
+();
+
+501 
+EQ_I‹¿tÜ
+
+ ge
+ =
+c
+->
+EQs
+();ƒ;ƒ++) {
+
+502
+cÛf_t
+
+ gcÛf
+ =
+abs
+((*
+e
+).
+g‘_cÛf
+(
+t_cÞ
+));
+
+503 ià(
+ gcÛf
+ =ð0 ||
+cÛf
+ == 1)
+
+507
+cÛf_t
+
+ gthis_¡•
+ =
+abs
+(
+CÚ¡r_V¬s_I‹r
+(*
+e
+,
+Œue
+).
+cu¼_cÛf
+());
+
+508
+ gthis_¡•
+ /ð
+gcd
+(
+this_¡•
+,
+cÛf
+);
+
+509
+ gthis_¡•
+ =
+gcd
+(
+glob®_¡•
+,
+this_¡•
+);
+
+510 ià(
+ gthis_¡•
+ == 1)
+
+513 ià(
+ glb
+.
+size
+() != 0) {
+
+514
+R–©iÚ
+
+‹¡
+ =
+ü—‹_¡ride_Ú_bound
+(
+n
+,
+lb
+,
+this_¡•
+);
+
+515 ià(
+Gi¡
+(
+‹¡
+,
+cÝy
+(
+I1
+[
+i
+])).
+is_obvious_utÞogy
+()) {
+
+516 ià(
+ g¡•
+[
+i
+] == 0)
+
+517
+¡•
+[
+i
+] =
+this_¡•
+;
+
+519
+ g¡•
+[
+i
+] =
+lcm
+(
+¡•
+[i],
+this_¡•
+);
+
+524
+CÚjunù
+ *
+ gc
+ =
+I2
+[
+i
+].
+qu”y_DNF
+()->
+sšgË_cÚjunù
+();
+
+525 
+GEQ_I‹¿tÜ
+
+ gge
+ =
+c
+->
+GEQs
+(); ge; ge++) {
+
+526 ià((*
+ gge
+).
+has_wždÿrds
+(è|| (*ge).
+g‘_cÛf
+(
+t_cÞ
+) != 1)
+
+529
+ g¡d
+::
+m­
+<
+V¬ŸbË_ID
+,
+ gcÛf_t
+>
+ gcur_lb
+;
+
+531 
+CÚ¡r_V¬s_I‹r
+
+cv
+(*
+ge
+);
+ gcv
+; cv++)
+
+532
+ gcur_lb
+[
+cv
+.
+cu¼_v¬
+()] = cv.
+cu¼_cÛf
+();
+
+534
+ gcur_lb
+[
+NULL
+] = (*
+ge
+).
+g‘_cÚ¡
+();
+
+536
+R–©iÚ
+
+ g‹¡
+ =
+ü—‹_¡ride_Ú_bound
+(
+n
+,
+cur_lb
+,
+this_¡•
+);
+
+537 ià(
+Gi¡
+(
+‹¡
+,
+cÝy
+(
+I1
+[
+i
+])).
+is_obvious_utÞogy
+()) {
+
+538 ià(
+ g¡•
+[
+i
+] == 0)
+
+539
+¡•
+[
+i
+] =
+this_¡•
+;
+
+541
+ g¡•
+[
+i
+] =
+lcm
+(
+¡•
+[i],
+this_¡•
+);
+
+543
+ glb
+ =
+cur_lb
+;
+
+552 
+size_t
+
+ gi
+ = 0; i <
+ gis_exaù
+.
+size
+(); i++)
+
+553 ià(!
+ gis_exaù
+[
+i
+])
+
+554
+ gglob®_¡•
+ =
+gcd
+(
+glob®_¡•
+,
+¡•
+[
+i
+]);
+
+555 ià(
+ gglob®_¡•
+ =ð1 ||
+glob®_¡•
+ == 0)
+
+556 
+R–©iÚ
+::
+True
+(
+n
+);
+
+558
+R–©iÚ
+
+ g»suÉ
+ =
+ü—‹_¡ride_Ú_bound
+(
+n
+,
+lb
+,
+glob®_¡•
+);
+
+561 
+size_t
+
+ gi
+ = 0; i <
+ gI1
+.
+size
+(); i++)
+
+562 ià(
+ g¡•
+[
+i
+] == 0) {
+
+563 ià(!
+Gi¡
+(
+cÝy
+(
+»suÉ
+), cÝy(
+I1
+[
+i
+])).
+is_obvious_utÞogy
+())
+
+564 
+R–©iÚ
+::
+True
+(
+n
+);
+
+567 
+ g»suÉ
+;
+
+574
+CG_ouutR•r
+*
+ouutS‹m’t
+(
+CG_ouutBužd”
+ *
+ocg
+, CG_ouutR•¸*
+¡mt
+, 
+šd’t
+, cÚ¡
+R–©iÚ
+ &
+m­pšg_
+, cÚ¡ R–©iÚ &
+known_
+, cÚ¡
+¡d
+::
+veùÜ
+<CG_ouutR•¸*> &
+assigÃd_Ú_the_æy
+) {
+
+575
+R–©iÚ
+
+m­pšg
+ =
+cÝy
+(
+m­pšg_
+);
+
+576
+R–©iÚ
+
+ gknown
+ =
+cÝy
+(
+known_
+);
+
+577
+ gTu¶e
+<
+ g¡d
+::
+¡ršg
+>
+loÝ_v¬s
+;
+
+579 
+ gi
+ = 1; i <ð
+m­pšg
+.
+n_šp
+(); i++)
+
+580
+ gloÝ_v¬s
+.
+­³nd
+(
+m­pšg
+.
+šput_v¬
+(
+i
+)->
+Çme
+());
+
+583 ià(
+ gknown
+.
+n_£t
+(è>
+ gm­pšg
+.
+n_out
+()) {
+
+584
+R–©iÚ
+
+r
+(
+known
+.
+n_£t
+(),
+m­pšg
+.
+n_out
+());
+
+585
+F_And
+ *
+ gf_roÙ
+ =
+r
+.
+add_ªd
+();
+
+586 
+ gi
+ = 1; i <ð
+m­pšg
+.
+n_out
+(); i++) {
+
+587
+EQ_HªdË
+
+ gh
+ =
+f_roÙ
+->
+add_EQ
+();
+
+588
+ gh
+.
+upd©e_cÛf
+(
+r
+.
+šput_v¬
+(
+i
+), 1);
+
+589
+ gh
+.
+upd©e_cÛf
+(
+r
+.
+ouut_v¬
+(
+i
+), -1);
+
+591
+ gknown
+ =
+Rªge
+(
+Re¡riù_Domaš
+(
+r
+,
+known
+));
+
+592
+ gknown
+.
+sim¶ify
+();
+
+596
+R–©iÚ
+
+k
+(
+known
+.
+n_£t
+());
+
+597
+F_And
+ *
+ gf_roÙ
+ =
+k
+.
+add_ªd
+();
+
+598
+CÚjunù
+ *
+ gc
+ =
+known
+.
+qu”y_DNF
+()->
+sšgË_cÚjunù
+();
+
+599 
+EQ_I‹¿tÜ
+
+ ge
+ =
+c
+->
+EQs
+();ƒ;ƒ++) {
+
+600 ià(!(*
+ ge
+).
+has_wždÿrds
+())
+
+601
+ gf_roÙ
+->
+add_EQ
+(*
+e
+);
+
+603
+ gk
+.
+sim¶ify
+();
+
+606
+R–©iÚ
+
+ gInv_m­pšg
+ =
+Re¡riù_Domaš
+(
+Invӣ
+(
+m­pšg
+),
+k
+);
+
+607
+ gTu¶e
+<
+ gCG_ouutR•r
+*>
+ gsLi¡
+ =
+ouutSub¡™utiÚ
+(
+ocg
+,
+Inv_m­pšg
+,
+assigÃd_Ú_the_æy
+);
+
+609 
+ gocg
+->
+C»©ePÏûHÞd”
+(
+šd’t
+,
+¡mt
+,
+sLi¡
+,
+loÝ_v¬s
+);
+
+614
+boÞ
+
+fšdFloÜIÃqu®™y
+(
+R–©iÚ
+ &
+r
+,
+V¬ŸbË_ID
+
+v
+,
+GEQ_HªdË
+ &
+h
+, V¬ŸbË_ID
+exþuded
+) {
+
+615
+CÚjunù
+ *
+ gc
+ =
+r
+.
+sšgË_cÚjunù
+();
+
+617
+ g¡d
+::
+£t
+<
+V¬ŸbË_ID
+>
+v¬_checked
+;
+
+618
+ g¡d
+::
+¡ack
+<
+V¬ŸbË_ID
+>
+v¬_checkšg
+;
+
+619
+ gv¬_checkšg
+.
+push
+(
+v
+);
+
+621 !
+ gv¬_checkšg
+.
+em±y
+()) {
+
+622
+V¬ŸbË_ID
+
+ gv2
+ =
+v¬_checkšg
+.
+tÝ
+();
+
+623
+ gv¬_checkšg
+.
+pÝ
+();
+
+625
+boÞ
+
+ gis_æoÜ
+ =
+çl£
+;
+
+626 
+GEQ_I‹¿tÜ
+
+gi
+(
+c
+);
+ ggi
+; gi++) {
+
+627 ià(
+ gexþuded
+ !ð
+NULL
+ && (*
+gi
+).
+g‘_cÛf
+(
+exþuded
+) != 0)
+
+630
+cÛf_t
+
+ ga
+ = (*
+gi
+).
+g‘_cÛf
+(
+v2
+);
+
+631 ià(
+ ga
+ < 0) {
+
+632 
+GEQ_I‹¿tÜ
+
+gi2
+(
+c
+);
+ ggi2
+; gi2++) {
+
+633
+cÛf_t
+
+ gb
+ = (*
+gi2
+).
+g‘_cÛf
+(
+v2
+);
+
+634 ià(
+ gb
+ =ð-
+a
+ && (*
+gi
+).
+g‘_cÚ¡
+()+(*
+gi2
+).get_const() < -a) {
+
+635
+boÞ
+
+m©ch
+ =
+Œue
+;
+
+636 
+CÚ¡r_V¬s_I‹r
+
+cvi
+(*
+gi
+);
+ gcvi
+; cvi++)
+
+637 ià((*
+ ggi2
+).
+g‘_cÛf
+((*
+cvi
+).
+v¬
+è!ð-(*cvi).
+cÛf
+) {
+
+638
+m©ch
+ =
+çl£
+;
+
+641 ià(!
+ gm©ch
+)
+
+643 
+CÚ¡r_V¬s_I‹r
+
+cvi
+(*
+gi2
+);
+ gcvi
+; cvi++)
+
+644 ià((*
+ ggi
+).
+g‘_cÛf
+((*
+cvi
+).
+v¬
+è!ð-(*cvi).
+cÛf
+) {
+
+645
+m©ch
+ =
+çl£
+;
+
+648 ià(
+ gm©ch
+) {
+
+649
+ gv¬_checked
+.
+š£¹
+(
+v2
+);
+
+650
+ gis_æoÜ
+ =
+Œue
+;
+
+651 ià(
+ gv
+ =ð
+v2
+)
+
+652
+h
+ = *
+gi
+;
+
+654 
+CÚ¡r_V¬s_I‹r
+
+cvi
+(*
+gi
+);
+ gcvi
+; cvi++)
+
+655 ià(((*
+ gcvi
+).
+ gv¬
+->
+kšd
+(è=ð
+Exi¡s_V¬
+ || (*
+cvi
+).
+v¬
+->kšd(è=ð
+Wždÿrd_V¬
+) &&
+
+656
+v¬_checked
+.
+fšd
+((*
+cvi
+).
+v¬
+è=ðv¬_checked.
+’d
+())
+
+657
+v¬_checkšg
+.
+push
+((*
+cvi
+).
+v¬
+);
+
+663 ià(
+ gis_æoÜ
+)
+
+667 ià(!
+ gis_æoÜ
+)
+
+668 
+ gçl£
+;
+
+670 
+ gŒue
+;
+
+680
+CG_ouutR•r
+*
+ouut_as_gu¬d
+(
+CG_ouutBužd”
+*
+ocg
+, cÚ¡
+R–©iÚ
+ &
+gu¬ds_š
+,
+CÚ¡¿št_HªdË
+
+e
+,
+boÞ
+
+is_equ®™y
+, cÚ¡
+¡d
+::
+veùÜ
+<CG_ouutR•¸*> &
+assigÃd_Ú_the_æy
+) {
+
+681
+R–©iÚ
+ &
+gu¬ds
+ =
+cÚ¡_ÿ¡
+<R–©iÚ &>(
+gu¬ds_š
+);
+
+682 ià(
+ ge
+.
+has_wždÿrds
+())
+
+683
+throw
+
+ g¡d
+::
+šv®id_¬gum’t
+("constraint must‚ot have wildcard");
+
+685
+V¬ŸbË_ID
+
+ gv
+ = (*
+CÚ¡r_V¬s_I‹r
+(
+e
+)).
+v¬
+;
+
+687
+cÛf_t
+
+ g§ved_cÛf
+ = ((
+e
+).
+g‘_cÛf
+(
+v
+));
+
+688 
+ gsign
+ =
+§ved_cÛf
+ < 0 ? -1 : 1;
+
+690 (
+ ge
+).
+upd©e_cÛf_duršg_sim¶ify
+(
+v
+, -
+§ved_cÛf
++
+sign
+);
+
+691
+CG_ouutR•r
+*
+ grÝ
+ =
+ouutEasyBoundAsR•r
+(
+ocg
+,
+gu¬ds
+,
+e
+,
+v
+,
+çl£
+, 0,
+assigÃd_Ú_the_æy
+);
+
+692 (
+ ge
+).
+upd©e_cÛf_duršg_sim¶ify
+(
+v
+,
+§ved_cÛf
+-
+sign
+);
+
+694
+CG_ouutR•r
+*
+ glÝ
+ =
+ouutId’t
+(
+ocg
+,
+gu¬ds
+,
+v
+,
+assigÃd_Ú_the_æy
+);
+
+695 ià(
+abs
+(
+§ved_cÛf
+) != 1)
+
+696
+lÝ
+ =
+ocg
+->
+C»©eTimes
+(ocg->
+C»©eIÁ
+(
+abs
+(
+§ved_cÛf
+)),†op);
+
+699 ià(
+ gis_equ®™y
+) {
+
+700 
+ gocg
+->
+C»©eEQ
+(
+lÝ
+,
+rÝ
+);
+
+703 ià(
+ g§ved_cÛf
+ < 0)
+
+704 
+ gocg
+->
+C»©eLE
+(
+lÝ
+,
+rÝ
+);
+
+706 
+ gocg
+->
+C»©eGE
+(
+lÝ
+,
+rÝ
+);
+
+715
+CG_ouutR•r
+ *
+ouut_EQ_¡rides
+(
+CG_ouutBužd”
+*
+ocg
+, cÚ¡
+R–©iÚ
+ &
+gu¬ds_š
+, cÚ¡
+¡d
+::
+veùÜ
+<CG_ouutR•¸*> &
+assigÃd_Ú_the_æy
+) {
+
+716
+R–©iÚ
+
+gu¬ds
+ =
+cÚ¡_ÿ¡
+<R–©iÚ &>(
+gu¬ds_š
+);
+
+717
+CÚjunù
+ *
+ gc
+ =
+gu¬ds
+.
+sšgË_cÚjunù
+();
+
+719
+CG_ouutR•r
+ *
+ geqR•r
+ =
+NULL
+;
+
+721 
+EQ_I‹¿tÜ
+
+ei
+(
+c
+->
+EQs
+());
+ gei
+;ƒi++) {
+
+722
+V¬ŸbË_ID
+
+ gwc
+ =
+NULL
+;
+
+723 
+CÚ¡r_V¬s_I‹r
+
+cvi
+((*
+ei
+),
+Œue
+);
+ gcvi
+; cvi++) {
+
+724 ià(
+ gwc
+ !ð
+NULL
+)
+
+725
+throw
+
+codeg’_”rÜ
+("Can't generateƒquality condition with multiple wildcards");
+
+727
+ gwc
+ = (*
+cvi
+).
+v¬
+;
+
+729 ià(
+ gwc
+ =ð
+NULL
+)
+
+732
+cÛf_t
+
+ g¡•
+ = (*
+ei
+).
+g‘_cÛf
+(
+wc
+);
+
+734 (*
+ gei
+).
+upd©e_cÛf_duršg_sim¶ify
+(
+wc
+, 1-
+¡•
+);
+
+735
+CG_ouutR•r
+*
+ glÝ
+ =
+ouutEasyBoundAsR•r
+(
+ocg
+,
+gu¬ds
+, (*
+ei
+),
+wc
+,
+çl£
+, 0,
+assigÃd_Ú_the_æy
+);
+
+736 (*
+ gei
+).
+upd©e_cÛf_duršg_sim¶ify
+(
+wc
+,
+¡•
+-1);
+
+738
+CG_ouutR•r
+*
+ grÝ
+ =
+ocg
+->
+C»©eIÁ
+(
+abs
+(
+¡•
+));
+
+739
+CG_ouutR•r
+*
+ gštMod
+ =
+ocg
+->
+C»©eIÁeg”Mod
+(
+lÝ
+,
+rÝ
+);
+
+740
+CG_ouutR•r
+*
+ geqNode
+ =
+ocg
+->
+C»©eEQ
+(
+štMod
+, ocg->
+C»©eIÁ
+(0));
+
+742
+ geqR•r
+ =
+ocg
+->
+C»©eAnd
+(
+eqR•r
+,
+eqNode
+);
+
+745 
+ geqR•r
+;
+
+759
+CG_ouutR•r
+ *
+ouut_GEQ_¡rides
+(
+CG_ouutBužd”
+*
+ocg
+, cÚ¡
+R–©iÚ
+ &
+gu¬ds_š
+, cÚ¡
+¡d
+::
+veùÜ
+<CG_ouutR•¸*> &
+assigÃd_Ú_the_æy
+) {
+
+760
+R–©iÚ
+
+gu¬ds
+ =
+cÚ¡_ÿ¡
+<R–©iÚ &>(
+gu¬ds_š
+);
+
+761
+CÚjunù
+ *
+ gc
+ =
+gu¬ds
+.
+sšgË_cÚjunù
+();
+
+763
+CG_ouutR•r
+*
+ ggeqR•r
+ =
+NULL
+;
+
+765
+ g¡d
+::
+£t
+<
+V¬ŸbË_ID
+>
+nÚ_Üphª_wždÿrd
+;
+
+766 
+GEQ_I‹¿tÜ
+
+gi
+(
+c
+);
+ ggi
+; gi++) {
+
+767 
+ gnum_wžd
+ = 0;
+
+768
+V¬ŸbË_ID
+
+ gfœ¡_Úe
+;
+
+769 
+CÚ¡r_V¬s_I‹r
+
+cvi
+(*
+gi
+,
+Œue
+);
+ gcvi
+; cvi++) {
+
+770
+ gnum_wžd
+++;
+
+771 ià(
+ gnum_wžd
+ == 1)
+
+772
+fœ¡_Úe
+ = (*
+cvi
+).
+v¬
+;
+
+774
+ gnÚ_Üphª_wždÿrd
+.
+š£¹
+((*
+cvi
+).
+v¬
+);
+
+776 ià(
+ gnum_wžd
+ > 1)
+
+777
+ gnÚ_Üphª_wždÿrd
+.
+š£¹
+(
+fœ¡_Úe
+);
+
+780 
+ gi
+ = 1; i <ð(*(
+c
+->
+v¬ŸbËs
+())).
+size
+(); i++) {
+
+781
+V¬ŸbË_ID
+
+ gwc
+ = (*(
+c
+->
+v¬ŸbËs
+()))[
+i
+];
+
+782 ià(
+ gwc
+->
+kšd
+(è=ð
+Wždÿrd_V¬
+ &&
+nÚ_Üphª_wždÿrd
+.
+fšd
+(
+wc
+è=ðnÚ_Üphª_wždÿrd.
+’d
+()) {
+
+783
+Tu¶e
+<
+GEQ_HªdË
+>
+low”
+,
+uµ”
+;
+
+784 
+GEQ_I‹¿tÜ
+
+gi
+(
+c
+);
+ ggi
+; gi++) {
+
+785 if((*
+ ggi
+).
+g‘_cÛf
+(
+wc
+) > 0)
+
+786
+ glow”
+.
+­³nd
+(*
+gi
+);
+
+787 if((*
+ ggi
+).
+g‘_cÛf
+(
+wc
+) < 0)
+
+788
+ guµ”
+.
+­³nd
+(*
+gi
+);
+
+793 
+ gTu¶e_I‹¿tÜ
+<
+ gGEQ_HªdË
+>
+low
+(
+low”
+);
+ glow
+;†ow++) {
+
+794 
+ gTu¶e_I‹¿tÜ
+<
+ gGEQ_HªdË
+>
+up
+(
+uµ”
+);
+ gup
+; up++) {
+
+795
+cÛf_t
+
+ glow_cÛf
+ = (*
+low
+).
+g‘_cÛf
+(
+wc
+);
+
+796
+cÛf_t
+
+ gup_cÛf
+ = (*
+up
+).
+g‘_cÛf
+(
+wc
+);
+
+798 (*
+ glow
+).
+upd©e_cÛf_duršg_sim¶ify
+(
+wc
+, 1-
+low_cÛf
+);
+
+799
+CG_ouutR•r
+*
+ glowEx´
+ =
+ouutEasyBoundAsR•r
+(
+ocg
+,
+gu¬ds
+, *
+low
+,
+wc
+,
+çl£
+, 0,
+assigÃd_Ú_the_æy
+);
+
+800 (*
+ glow
+).
+upd©e_cÛf_duršg_sim¶ify
+(
+wc
+,
+low_cÛf
+-1);
+
+802 (*
+ gup
+).
+upd©e_cÛf_duršg_sim¶ify
+(
+wc
+, -1-
+up_cÛf
+);
+
+803
+CG_ouutR•r
+*
+ gupEx´
+ =
+ouutEasyBoundAsR•r
+(
+ocg
+,
+gu¬ds
+, *
+up
+,
+wc
+,
+çl£
+, 0,
+assigÃd_Ú_the_æy
+);
+
+804 (*
+ gup
+).
+upd©e_cÛf_duršg_sim¶ify
+(
+wc
+,
+up_cÛf
++1);
+
+806
+CG_ouutR•r
+*
+ gštDiv
+ =
+ocg
+->
+C»©eIÁeg”Divide
+(
+upEx´
+, ocg->
+C»©eIÁ
+(-
+up_cÛf
+));
+
+807
+CG_ouutR•r
+*
+ grÝ
+ =
+ocg
+->
+C»©eTimes
+(ocg->
+C»©eIÁ
+(
+low_cÛf
+),
+štDiv
+);
+
+808
+CG_ouutR•r
+*
+ ggeqNode
+ =
+ocg
+->
+C»©eLE
+(
+lowEx´
+,
+rÝ
+);
+
+810
+ ggeqR•r
+ =
+ocg
+->
+C»©eAnd
+(
+geqR•r
+,
+geqNode
+);
+
+816 ià(
+ gnÚ_Üphª_wždÿrd
+.
+size
+() > 0) {
+
+826
+throw
+
+codeg’_”rÜ
+("Can't generate multiple wildcard GEQ guards„ight‚ow");
+
+829 
+ ggeqR•r
+;
+
+836
+CG_ouutR•r
+ *
+ouutGu¬d
+(
+CG_ouutBužd”
+*
+ocg
+, cÚ¡
+R–©iÚ
+ &
+gu¬ds_š
+, cÚ¡
+¡d
+::
+veùÜ
+<CG_ouutR•¸*> &
+assigÃd_Ú_the_æy
+) {
+
+837
+R–©iÚ
+ &
+gu¬ds
+ =
+cÚ¡_ÿ¡
+<R–©iÚ &>(
+gu¬ds_š
+);
+
+838 ià(
+ ggu¬ds
+.
+is_nuÎ
+(è|| gu¬ds.
+is_obvious_utÞogy
+())
+
+839 
+ gNULL
+;
+
+841
+CG_ouutR•r
+*
+ gnodeR•r
+ =
+NULL
+;
+
+843
+CG_ouutR•r
+ *
+ geqSŒideR•r
+ =
+ouut_EQ_¡rides
+(
+ocg
+,
+gu¬ds
+,
+assigÃd_Ú_the_æy
+);
+
+844
+ gnodeR•r
+ =
+ocg
+->
+C»©eAnd
+(
+nodeR•r
+,
+eqSŒideR•r
+);
+
+846
+CG_ouutR•r
+ *
+ ggeqSŒideR•r
+ =
+ouut_GEQ_¡rides
+(
+ocg
+,
+gu¬ds
+,
+assigÃd_Ú_the_æy
+);
+
+847
+ gnodeR•r
+ =
+ocg
+->
+C»©eAnd
+(
+nodeR•r
+,
+geqSŒideR•r
+);
+
+849
+CÚjunù
+ *
+ gc
+ =
+gu¬ds
+.
+sšgË_cÚjunù
+();
+
+850 
+EQ_I‹¿tÜ
+
+ei
+(
+c
+->
+EQs
+());
+ gei
+;ƒi++)
+
+851 ià(!(*
+ gei
+).
+has_wždÿrds
+()) {
+
+852
+CG_ouutR•r
+ *
+ geqR•r
+ =
+ouut_as_gu¬d
+(
+ocg
+,
+gu¬ds
+, (*
+ei
+),
+Œue
+,
+assigÃd_Ú_the_æy
+);
+
+853
+ gnodeR•r
+ =
+ocg
+->
+C»©eAnd
+(
+nodeR•r
+,
+eqR•r
+);
+
+855 
+GEQ_I‹¿tÜ
+
+gi
+(
+c
+->
+GEQs
+());
+ ggi
+; gi++)
+
+856 ià(!(*
+ ggi
+).
+has_wždÿrds
+()) {
+
+857
+CG_ouutR•r
+ *
+ ggeqR•r
+ =
+ouut_as_gu¬d
+(
+ocg
+,
+gu¬ds
+, (*
+gi
+),
+çl£
+,
+assigÃd_Ú_the_æy
+);
+
+858
+ gnodeR•r
+ =
+ocg
+->
+C»©eAnd
+(
+nodeR•r
+,
+geqR•r
+);
+
+861 
+ gnodeR•r
+;
+
+869
+CG_ouutR•r
+ *
+ouutLBasR•r
+(
+CG_ouutBužd”
+*
+ocg
+, cÚ¡
+GEQ_HªdË
+ &
+g
+,
+
+870
+R–©iÚ
+ &
+bounds
+,
+V¬ŸbË_ID
+
+v
+,
+
+871
+cÛf_t
+
+¡ride
+, cÚ¡
+EQ_HªdË
+ &
+¡rideEQ
+,
+
+872
+R–©iÚ
+
+known
+, cÚ¡
+¡d
+::
+veùÜ
+<
+CG_ouutR•r
+ *> &
+assigÃd_Ú_the_æy
+) {
+
+873 #ià!
+defšed
+
+NDEBUG
+
+
+874
+cÛf_t
+
+v_cÛf
+;
+
+875
+as£¹
+((
+v_cÛf
+ =
+g
+.
+g‘_cÛf
+(
+v
+)) > 0);
+
+878
+ g¡d
+::
+¡ršg
+
+s
+;
+
+879
+CG_ouutR•r
+ *
+ glbR•r
+;
+
+880 ià(
+ g¡ride
+ == 1) {
+
+881
+lbR•r
+ =
+ouutEasyBoundAsR•r
+(
+ocg
+,
+bounds
+,
+g
+,
+v
+,
+çl£
+, 1,
+assigÃd_Ú_the_æy
+);
+
+884 ià(!
+boundH™sSŒide
+(
+g
+,
+v
+,
+¡rideEQ
+,
+¡ride
+,
+known
+)) {
+
+885
+ gbounds
+.
+£tup_Çmes
+();
+
+887
+CG_¡ršgBužd”
+
+ goscg
+;
+
+888
+ g¡d
+::
+¡ršg
+
+c
+ =
+G‘SŒšg
+(
+ouutEasyBoundAsR•r
+(&
+oscg
+,
+bounds
+,
+¡rideEQ
+,
+v
+,
+Œue
+, 0,
+assigÃd_Ú_the_æy
+));
+
+889
+CG_ouutR•r
+ *
+ gcR•r
+ =
+NULL
+;
+
+890 ià(
+ gc
+ !ð
+¡d
+::
+¡ršg
+("0"))
+
+891
+cR•r
+ =
+ouutEasyBoundAsR•r
+(
+ocg
+,
+bounds
+,
+¡rideEQ
+,
+v
+,
+Œue
+, 0,
+assigÃd_Ú_the_æy
+);
+
+892
+ g¡d
+::
+¡ršg
+
+Lov”M
+ =
+G‘SŒšg
+(
+ouutEasyBoundAsR•r
+(&
+oscg
+,
+bounds
+,
+g
+,
+v
+,
+çl£
+, 1,
+assigÃd_Ú_the_æy
+));
+
+893
+CG_ouutR•r
+ *
+ gLov”MR•r
+ =
+NULL
+;
+
+894 ià(
+ gLov”M
+ !ð
+¡d
+::
+¡ršg
+("0"))
+
+895
+Lov”MR•r
+ =
+ouutEasyBoundAsR•r
+(
+ocg
+,
+bounds
+,
+g
+,
+v
+,
+çl£
+, 1,
+assigÃd_Ú_the_æy
+);
+
+897 ià(
+ gcode_g’_debug
+ > 2) {
+
+898
+årštf
+(
+DebugFže
+,"::: Lov”M i %s\n",
+Lov”M
+.
+c_¡r
+());
+
+899
+årštf
+(
+DebugFže
+,"::: c i %s\n",
+c
+.
+c_¡r
+());
+
+902 
+ gcom¶ex™y1
+ = 0,
+ gcom¶ex™y2
+ = 0;
+
+903 
+size_t
+
+ gi
+ = 0; i <
+ gc
+.
+Ëngth
+(); i++)
+
+904 ià(
+ gc
+[
+i
+] =ð'+' ||
+c
+[i] == '-' || c[i] == '*' || c[i] == '/')
+
+905
+com¶ex™y1
+++;
+
+906 ià(
+ gc
+[
+i
+] == ',')
+
+907
+com¶ex™y1
+ += 2;
+
+908 
+size_t
+
+ gi
+ = 0; i <
+ gLov”M
+.
+Ëngth
+(); i++)
+
+909 ià(
+ gLov”M
+[
+i
+] =ð'+' ||
+Lov”M
+[i] == '-' || LoverM[i] == '*' || LoverM[i] == '/')
+
+910
+com¶ex™y2
+++;
+
+911 ià(
+ gLov”M
+[
+i
+] == ',')
+
+912
+com¶ex™y2
+ += 2;
+
+914 ià(
+ gcom¶ex™y1
+ <
+ gcom¶ex™y2
+) {
+
+915
+CG_ouutR•r
+ *
+ gidUp
+ =
+Lov”MR•r
+;
+
+916
+CG_ouutR•r
+ *
+ gc1R•r
+ =
+ocg
+->
+C»©eCÝy
+(
+cR•r
+);
+
+917
+ gidUp
+ =
+ocg
+->
+C»©eMšus
+(
+idUp
+,
+c1R•r
+);
+
+918
+ gidUp
+ =
+ocg
+->
+C»©ePlus
+(
+idUp
+, ocg->
+C»©eIÁ
+(
+¡ride
+-1));
+
+919
+CG_ouutR•r
+ *
+ gidLow
+ =
+ocg
+->
+C»©eIÁ
+(
+¡ride
+);
+
+920
+ glbR•r
+ =
+ocg
+->
+C»©eTimes
+(ocg->
+C»©eIÁ
+(
+¡ride
+),
+
+921
+ocg
+->
+C»©eIÁeg”Divide
+(
+idUp
+,
+idLow
+));
+
+922
+ glbR•r
+ =
+ocg
+->
+C»©ePlus
+(
+lbR•r
+,
+cR•r
+);
+
+925
+CG_ouutR•r
+ *
+ gLov”M1R•r
+ =
+ocg
+->
+C»©eCÝy
+(
+Lov”MR•r
+);
+
+926
+CG_ouutR•r
+ *
+ gimUp
+ =
+ocg
+->
+C»©eMšus
+(
+cR•r
+,
+Lov”M1R•r
+);
+
+927
+CG_ouutR•r
+ *
+ gimLow
+ =
+ocg
+->
+C»©eIÁ
+(
+¡ride
+);
+
+928
+CG_ouutR•r
+ *
+ gštMod
+ =
+ocg
+->
+C»©eIÁeg”Mod
+(
+imUp
+,
+imLow
+);
+
+929
+ glbR•r
+ =
+ocg
+->
+C»©ePlus
+(
+Lov”MR•r
+,
+štMod
+);
+
+934
+ gbounds
+.
+£tup_Çmes
+();
+
+935
+ glbR•r
+ =
+ouutEasyBoundAsR•r
+(
+ocg
+,
+bounds
+,
+g
+,
+v
+,
+çl£
+, 0,
+assigÃd_Ú_the_æy
+);
+
+939 
+ glbR•r
+;
+
+946
+CG_ouutR•r
+ *
+ouutUBasR•r
+(
+CG_ouutBužd”
+*
+ocg
+, cÚ¡
+GEQ_HªdË
+ &
+g
+,
+
+947
+R–©iÚ
+ &
+bounds
+,
+
+948
+V¬ŸbË_ID
+
+v
+,
+
+949
+cÛf_t
+ ,
+
+950 cÚ¡
+EQ_HªdË
+ & ,
+
+951 cÚ¡
+¡d
+::
+veùÜ
+<
+CG_ouutR•r
+ *> &
+assigÃd_Ú_the_æy
+) {
+
+952
+as£¹
+(
+g
+.
+g‘_cÛf
+(
+v
+) < 0);
+
+953
+CG_ouutR•r
+*
+ gupR•r
+ =
+ouutEasyBoundAsR•r
+(
+ocg
+,
+bounds
+,
+g
+,
+v
+,
+çl£
+, 0,
+assigÃd_Ú_the_æy
+);
+
+954 
+ gupR•r
+;
+
+966
+CG_ouutR•r
+*
+ouutEasyBoundAsR•r
+(
+CG_ouutBužd”
+*
+ocg
+,
+R–©iÚ
+ &
+bounds
+,
+
+967 cÚ¡
+CÚ¡¿št_HªdË
+ &
+g
+,
+V¬ŸbË_ID
+
+v
+,
+
+968
+boÞ
+
+ignÜeWC
+,
+
+969 
+ûžšg
+,
+
+970 cÚ¡
+¡d
+::
+veùÜ
+<
+CG_ouutR•r
+ *> &
+assigÃd_Ú_the_æy
+) {
+
+974
+CG_ouutR•r
+*
+—syBoundR•r
+ =
+NULL
+;
+
+976
+cÛf_t
+
+ gv_cÛf
+ =
+g
+.
+g‘_cÛf
+(
+v
+);
+
+977 
+ gv_sign
+ =
+v_cÛf
+ > 0 ? 1 : -1;
+
+978
+ gv_cÛf
+ *ð
+v_sign
+;
+
+979
+as£¹
+(
+v_cÛf
+ > 0);
+
+982 
+ gsign_adj
+ = -
+v_sign
+;
+
+987 
+CÚ¡r_V¬s_I‹r
+
+c2
+(
+g
+,
+çl£
+);
+ gc2
+; c2++) {
+
+988 ià((*
+ gc2
+).
+ gv¬
+ !ð
+v
+ && (!
+ignÜeWC
+ || (*
+c2
+).
+v¬
+->
+kšd
+()!=
+Wždÿrd_V¬
+)) {
+
+990
+cÛf_t
+
+cf
+ = (*
+c2
+).
+cÛf
+*
+sign_adj
+;
+
+991
+as£¹
+(
+cf
+ != 0);
+
+993
+CG_ouutR•r
+ *
+ gv¬Name
+;
+
+994 ià((*
+ gc2
+).
+ gv¬
+->
+kšd
+(è=ð
+Wždÿrd_V¬
+) {
+
+995
+GEQ_HªdË
+
+h
+;
+
+996 ià(!
+fšdFloÜIÃqu®™y
+(
+bounds
+, (*
+c2
+).
+v¬
+,
+h
+,
+v
+)) {
+
+997 ià(
+ g—syBoundR•r
+ !ð
+NULL
+) {
+
+998
+—syBoundR•r
+->
+þ—r
+();
+
+999
+d–‘e
+
+ g—syBoundR•r
+;
+
+1001 
+ gNULL
+;
+
+1003
+ gv¬Name
+ =
+ouutEasyBoundAsR•r
+(
+ocg
+,
+bounds
+,
+h
+, (*
+c2
+).
+v¬
+,
+çl£
+, 0,
+assigÃd_Ú_the_æy
+);
+
+1006
+ gv¬Name
+ =
+ouutId’t
+(
+ocg
+,
+bounds
+, (*
+c2
+).
+v¬
+,
+assigÃd_Ú_the_æy
+);
+
+1008
+CG_ouutR•r
+ *
+ gcfR•r
+ =
+NULL
+;
+
+1010 ià(
+ gcf
+ > 1) {
+
+1011
+ gcfR•r
+ =
+ocg
+->
+C»©eIÁ
+(
+cf
+);
+
+1012
+CG_ouutR•r
+*
+ grbR•r
+ =
+ocg
+->
+C»©eTimes
+(
+cfR•r
+,
+v¬Name
+);
+
+1013
+ g—syBoundR•r
+ =
+ocg
+->
+C»©ePlus
+(
+—syBoundR•r
+,
+rbR•r
+);
+
+1015 ià(
+ gcf
+ < -1) {
+
+1016
+ gcfR•r
+ =
+ocg
+->
+C»©eIÁ
+(-
+cf
+);
+
+1017
+CG_ouutR•r
+*
+ grbR•r
+ =
+ocg
+->
+C»©eTimes
+(
+cfR•r
+,
+v¬Name
+);
+
+1018
+ g—syBoundR•r
+ =
+ocg
+->
+C»©eMšus
+(
+—syBoundR•r
+,
+rbR•r
+);
+
+1020 ià(
+ gcf
+ == 1) {
+
+1021
+—syBoundR•r
+ =
+ocg
+->
+C»©ePlus
+ÓasyBoundR•r,
+v¬Name
+);
+
+1023 ià(
+ gcf
+ == -1) {
+
+1024
+—syBoundR•r
+ =
+ocg
+->
+C»©eMšus
+ÓasyBoundR•r,
+v¬Name
+);
+
+1029 ià(
+ gg
+.
+g‘_cÚ¡
+()) {
+
+1030
+cÛf_t
+
+ gcf
+ =
+g
+.
+g‘_cÚ¡
+()*
+sign_adj
+;
+
+1031
+as£¹
+(
+cf
+ != 0);
+
+1032 ià(
+ gcf
+ > 0) {
+
+1033
+ g—syBoundR•r
+ =
+ocg
+->
+C»©ePlus
+(
+—syBoundR•r
+, ocg->
+C»©eIÁ
+(
+cf
+));
+
+1036
+ g—syBoundR•r
+ =
+ocg
+->
+C»©eMšus
+(
+—syBoundR•r
+, ocg->
+C»©eIÁ
+(-
+cf
+));
+
+1040 if(
+ g—syBoundR•r
+ =ð
+NULL
+) {
+
+1041
+—syBoundR•r
+ =
+ocg
+->
+C»©eIÁ
+(0);
+
+1045 ià(
+ gv_cÛf
+ > 1) {
+
+1046
+as£¹
+(
+ûžšg
+ >= 0);
+
+1047 ià(
+ gûžšg
+) {
+
+1048
+ g—syBoundR•r
+ocg
+->
+C»©ePlus
+(
+—syBoundR•r
+, ocg->
+C»©eIÁ
+(
+v_cÛf
+-1));
+
+1050
+ g—syBoundR•r
+ =
+ocg
+->
+C»©eIÁeg”Divide
+(
+—syBoundR•r
+, ocg->
+C»©eIÁ
+(
+v_cÛf
+));
+
+1053 
+ g—syBoundR•r
+;
+
+1062
+ g¡d
+::
+·œ
+<
+CG_ouutR•r
+ *,
+ gboÞ
+>
+ouutBounds
+(
+CG_ouutBužd”
+*
+ocg
+, cÚ¡
+R–©iÚ
+ &
+bounds
+,
+V¬ŸbË_ID
+
+v
+, 
+šd’t
+, R–©iÚ &
+’fÜûd
+, cÚ¡
+¡d
+::
+veùÜ
+<CG_ouutR•¸*> &
+assigÃd_Ú_the_æy
+) {
+
+1063
+R–©iÚ
+
+b
+ =
+cÝy
+(
+bounds
+);
+
+1064
+CÚjunù
+ *
+ gc
+ =
+b
+.
+qu”y_DNF
+()->
+sšgË_cÚjunù
+();
+
+1068
+R–©iÚ
+
+ gr1
+ = R–©iÚ::
+True
+(
+b
+.
+n_£t
+()),
+ gr2
+ = Relation::True(b.n_set());
+
+1069 
+EQ_I‹¿tÜ
+
+ei
+(
+c
+);
+ gei
+;ƒi++) {
+
+1070 ià((*
+ gei
+).
+g‘_cÛf
+(
+v
+è!ð0 && (*
+ei
+).
+has_wždÿrds
+()) {
+
+1071
+cÛf_t
+
+sign
+;
+
+1072 ià((*
+ gei
+).
+g‘_cÛf
+(
+v
+) > 0)
+
+1073
+ gsign
+ = 1;
+
+1075
+ gsign
+ = -1;
+
+1077
+cÛf_t
+
+ g¡ride
+ = 0;
+
+1078 
+CÚ¡r_V¬s_I‹r
+
+cvi
+(*
+ei
+,
+Œue
+);
+ gcvi
+; cvi++)
+
+1079 ià((*
+ gcvi
+).
+ gv¬
+->
+kšd
+(è=ð
+Wždÿrd_V¬
+) {
+
+1080
+¡ride
+ =
+abs
+((*
+cvi
+).
+cÛf
+);
+
+1085
+boÞ
+
+ gfound_m©ch
+ =
+çl£
+;
+
+1086 ià(
+abs
+((*
+ei
+).
+g‘_cÛf
+(
+v
+)) != 1) {
+
+1087
+cÛf_t
+
+d
+ =
+¡ride
+ /
+gcd
+(
+abs
+((*
+ei
+).
+g‘_cÛf
+(
+v
+)), stride);
+
+1088
+R–©iÚ
+
+ gr3
+ = R–©iÚ::
+True
+(
+b
+.
+n_£t
+());
+
+1089
+ gr3
+.
+ªd_w™h_EQ
+(*
+ei
+);
+
+1091 
+GEQ_I‹¿tÜ
+
+gi
+(
+c
+);
+ ggi
+; gi++) {
+
+1092 ià((*
+ ggi
+).
+g‘_cÛf
+(
+v
+è=ð1 && !(*
+gi
+).
+has_wždÿrds
+()) {
+
+1093
+R–©iÚ
+
+r4
+(
+b
+.
+n_£t
+());
+
+1094
+F_And
+ *
+ gf_roÙ
+ =
+r4
+.
+add_ªd
+();
+
+1095
+SŒide_HªdË
+
+ gh
+ =
+f_roÙ
+->
+add_¡ride
+(
+d
+);
+
+1097 
+CÚ¡r_V¬s_I‹r
+
+cvi
+(*
+gi
+);
+ gcvi
+; cvi++)
+
+1098 (*
+ gcvi
+).
+ gv¬
+->
+kšd
+()) {
+
+1099 
+ gIÅut_V¬
+: {
+
+1100 
+pos
+ = (*
+cvi
+).
+v¬
+->
+g‘_pos™iÚ
+();
+
+1101
+ gh
+.
+upd©e_cÛf
+(
+r4
+.
+£t_v¬
+(
+pos
+), (*
+cvi
+).
+cÛf
+);
+
+1104 
+ gGlob®_V¬
+: {
+
+1105
+Glob®_V¬_ID
+
+g
+ = (*
+cvi
+).
+v¬
+->
+g‘_glob®_v¬
+();
+
+1106
+V¬ŸbË_ID
+
+ gv
+;
+
+1107 ià(
+ gg
+->
+ªy
+() == 0)
+
+1108
+v
+ =
+r4
+.
+g‘_loÿl
+(
+g
+);
+
+1110
+ gv
+ =
+r4
+.
+g‘_loÿl
+(
+g
+, (*
+cvi
+).
+v¬
+->
+funùiÚ_of
+());
+
+1111
+ gh
+.
+upd©e_cÛf
+(
+v
+, (*
+cvi
+).
+cÛf
+);
+
+1115
+årštf
+(
+DebugFže
+, "can't deal withhe variableype in†ower bound\n");
+
+1116 
+ g¡d
+::
+make_·œ
+(
+¡©ic_ÿ¡
+<
+CG_ouutR•r
+ *>(
+NULL
+),
+çl£
+);
+
+1118
+ gh
+.
+upd©e_cÚ¡
+((*
+gi
+).
+g‘_cÚ¡
+());
+
+1120
+R–©iÚ
+
+ gr5
+ =
+Gi¡
+(
+cÝy
+(
+r3
+),
+IÁ”£ùiÚ
+(cÝy(
+r4
+), cÝy(
+’fÜûd
+)));
+
+1123 ià(
+ gr5
+.
+is_obvious_utÞogy
+()) {
+
+1124
+ gr1
+ =
+IÁ”£ùiÚ
+(
+r1
+,
+r4
+);
+
+1125
+ gfound_m©ch
+ =
+Œue
+;
+
+1132 
+GEQ_I‹¿tÜ
+
+gi
+(
+c
+);
+ ggi
+; gi++) {
+
+1133 ià((*
+ ggi
+).
+g‘_cÛf
+(
+v
+è=ð
+abs
+((*
+ei
+).g‘_cÛf(v)è&& !(*
+gi
+).
+has_wždÿrds
+()) {
+
+1134
+R–©iÚ
+
+r
+(
+b
+.
+n_£t
+());
+
+1135
+SŒide_HªdË
+
+ gh
+ =
+r
+.
+add_ªd
+()->
+add_¡ride
+(
+¡ride
+);
+
+1137 
+CÚ¡r_V¬s_I‹r
+
+cvi
+(*
+gi
+);
+ gcvi
+; cvi++)
+
+1138 (*
+ gcvi
+).
+ gv¬
+->
+kšd
+()) {
+
+1139 
+ gIÅut_V¬
+: {
+
+1140 
+pos
+ = (*
+cvi
+).
+v¬
+->
+g‘_pos™iÚ
+();
+
+1141 ià((*
+ gcvi
+).
+ gv¬
+ !ð
+v
+) {
+
+1142 
+t1
+ =
+št_mod
+((*
+cvi
+).
+cÛf
+,
+¡ride
+);
+
+1143 ià(
+ gt1
+ != 0) {
+
+1144
+cÛf_t
+
+t2
+ =
+’fÜûd
+.
+qu”y_v¬ŸbË_mod
+ÓnfÜûd.
+£t_v¬
+(
+pos
+),
+¡ride
+);
+
+1145 ià(
+ gt2
+ !ð
+posInfš™y
+)
+
+1146
+h
+.
+upd©e_cÚ¡
+(
+t1
+*
+t2
+);
+
+1148
+ gh
+.
+upd©e_cÛf
+(
+r
+.
+£t_v¬
+(
+pos
+),
+t1
+);
+
+1152
+ gh
+.
+upd©e_cÛf
+(
+r
+.
+£t_v¬
+(
+pos
+), (*
+cvi
+).
+cÛf
+);
+
+1155 
+ gGlob®_V¬
+: {
+
+1156
+Glob®_V¬_ID
+
+g
+ = (*
+cvi
+).
+v¬
+->
+g‘_glob®_v¬
+();
+
+1157
+V¬ŸbË_ID
+
+ gv
+;
+
+1158 ià(
+ gg
+->
+ªy
+() == 0)
+
+1159
+v
+ =
+’fÜûd
+.
+g‘_loÿl
+(
+g
+);
+
+1161
+ gv
+ =
+’fÜûd
+.
+g‘_loÿl
+(
+g
+, (*
+cvi
+).
+v¬
+->
+funùiÚ_of
+());
+
+1162
+cÛf_t
+
+ gt
+ =
+’fÜûd
+.
+qu”y_v¬ŸbË_mod
+(
+v
+,
+¡ride
+);
+
+1163 ià(
+ gt
+ !ð
+posInfš™y
+)
+
+1164
+h
+.
+upd©e_cÚ¡
+(
+t
+*(*
+cvi
+).
+cÛf
+);
+
+1166
+V¬ŸbË_ID
+
+ gv2
+;
+
+1167 ià(
+ gg
+->
+ªy
+() == 0)
+
+1168
+v2
+ =
+r
+.
+g‘_loÿl
+(
+g
+);
+
+1170
+ gv2
+ =
+r
+.
+g‘_loÿl
+(
+g
+, (*
+cvi
+).
+v¬
+->
+funùiÚ_of
+());
+
+1171
+ gh
+.
+upd©e_cÛf
+(
+v2
+, (*
+cvi
+).
+cÛf
+);
+
+1176
+årštf
+(
+DebugFže
+, "can't deal withhe variableype in†ower bound\n");
+
+1177 
+ g¡d
+::
+make_·œ
+(
+¡©ic_ÿ¡
+<
+CG_ouutR•r
+ *>(
+NULL
+),
+çl£
+);
+
+1179
+ gh
+.
+upd©e_cÚ¡
+((*
+gi
+).
+g‘_cÚ¡
+());
+
+1181
+boÞ
+
+ gt
+ =
+Œue
+;
+
+1183
+CÚjunù
+ *
+ gc2
+ =
+r
+.
+qu”y_DNF
+()->
+sšgË_cÚjunù
+();
+
+1184
+EQ_HªdË
+
+ gh2
+;
+
+1185 
+EQ_I‹¿tÜ
+
+ei2
+(
+c2
+);
+ gei2
+;ƒi2++) {
+
+1186
+ gh2
+ = *
+ei2
+;
+
+1190 
+ gsign
+;
+
+1191 ià(
+ gh2
+.
+g‘_cÛf
+(
+v
+è=ð(*
+ei
+).get_coef(v))
+
+1192
+sign
+ = 1;
+
+1194
+ gsign
+ = -1;
+
+1196
+ gt
+ =
+št_mod
+(
+h2
+.
+g‘_cÚ¡
+(è-
+sign
+ * (*
+ei
+).g‘_cÚ¡(),
+¡ride
+) == 0;
+
+1198 ià(
+ gt
+ !ð
+çl£
+)
+
+1199 
+CÚ¡r_V¬s_I‹r
+
+cvi
+(
+h2
+);
+ gcvi
+; cvi++)
+
+1200 ià((*
+ gcvi
+).
+ gv¬
+->
+kšd
+(è!ð
+Wždÿrd_V¬
+ &&
+
+1201
+št_mod
+((*
+cvi
+).
+cÛf
+ -
+sign
+ * (*
+ei
+).
+g‘_cÛf
+((*cvi).
+v¬
+),
+¡ride
+) != 0) {
+
+1202
+t
+ =
+çl£
+;
+
+1206 ià(
+ gt
+ !ð
+çl£
+)
+
+1207 
+CÚ¡r_V¬s_I‹r
+
+cvi
+(*
+ei
+);
+ gcvi
+; cvi++)
+
+1208 ià((*
+ gcvi
+).
+ gv¬
+->
+kšd
+(è!ð
+Wždÿrd_V¬
+ &&
+
+1209
+št_mod
+((*
+cvi
+).
+cÛf
+ -
+sign
+ *
+h2
+.
+g‘_cÛf
+((*cvi).
+v¬
+),
+¡ride
+) != 0) {
+
+1210
+t
+ =
+çl£
+;
+
+1216 ià(
+ gt
+) {
+
+1218
+F_And
+ *
+ gf_roÙ
+ =
+r1
+.
+ªd_w™h_ªd
+();
+
+1219
+SŒide_HªdË
+
+ gh
+ =
+f_roÙ
+->
+add_¡ride
+(
+¡ride
+);
+
+1220 
+CÚ¡r_V¬s_I‹r
+
+cvi
+(*
+gi
+);
+ gcvi
+; cvi++)
+
+1221 (*
+ gcvi
+).
+ gv¬
+->
+kšd
+()) {
+
+1222 
+ gIÅut_V¬
+: {
+
+1223
+h
+.
+upd©e_cÛf
+(
+r1
+.
+£t_v¬
+((*
+cvi
+).
+v¬
+->
+g‘_pos™iÚ
+()), (*cvi).
+cÛf
+);
+
+1226 
+ gGlob®_V¬
+: {
+
+1227
+Glob®_V¬_ID
+
+g
+ = (*
+cvi
+).
+v¬
+->
+g‘_glob®_v¬
+();
+
+1228
+V¬ŸbË_ID
+
+ gv
+;
+
+1229 ià(
+ gg
+->
+ªy
+() == 0)
+
+1230
+v
+ =
+r1
+.
+g‘_loÿl
+(
+g
+);
+
+1232
+ gv
+ =
+r1
+.
+g‘_loÿl
+(
+g
+, (*
+cvi
+).
+v¬
+->
+funùiÚ_of
+());
+
+1233
+ gh
+.
+upd©e_cÛf
+(
+v
+, (*
+cvi
+).
+cÛf
+);
+
+1237
+årštf
+(
+DebugFže
+, "can't deal withhe variableype in†ower bound\n");
+
+1238 
+ g¡d
+::
+make_·œ
+(
+¡©ic_ÿ¡
+<
+CG_ouutR•r
+ *>(
+NULL
+),
+çl£
+);
+
+1240
+ gh
+.
+upd©e_cÚ¡
+((*
+gi
+).
+g‘_cÚ¡
+());
+
+1242
+ gfound_m©ch
+ =
+Œue
+;
+
+1249 ià(!
+ gfound_m©ch
+)
+
+1250
+ gr1
+.
+ªd_w™h_EQ
+(*
+ei
+);
+
+1252 ià((*
+ gei
+).
+g‘_cÛf
+(
+v
+) == 0) {
+
+1253
+R–©iÚ
+
+r3
+ = R–©iÚ::
+True
+(
+b
+.
+n_£t
+());
+
+1254
+ gr3
+.
+ªd_w™h_EQ
+(*
+ei
+);
+
+1255
+R–©iÚ
+
+ gr4
+ =
+Gi¡
+(
+r3
+,
+cÝy
+(
+’fÜûd
+));
+
+1256 ià(!
+ gr4
+.
+is_obvious_utÞogy
+())
+
+1257
+ gr2
+.
+ªd_w™h_EQ
+(*
+ei
+);
+
+1260
+ gr2
+.
+ªd_w™h_EQ
+(*
+ei
+);
+
+1265
+ g¡d
+::
+m­
+<
+V¬ŸbË_ID
+,
+ gV¬ŸbË_ID
+>
+ gexi¡s_m­pšg
+;
+
+1266
+F_Exi¡s
+ *
+ gã
+ =
+r2
+.
+ªd_w™h_ªd
+()->
+add_exi¡s
+();
+
+1267
+F_And
+ *
+ gf_roÙ
+ =
+->
+add_ªd
+();
+
+1268 
+GEQ_I‹¿tÜ
+
+gi
+(
+c
+);
+ ggi
+; gi++) {
+
+1269
+GEQ_HªdË
+
+ gh
+ =
+f_roÙ
+->
+add_GEQ
+();
+
+1270 
+CÚ¡r_V¬s_I‹r
+
+cvi
+(*
+gi
+);
+ gcvi
+; cvi++) {
+
+1271
+V¬ŸbË_ID
+
+ gv
+ =
+cvi
+.
+cu¼_v¬
+();
+
+1272 
+ gv
+->
+kšd
+()) {
+
+1273 
+ gIÅut_V¬
+: {
+
+1274 
+pos
+ =
+v
+->
+g‘_pos™iÚ
+();
+
+1275
+ gh
+.
+upd©e_cÛf
+(
+r2
+.
+£t_v¬
+(
+pos
+),
+cvi
+.
+cu¼_cÛf
+());
+
+1278 
+ gExi¡s_V¬
+:
+
+1279 
+Wždÿrd_V¬
+: {
+
+1280
+¡d
+::
+m­
+<
+V¬ŸbË_ID
+,
+ gV¬ŸbË_ID
+>::
+™”©Ü
+
+p
+ =
+exi¡s_m­pšg
+.
+fšd
+(
+v
+);
+
+1281
+V¬ŸbË_ID
+
+ ge
+;
+
+1282 ià(
+ gp
+ =ð
+exi¡s_m­pšg
+.
+’d
+()) {
+
+1283
+e
+ =
+->
+deþ¬e
+();
+
+1284
+ gexi¡s_m­pšg
+[
+v
+] =
+e
+;
+
+1287
+ ge
+ = (*
+p
+).
+£cÚd
+;
+
+1288
+ gh
+.
+upd©e_cÛf
+(
+e
+,
+cvi
+.
+cu¼_cÛf
+());
+
+1291 
+ gGlob®_V¬
+: {
+
+1292
+Glob®_V¬_ID
+
+g
+ =
+v
+->
+g‘_glob®_v¬
+();
+
+1293
+V¬ŸbË_ID
+
+ gv2
+;
+
+1294 ià(
+ gg
+->
+ªy
+() == 0)
+
+1295
+v2
+ =
+r2
+.
+g‘_loÿl
+(
+g
+);
+
+1297
+ gv2
+ =
+r2
+.
+g‘_loÿl
+(
+g
+,
+v
+->
+funùiÚ_of
+());
+
+1298
+ gh
+.
+upd©e_cÛf
+(
+v2
+,
+cvi
+.
+cu¼_cÛf
+());
+
+1302
+as£¹
+(0);
+
+1305
+ gh
+.
+upd©e_cÚ¡
+((*
+gi
+).
+g‘_cÚ¡
+());
+
+1311
+ gr1
+.
+sim¶ify
+();
+
+1312
+ gr2
+.
+sim¶ify
+();
+
+1313
+R–©iÚ
+
+ gb2
+ =
+IÁ”£ùiÚ
+(
+r1
+,
+r2
+);
+
+1314
+ gb2
+.
+sim¶ify
+();
+
+1315 
+ gi
+ = 1; i <ð
+b
+.
+n_£t
+(); i++)
+
+1316
+ gb2
+.
+Çme_£t_v¬
+(
+i
+,
+b
+.
+£t_v¬
+(i)->
+Çme
+());
+
+1317
+ gb2
+.
+£tup_Çmes
+();
+
+1318
+ gb
+ =
+b2
+;
+
+1319
+ gc
+ =
+b
+.
+qu”y_DNF
+()->
+sšgË_cÚjunù
+();
+
+1324
+EQ_HªdË
+
+ g¡rideEQ
+;
+
+1325
+boÞ
+
+ gfoundSŒide
+ =
+çl£
+;
+
+1326
+boÞ
+
+ gfoundSim¶eSŒide
+ =
+çl£
+;
+
+1327
+cÛf_t
+
+ g¡•
+ = 1;
+
+1328 
+ gnum_¡ride
+ = 0;
+
+1330 
+EQ_I‹¿tÜ
+
+ei
+(
+c
+);
+ gei
+;ƒi++) {
+
+1331 ià((*
+ gei
+).
+g‘_cÛf
+(
+v
+è!ð0 && (*
+ei
+).
+has_wždÿrds
+()) {
+
+1332
+num_¡ride
+++;
+
+1334 ià(
+abs
+((*
+ei
+).
+g‘_cÛf
+(
+v
+)) != 1)
+
+1337
+boÞ
+
+ gt
+ =
+Œue
+;
+
+1338
+cÛf_t
+
+ gd
+ = 1;
+
+1339 
+CÚ¡r_V¬s_I‹r
+
+cvi
+(*
+ei
+);
+ gcvi
+; cvi++)
+
+1340 ià((*
+ gcvi
+).
+ gv¬
+->
+kšd
+(è=ð
+Wždÿrd_V¬
+) {
+
+1341
+as£¹
+(
+d
+==1);
+
+1342
+ gd
+ =
+abs
+((*
+cvi
+).
+cÛf
+);
+
+1344 ià((*
+ gcvi
+).
+ gv¬
+->
+kšd
+(è=ð
+IÅut_V¬
+) {
+
+1345 ià((*
+cvi
+).
+v¬
+ !ð
+v
+)
+
+1346
+t
+ =
+çl£
+;
+
+1349
+ gt
+ =
+çl£
+;
+
+1351 ià(
+ gd
+ >
+ g¡•
+) {
+
+1352
+ g¡•
+ =
+d
+;
+
+1353
+ gfoundSim¶eSŒide
+ =
+t
+;
+
+1354
+ g¡rideEQ
+ = *
+ei
+;
+
+1355
+ gfoundSŒide
+ =
+Œue
+;
+
+1362 ià(!(
+ gnum_¡ride
+ =ð0 || (
+num_¡ride
+ =ð1 &&
+foundSŒide
+)))
+
+1363 
+¡d
+::
+make_·œ
+(
+¡©ic_ÿ¡
+<
+CG_ouutR•r
+ *>(
+NULL
+),
+çl£
+);
+
+1366 
+ glow”_bounds
+ = 0,
+ guµ”_bounds
+ = 0;
+
+1367
+ gTu¶e
+<
+ gCG_ouutR•r
+ *>
+ glbLi¡
+;
+
+1368
+ gTu¶e
+<
+ gCG_ouutR•r
+ *>
+ gubLi¡
+;
+
+1369
+cÛf_t
+
+ gcÚ¡_lb
+ =
+ÃgInfš™y
+,
+ gcÚ¡_ub
+ =
+posInfš™y
+;
+
+1370 
+GEQ_I‹¿tÜ
+
+g
+(
+c
+);
+ gg
+; g++) {
+
+1371
+cÛf_t
+
+ gcÛf
+ = (*
+g
+).
+g‘_cÛf
+(
+v
+);
+
+1372 ià(
+ gcÛf
+ == 0)
+
+1374 ià(
+ gcÛf
+ > 0) {
+
+1375
+ glow”_bounds
+++;
+
+1376 ià((*
+ gg
+).
+is_cÚ¡
+(
+v
+è&& !
+ gfoundSŒide
+) {
+
+1378
+cÛf_t
+
+ gL
+,
+ gm
+;
+
+1379
+ gL
+ = -((*
+g
+).
+g‘_cÚ¡
+());
+
+1381
+ gm
+ = (*
+g
+).
+g‘_cÛf
+(
+v
+);
+
+1382
+cÛf_t
+
+ gsb
+ = (è(
+ûž
+(((è
+L
+è/
+m
+));
+
+1383
+£t_max
+(
+cÚ¡_lb
+,
+sb
+);
+
+1385 ià((*
+ gg
+).
+is_cÚ¡
+(
+v
+è&&
+ gfoundSim¶eSŒide
+) {
+
+1388
+cÛf_t
+
+ gL
+,
+ gm
+,
+ gs
+,
+ gc
+;
+
+1389
+ gL
+ = -((*
+g
+).
+g‘_cÚ¡
+());
+
+1390
+ gm
+ = (*
+g
+).
+g‘_cÛf
+(
+v
+);
+
+1391
+ gs
+ =
+¡•
+;
+
+1392
+ gc
+ =
+¡rideEQ
+.
+g‘_cÚ¡
+();
+
+1393
+cÛf_t
+
+ gsb
+ = (
+s
+ * (è(
+ûž
+Ð(è(
+L
+ - (
+c
+ *
+m
+)) /(s*m))))+ c;
+
+1394
+£t_max
+(
+cÚ¡_lb
+,
+sb
+);
+
+1397
+ glbLi¡
+.
+­³nd
+(
+ouutLBasR•r
+(
+ocg
+, *
+g
+,
+b
+,
+v
+,
+¡•
+,
+¡rideEQ
+,
+’fÜûd
+,
+assigÃd_Ú_the_æy
+));
+
+1400
+ guµ”_bounds
+++;
+
+1401 ià((*
+ gg
+).
+is_cÚ¡
+(
+v
+)) {
+
+1403
+£t_mš
+(
+cÚ¡_ub
+,-(*
+g
+).
+g‘_cÚ¡
+()/(*g).
+g‘_cÛf
+(
+v
+));
+
+1406
+ gubLi¡
+.
+­³nd
+(
+ouutUBasR•r
+(
+ocg
+, *
+g
+,
+b
+,
+v
+,
+¡•
+,
+¡rideEQ
+,
+assigÃd_Ú_the_æy
+));
+
+1410
+CG_ouutR•r
+ *
+ glbR•r
+ =
+NULL
+;
+
+1411
+CG_ouutR•r
+ *
+ gubR•r
+ =
+NULL
+;
+
+1412 ià(
+ gcÚ¡_lb
+ !ð
+ÃgInfš™y
+)
+
+1413
+lbLi¡
+.
+­³nd
+(
+ocg
+->
+C»©eIÁ
+(
+cÚ¡_lb
+));
+
+1414 ià(
+ glbLi¡
+.
+size
+() > 1)
+
+1415
+ glbR•r
+ =
+ocg
+->
+C»©eInvoke
+("max",
+lbLi¡
+);
+
+1416 ià(
+ glbLi¡
+.
+size
+() == 1)
+
+1417
+lbR•r
+ =
+lbLi¡
+[1];
+
+1420 if(
+ gfžlInBounds
+ &&
+ glbLi¡
+.
+size
+(è=ð1 &&
+cÚ¡_lb
+ !ð
+ÃgInfš™y
+)
+
+1421
+low”BoundFÜLev–
+ =
+cÚ¡_lb
+;
+
+1424 ià(
+ gcÚ¡_ub
+ !ð
+posInfš™y
+)
+
+1425
+ubLi¡
+.
+­³nd
+(
+ocg
+->
+C»©eIÁ
+(
+cÚ¡_ub
+));
+
+1426 ià(
+ gubLi¡
+.
+size
+() > 1)
+
+1427
+ gubR•r
+ =
+ocg
+->
+C»©eInvoke
+("mš",
+ubLi¡
+);
+
+1428 ià(
+ gubLi¡
+.
+size
+() == 1)
+
+1429
+ubR•r
+ =
+ubLi¡
+[1];
+
+1432 if(
+ gfžlInBounds
+ &&
+ gcÚ¡_ub
+ !ð
+posInfš™y
+)
+
+1433
+uµ”BoundFÜLev–
+ =
+cÚ¡_ub
+;
+
+1436 ià(
+ guµ”_bounds
+ =ð0 ||
+low”_bounds
+ == 0) {
+
+1437 
+¡d
+::
+make_·œ
+(
+¡©ic_ÿ¡
+<
+CG_ouutR•r
+ *>(
+NULL
+),
+çl£
+);
+
+1441
+F_Exi¡s
+ *
+ gã
+ =
+’fÜûd
+.
+ªd_w™h_ªd
+()->
+add_exi¡s
+();
+
+1442
+F_And
+ *
+ gf_roÙ
+ =
+->
+add_ªd
+();
+
+1443
+ g¡d
+::
+m­
+<
+V¬ŸbË_ID
+,
+ gV¬ŸbË_ID
+>
+ gexi¡s_m­pšg
+;
+
+1444
+ g¡d
+::
+¡ack
+<
+¡d
+::
+·œ
+<
+GEQ_HªdË
+,
+ gV¬ŸbË_ID
+> >
+ gæoÜ_geq_¡ack
+;
+
+1445
+ g¡d
+::
+£t
+<
+V¬ŸbË_ID
+>
+æoÜ_v¬_£t
+;
+
+1447 ià(
+ gfoundSŒide
+) {
+
+1448
+EQ_HªdË
+
+ gh
+ =
+f_roÙ
+->
+add_EQ
+();
+
+1449 
+CÚ¡r_V¬s_I‹r
+
+cvi
+(
+¡rideEQ
+);
+ gcvi
+; cvi++)
+
+1450 (*
+ gcvi
+).
+ gv¬
+->
+kšd
+()) {
+
+1451 
+ gIÅut_V¬
+: {
+
+1452 
+pos
+ = (*
+cvi
+).
+v¬
+->
+g‘_pos™iÚ
+();
+
+1453
+ gh
+.
+upd©e_cÛf
+(
+’fÜûd
+.
+£t_v¬
+(
+pos
+), (*
+cvi
+).
+cÛf
+);
+
+1456 
+ gExi¡s_V¬
+:
+
+1457 
+Wždÿrd_V¬
+: {
+
+1458
+¡d
+::
+m­
+<
+V¬ŸbË_ID
+,
+ gV¬ŸbË_ID
+>::
+™”©Ü
+
+p
+ =
+exi¡s_m­pšg
+.
+fšd
+((*
+cvi
+).
+v¬
+);
+
+1459
+V¬ŸbË_ID
+
+ ge
+;
+
+1460 ià(
+ gp
+ =ð
+exi¡s_m­pšg
+.
+’d
+()) {
+
+1461
+e
+ =
+->
+deþ¬e
+();
+
+1462
+ gexi¡s_m­pšg
+[(*
+cvi
+).
+v¬
+] =
+e
+;
+
+1465
+ ge
+ = (*
+p
+).
+£cÚd
+;
+
+1466
+ gh
+.
+upd©e_cÛf
+(
+e
+, (*
+cvi
+).
+cÛf
+);
+
+1469 
+ gGlob®_V¬
+: {
+
+1470
+Glob®_V¬_ID
+
+g
+ = (*
+cvi
+).
+v¬
+->
+g‘_glob®_v¬
+();
+
+1471
+V¬ŸbË_ID
+
+ ge
+;
+
+1472 ià(
+ gg
+->
+ªy
+() == 0)
+
+1473
+e
+ =
+’fÜûd
+.
+g‘_loÿl
+(
+g
+);
+
+1475
+ ge
+ =
+’fÜûd
+.
+g‘_loÿl
+(
+g
+, (*
+cvi
+).
+v¬
+->
+funùiÚ_of
+());
+
+1476
+ gh
+.
+upd©e_cÛf
+(
+e
+, (*
+cvi
+).
+cÛf
+);
+
+1480
+as£¹
+(0);
+
+1482
+ gh
+.
+upd©e_cÚ¡
+(
+¡rideEQ
+.
+g‘_cÚ¡
+());
+
+1485 
+GEQ_I‹¿tÜ
+
+gi
+(
+c
+);
+ ggi
+; gi++)
+
+1486 ià((*
+ ggi
+).
+g‘_cÛf
+(
+v
+) != 0) {
+
+1487
+GEQ_HªdË
+
+h
+ =
+f_roÙ
+->
+add_GEQ
+();
+
+1488 
+CÚ¡r_V¬s_I‹r
+
+cvi
+(*
+gi
+);
+ gcvi
+; cvi++)
+
+1489 (*
+ gcvi
+).
+ gv¬
+->
+kšd
+()) {
+
+1490 
+ gIÅut_V¬
+: {
+
+1491 
+pos
+ = (*
+cvi
+).
+v¬
+->
+g‘_pos™iÚ
+();
+
+1492
+ gh
+.
+upd©e_cÛf
+(
+’fÜûd
+.
+£t_v¬
+(
+pos
+), (*
+cvi
+).
+cÛf
+);
+
+1495 
+ gExi¡s_V¬
+:
+
+1496 
+Wždÿrd_V¬
+: {
+
+1497
+¡d
+::
+m­
+<
+V¬ŸbË_ID
+,
+ gV¬ŸbË_ID
+>::
+™”©Ü
+
+p
+ =
+exi¡s_m­pšg
+.
+fšd
+((*
+cvi
+).
+v¬
+);
+
+1498
+V¬ŸbË_ID
+
+ ge
+;
+
+1499 ià(
+ gp
+ =ð
+exi¡s_m­pšg
+.
+’d
+()) {
+
+1500
+e
+ =
+->
+deþ¬e
+();
+
+1501
+ gexi¡s_m­pšg
+[(*
+cvi
+).
+v¬
+] =
+e
+;
+
+1504
+ ge
+ = (*
+p
+).
+£cÚd
+;
+
+1505
+ gh
+.
+upd©e_cÛf
+(
+e
+, (*
+cvi
+).
+cÛf
+);
+
+1507 ià(
+ gæoÜ_v¬_£t
+.
+fšd
+((*
+cvi
+).
+v¬
+è=ð
+æoÜ_v¬_£t
+.
+’d
+()) {
+
+1508
+GEQ_HªdË
+
+h2
+;
+
+1509
+fšdFloÜIÃqu®™y
+(
+b
+, (*
+cvi
+).
+v¬
+,
+h2
+,
+v
+);
+
+1510
+ gæoÜ_geq_¡ack
+.
+push
+(
+¡d
+::
+make_·œ
+(
+h2
+, (*
+cvi
+).
+v¬
+));
+
+1511
+ gæoÜ_v¬_£t
+.
+š£¹
+((*
+cvi
+).
+v¬
+);
+
+1515 
+ gGlob®_V¬
+: {
+
+1516
+Glob®_V¬_ID
+
+g
+ = (*
+cvi
+).
+v¬
+->
+g‘_glob®_v¬
+();
+
+1517
+V¬ŸbË_ID
+
+ ge
+;
+
+1518 ià(
+ gg
+->
+ªy
+() == 0)
+
+1519
+e
+ =
+’fÜûd
+.
+g‘_loÿl
+(
+g
+);
+
+1521
+ ge
+ =
+’fÜûd
+.
+g‘_loÿl
+(
+g
+, (*
+cvi
+).
+v¬
+->
+funùiÚ_of
+());
+
+1522
+ gh
+.
+upd©e_cÛf
+(
+e
+, (*
+cvi
+).
+cÛf
+);
+
+1526
+as£¹
+(0);
+
+1528
+ gh
+.
+upd©e_cÚ¡
+((*
+gi
+).
+g‘_cÚ¡
+());
+
+1532 !
+ gæoÜ_geq_¡ack
+.
+em±y
+()) {
+
+1533
+ g¡d
+::
+·œ
+<
+GEQ_HªdË
+,
+ gV¬ŸbË_ID
+>
+ gp
+ =
+æoÜ_geq_¡ack
+.
+tÝ
+();
+
+1534
+ gæoÜ_geq_¡ack
+.
+pÝ
+();
+
+1536
+GEQ_HªdË
+
+ gh1
+ =
+f_roÙ
+->
+add_GEQ
+();
+
+1537
+GEQ_HªdË
+
+ gh2
+ =
+f_roÙ
+->
+add_GEQ
+();
+
+1538 
+CÚ¡r_V¬s_I‹r
+
+cvi
+(
+p
+.
+fœ¡
+);
+ gcvi
+; cvi++) {
+
+1539 (*
+ gcvi
+).
+ gv¬
+->
+kšd
+()) {
+
+1540 
+ gIÅut_V¬
+: {
+
+1541 
+pos
+ = (*
+cvi
+).
+v¬
+->
+g‘_pos™iÚ
+();
+
+1542
+ gh1
+.
+upd©e_cÛf
+(
+’fÜûd
+.
+šput_v¬
+(
+pos
+), (*
+cvi
+).
+cÛf
+);
+
+1543
+ gh2
+.
+upd©e_cÛf
+(
+’fÜûd
+.
+šput_v¬
+(
+pos
+), -(*
+cvi
+).
+cÛf
+);
+
+1546 
+ gExi¡s_V¬
+:
+
+1547 
+Wždÿrd_V¬
+: {
+
+1548
+¡d
+::
+m­
+<
+V¬ŸbË_ID
+,
+ gV¬ŸbË_ID
+>::
+™”©Ü
+
+p2
+ =
+exi¡s_m­pšg
+.
+fšd
+((*
+cvi
+).
+v¬
+);
+
+1549
+V¬ŸbË_ID
+
+ ge
+;
+
+1550 ià(
+ gp2
+ =ð
+exi¡s_m­pšg
+.
+’d
+()) {
+
+1551
+e
+ =
+->
+deþ¬e
+();
+
+1552
+ gexi¡s_m­pšg
+[(*
+cvi
+).
+v¬
+] =
+e
+;
+
+1555
+ ge
+ = (*
+p2
+).
+£cÚd
+;
+
+1556
+ gh1
+.
+upd©e_cÛf
+(
+e
+, (*
+cvi
+).
+cÛf
+);
+
+1557
+ gh2
+.
+upd©e_cÛf
+(
+e
+, -(*
+cvi
+).
+cÛf
+);
+
+1559 ià(
+ gæoÜ_v¬_£t
+.
+fšd
+((*
+cvi
+).
+v¬
+è=ð
+æoÜ_v¬_£t
+.
+’d
+()) {
+
+1560
+GEQ_HªdË
+
+h3
+;
+
+1561
+fšdFloÜIÃqu®™y
+(
+b
+, (*
+cvi
+).
+v¬
+,
+h3
+,
+v
+);
+
+1562
+ gæoÜ_geq_¡ack
+.
+push
+(
+¡d
+::
+make_·œ
+(
+h3
+, (*
+cvi
+).
+v¬
+));
+
+1563
+ gæoÜ_v¬_£t
+.
+š£¹
+((*
+cvi
+).
+v¬
+);
+
+1567 
+ gGlob®_V¬
+: {
+
+1568
+Glob®_V¬_ID
+
+g
+ = (*
+cvi
+).
+v¬
+->
+g‘_glob®_v¬
+();
+
+1569
+V¬ŸbË_ID
+
+ ge
+;
+
+1570 ià(
+ gg
+->
+ªy
+() == 0)
+
+1571
+e
+ =
+’fÜûd
+.
+g‘_loÿl
+(
+g
+);
+
+1573
+ ge
+ =
+’fÜûd
+.
+g‘_loÿl
+(
+g
+, (*
+cvi
+).
+v¬
+->
+funùiÚ_of
+());
+
+1574
+ gh1
+.
+upd©e_cÛf
+(
+e
+, (*
+cvi
+).
+cÛf
+);
+
+1575
+ gh2
+.
+upd©e_cÛf
+(
+e
+, -(*
+cvi
+).
+cÛf
+);
+
+1579
+as£¹
+(0);
+
+1582
+ gh1
+.
+upd©e_cÚ¡
+(
+p
+.
+fœ¡
+.
+g‘_cÚ¡
+());
+
+1583
+ gh2
+.
+upd©e_cÚ¡
+(-
+p
+.
+fœ¡
+.
+g‘_cÚ¡
+());
+
+1584
+ gh2
+.
+upd©e_cÚ¡
+(-
+p
+.
+fœ¡
+.
+g‘_cÛf
+Õ.
+£cÚd
+)-1);
+
+1586
+ g’fÜûd
+.
+sim¶ify
+();
+
+1588
+CG_ouutR•r
+ *
+ g¡R•r
+ =
+NULL
+;
+
+1589 ià(
+ g¡•
+ != 1)
+
+1590
+¡R•r
+ =
+ocg
+->
+C»©eIÁ
+(
+abs
+(
+¡•
+));
+
+1591
+CG_ouutR•r
+ *
+ gšdexR•r
+ =
+ouutId’t
+(
+ocg
+,
+b
+,
+v
+,
+assigÃd_Ú_the_æy
+);
+
+1592
+CG_ouutR•r
+ *
+ gù¾R•r
+ =
+ocg
+->
+C»©eInduùive
+(
+šdexR•r
+,
+lbR•r
+,
+ubR•r
+,
+¡R•r
+);
+
+1594 
+ g¡d
+::
+make_·œ
+(
+ù¾R•r
+,
+Œue
+);
+
+1599
+R–©iÚ
+
+´ojeù_Úto_Ëv–s
+(R–©iÚ
+R
+, 
+Ï¡_Ëv–
+,
+boÞ
+
+wždÿrds
+) {
+
+1600
+as£¹
+(
+Ï¡_Ëv–
+ >ð0 &&
+R
+.
+is_£t
+(è&&†a¡_Ëv– <ðR.
+n_£t
+());
+
+1601 ià(
+ gÏ¡_Ëv–
+ =ð
+R
+.
+n_£t
+())  R;
+
+1603 
+ gÜig_v¬s
+ =
+R
+.
+n_£t
+();
+
+1604 
+ gnum_´ojeùed
+ =
+Üig_v¬s
+ -
+Ï¡_Ëv–
+;
+
+1605
+ gR
+ =
+Ex‹nd_S‘
+(
+R
+,
+num_´ojeùed
+
+
+1607
+M­pšg
+
+ gm1
+ = M­pšg::
+Id’t™y
+(
+R
+.
+n_£t
+());
+
+1609 
+ gi
+=
+Ï¡_Ëv–
++1; i <ð
+Üig_v¬s
+; i++) {
+
+1610
+ gm1
+.
+£t_m­
+(
+S‘_V¬
+,
+i
+,
+Exi¡s_V¬
+, i);
+
+1611
+ gm1
+.
+£t_m­
+(
+S‘_V¬
+,
+i
++
+num_´ojeùed
+, Set_Var, i);
+
+1614
+M­R–1
+(
+R
+,
+m1
+,
+Comb_Id
+);
+
+1615
+ gR
+.
+fš®ize
+();
+
+1616
+ gR
+.
+sim¶ify
+();
+
+1617 ià(!
+ gwždÿrds
+)
+
+1618
+ gR
+ =
+Aµroxim©e
+(
+R
+,1);
+
+1619
+as£¹
+(
+R
+.
+is_£t
+());
+
+1620 
+ gR
+;
+
+1627
+boÞ
+
+boundH™sSŒide
+(cÚ¡
+GEQ_HªdË
+ &
+g
+,
+V¬ŸbË_ID
+
+v
+,
+
+1628 cÚ¡
+EQ_HªdË
+ &
+¡rideEQ
+,
+
+1629
+cÛf_t
+ ,
+
+1630
+R–©iÚ
+
+known
+) {
+
+1635
+cÛf_t
+
+ gm
+ =
+g
+.
+g‘_cÛf
+(
+v
+);
+
+1636
+R–©iÚ
+
+‹¡
+(
+known
+.
+n_£t
+());
+
+1637
+F_Exi¡s
+ *
+ ge
+ =
+‹¡
+.
+add_exi¡s
+();
+
+1638
+V¬ŸbË_ID
+
+ g®pha
+ =
+e
+->
+deþ¬e
+();
+
+1639
+F_And
+ *
+ ga
+ =
+e
+->
+add_ªd
+();
+
+1640
+EQ_HªdË
+
+ gh
+ =
+a
+->
+add_EQ
+();
+
+1641 
+CÚ¡r_V¬s_I‹r
+
+I
+(
+g
+,
+çl£
+);
+ gI
+; I++)
+
+1642 if((*
+ gI
+).
+ gv¬
+ !ð
+v
+) {
+
+1643 if((*
+I
+).
+v¬
+->
+kšd
+(è!ð
+Glob®_V¬
+)
+
+1644
+h
+.
+upd©e_cÛf
+((*
+I
+).
+v¬
+, (*I).
+cÛf
+);
+
+1646
+ gh
+.
+upd©e_cÛf
+(
+‹¡
+.
+g‘_loÿl
+((*
+I
+).
+v¬
+->
+g‘_glob®_v¬
+()), (*I).
+cÛf
+);
+
+1649
+ gh
+.
+upd©e_cÚ¡
+(
+g
+.
+g‘_cÚ¡
+());
+
+1650
+ gh
+.
+upd©e_cÛf
+(
+®pha
+,
+m
+);
+
+1651 ià(!(
+Gi¡
+(
+‹¡
+,
+cÝy
+(
+known
+)).
+is_obvious_utÞogy
+()))
+
+1652 
+ gçl£
+;
+
+1654
+R–©iÚ
+
+ gboundR–
+ =
+known
+;
+
+1655
+ gboundR–
+.
+ªd_w™h_EQ
+(
+g
+);
+
+1656
+R–©iÚ
+
+¡rideR–
+(
+known
+.
+n_£t
+());
+
+1657
+ g¡rideR–
+.
+ªd_w™h_EQ
+(
+¡rideEQ
+);
+
+1658 
+Gi¡
+(
+¡rideR–
+,
+boundR–
+).
+is_obvious_utÞogy
+();
+
+1663
+boÞ
+
+isSim¶eSŒide
+(cÚ¡
+EQ_HªdË
+ &
+g
+,
+V¬ŸbË_ID
+
+v
+) {
+
+1664
+EQ_HªdË
+
+ ggg
+ =
+g
+;
+
+1666
+boÞ
+
+ gis_sim¶e
+=
+Œue
+;
+
+1667 
+CÚ¡r_V¬s_I‹r
+
+cvi
+(
+gg
+,
+çl£
+);
+ gcvi
+ &&
+ gis_sim¶e
+; cvi++)
+
+1668
+ gis_sim¶e
+ = ((*
+cvi
+).
+cÛf
+ =ð0 || (*cvi).
+v¬
+ =ð
+v
+
+
+1669 || (*
+cvi
+).
+v¬
+->
+kšd
+(è=ð
+Wždÿrd_V¬
+);
+
+1670 
+ gis_sim¶e
+;
+
+1674 
+couÁSŒides
+(
+CÚjunù
+ *
+c
+,
+V¬ŸbË_ID
+
+v
+,
+EQ_HªdË
+ &
+¡rideEQ
+,
+
+1675
+boÞ
+ &
+sim¶e
+) {
+
+1676 
+ g¡rides
+=0;
+
+1677 
+EQ_I‹¿tÜ
+
+G
+(
+c
+);
+ gG
+; G++)
+
+1678 
+CÚ¡r_V¬s_I‹r
+
+I
+(*
+G
+,
+Œue
+);
+ gI
+; I++)
+
+1679 ià(((*
+ gI
+).
+ gcÛf
+ !ð0è&& (*
+G
+).
+g‘_cÛf
+(
+v
+) != 0) {
+
+1680
+¡rides
+++;
+
+1681
+ gsim¶e
+ =
+isSim¶eSŒide
+(*
+G
+,
+v
+);
+
+1682
+ g¡rideEQ
+ = *
+G
+;
+
+1685 
+ g¡rides
+;
+
+1688
+ gÇme¥aû
+ {
+
+1690
+boÞ
+
+hasEQ
+(
+R–©iÚ
+
+r
+, 
+Ëv–
+) {
+
+1691
+ gr
+.
+sim¶ify
+();
+
+1692
+V¬ŸbË_ID
+
+ gv
+ =
+£t_v¬
+(
+Ëv–
+);
+
+1693
+CÚjunù
+ *
+ gs_cÚj
+ =
+r
+.
+sšgË_cÚjunù
+();
+
+1694 
+EQ_I‹¿tÜ
+
+G
+(
+s_cÚj
+);
+ gG
+; G++)
+
+1695 ià((*
+ gG
+).
+g‘_cÛf
+(
+v
+))
+
+1696 
+ gŒue
+;
+
+1697 
+ gçl£
+;
+
+1702 
+R–©iÚ
+
+pickEQ
+(R–©iÚ
+r
+, 
+Ëv–
+) {
+
+1703
+ gr
+.
+sim¶ify
+();
+
+1704
+V¬ŸbË_ID
+
+ gv
+ =
+£t_v¬
+(
+Ëv–
+);
+
+1705
+CÚjunù
+ *
+ gs_cÚj
+ =
+r
+.
+sšgË_cÚjunù
+();
+
+1706 
+EQ_I‹¿tÜ
+
+E
+(
+s_cÚj
+);
+ gE
+; E++)
+
+1707 ià((*
+ gE
+).
+g‘_cÛf
+(
+v
+)) {
+
+1708
+R–©iÚ
+
+‹¡_»l
+(
+r
+.
+n_£t
+());
+
+1709
+ g‹¡_»l
+.
+ªd_w™h_EQ
+(*
+E
+);
+
+1710 
+ g‹¡_»l
+;
+
+1712
+as£¹
+(0);
+
+1713 
+ gr
+;
+
+1717
+R–©iÚ
+
+pickBound
+(R–©iÚ
+r
+, 
+Ëv–
+, 
+UB
+) {
+
+1718
+ gr
+.
+sim¶ify
+();
+
+1719
+V¬ŸbË_ID
+
+ gv
+ =
+£t_v¬
+(
+Ëv–
+);
+
+1720
+CÚjunù
+ *
+ gs_cÚj
+ =
+r
+.
+sšgË_cÚjunù
+();
+
+1721 
+GEQ_I‹¿tÜ
+
+G
+(
+s_cÚj
+);
+ gG
+; G++) {
+
+1722 ià((
+ gUB
+ && (*
+ gG
+).
+g‘_cÛf
+(
+v
+) < 0)
+
+1723 || (!
+ gUB
+ && (*
+ gG
+).
+g‘_cÛf
+(
+v
+) > 0) ) {
+
+1724
+R–©iÚ
+
+‹¡_»l
+(
+r
+.
+n_£t
+());
+
+1725
+ g‹¡_»l
+.
+ªd_w™h_GEQ
+(*
+G
+);
+
+1726 
+ g‹¡_»l
+;
+
+1729 
+EQ_I‹¿tÜ
+
+E
+(
+s_cÚj
+);
+ gE
+; E++) {
+
+1730 ià((*
+ gE
+).
+g‘_cÛf
+(
+v
+)) {
+
+1731
+R–©iÚ
+
+‹¡_»l
+(
+r
+.
+n_£t
+());
+
+1732
+ g‹¡_»l
+.
+ªd_w™h_GEQ
+(*
+E
+);
+
+1733 ià((
+ gUB
+ && (*
+ gE
+).
+g‘_cÛf
+(
+v
+) > 0)
+
+1734 || (!
+ gUB
+ && (*
+ gE
+).
+g‘_cÛf
+(
+v
+) < 0) )
+
+1735
+ g‹¡_»l
+ =
+Com¶em’t
+(
+‹¡_»l
+);
+
+1736 
+ g‹¡_»l
+;
+
+1739
+as£¹
+(0);
+
+1740 
+ gr
+;
+
+1745
+R–©iÚ
+
+pickOv”h—d
+(R–©iÚ
+r
+, 
+liáTo
+) {
+
+1746
+ gr
+.
+sim¶ify
+();
+
+1747
+CÚjunù
+ *
+ gs_cÚj
+ =
+r
+.
+sšgË_cÚjunù
+();
+
+1748 
+GEQ_I‹¿tÜ
+
+G
+(
+s_cÚj
+);
+ gG
+; G++) {
+
+1749
+R–©iÚ
+
+‹¡_»l
+(
+r
+.
+n_£t
+());
+
+1750
+ g‹¡_»l
+.
+ªd_w™h_GEQ
+(*
+G
+);
+
+1751
+V¬ŸbË_ID
+
+ gv
+;
+
+1752
+cÛf_t
+
+ gpos
+ = -1;
+
+1753
+cÛf_t
+
+ gc
+= 0;
+
+1754 
+CÚ¡r_V¬s_I‹r
+
+cvi
+(*
+G
+,
+çl£
+);
+ gcvi
+; cvi++)
+
+1755 ià((*
+ gcvi
+).
+ gcÛf
+ && (*cvi).
+ gv¬
+->
+kšd
+(è=ð
+IÅut_V¬
+
+
+1756 && (*
+cvi
+).
+v¬
+->
+g‘_pos™iÚ
+(è>
+pos
+) {
+
+1757
+v
+ = (*
+cvi
+).
+v¬
+;
+
+1758
+ gpos
+ = (*
+cvi
+).
+v¬
+->
+g‘_pos™iÚ
+();
+
+1759
+ gc
+ = (*
+cvi
+).
+cÛf
+;
+
+1762
+årštf
+(
+DebugFže
+,"Coef = %d, constraint = %s\n",
+
+1763
+c
+,(cÚ¡ *)
+‹¡_»l
+.
+´št_fÜmuÏ_to_¡ršg
+());
+
+1765 
+ g‹¡_»l
+;
+
+1767 
+EQ_I‹¿tÜ
+
+E
+(
+s_cÚj
+);
+ gE
+; E++) {
+
+1768
+as£¹
+(
+liáTo
+ >= 1);
+
+1769 
+ gpos
+ =
+max
+((*
+E
+).
+max_tu¶e_pos
+(),
+max_fs_ªy
+(*E)+1);
+
+1773 ià((*
+ gE
+).
+has_wždÿrds
+(è&&
+ gpos
+ <
+ gliáTo
+) {
+
+1774
+R–©iÚ
+
+‹¡_»l
+(
+r
+.
+n_£t
+());
+
+1775
+ g‹¡_»l
+.
+ªd_w™h_EQ
+(*
+E
+);
+
+1776 
+ g‹¡_»l
+;
+
+1778 ià(!(*
+ gE
+).
+has_wždÿrds
+(è&&
+ gpos
+ <ð
+liáTo
+) {
+
+1779
+R–©iÚ
+
+‹¡_»l
+(
+r
+.
+n_£t
+());
+
+1780
+ g‹¡_»l
+.
+ªd_w™h_EQ
+(*
+E
+);
+
+1781
+ g‹¡_»l
+.
+sim¶ify
+();
+
+1782
+ g‹¡_»l
+ =
+EQs_to_GEQs
+(
+‹¡_»l
+,
+Œue
+);
+
+1783 
+pickOv”h—d
+(
+‹¡_»l
+,
+liáTo
+);
+
+1786 ià(
+ gcode_g’_debug
+>1) {
+
+1787
+årštf
+(
+DebugFže
+,"Could‚ot find overhead:\n");
+
+1788
+ gr
+.
+´efix_´št
+(
+DebugFže
+);
+
+1790 
+ gR–©iÚ
+::
+True
+(
+r
+.
+n_£t
+());
+
+1795
+boÞ
+
+hasBound
+(
+R–©iÚ
+
+r
+, 
+Ëv–
+, 
+UB
+) {
+
+1796
+ gr
+.
+sim¶ify
+();
+
+1797
+V¬ŸbË_ID
+
+ gv
+ =
+£t_v¬
+(
+Ëv–
+);
+
+1798
+CÚjunù
+ *
+ gs_cÚj
+ =
+r
+.
+sšgË_cÚjunù
+();
+
+1799 
+GEQ_I‹¿tÜ
+
+G
+(
+s_cÚj
+);
+ gG
+; G++) {
+
+1800 ià(
+ gUB
+ && (*
+ gG
+).
+g‘_cÛf
+(
+v
+è< 0è
+ gŒue
+;
+
+1801 ià(!
+ gUB
+ && (*
+ gG
+).
+g‘_cÛf
+(
+v
+è> 0è
+ gŒue
+;
+
+1803 
+EQ_I‹¿tÜ
+
+E
+(
+s_cÚj
+);
+ gE
+; E++) {
+
+1804 ià((*
+ gE
+).
+g‘_cÛf
+(
+v
+)è
+ gŒue
+;
+
+1806 
+ gçl£
+;
+
+1809
+boÞ
+
+fšd_ªy_cÚ¡¿št
+(
+s
+, 
+Ëv–
+,
+R–©iÚ
+ &
+kr
+, 
+dœeùiÚ
+,
+
+1810
+R–©iÚ
+ &
+S
+,
+boÞ
+
+­´ox
+) {
+
+1816
+R–©iÚ
+
+ gI
+ =
+´ojeùed_nIS
+[
+Ëv–
+][
+s
+];
+
+1817
+ gI
+ =
+Gi¡
+(
+I
+,
+cÝy
+(
+kr
+));
+
+1818 if(
+ g­´ox
+ gI
+ =
+Aµroxim©e
+(
+I
+);
+
+1819 ià(
+hasBound
+(
+I
+,
+Ëv–
+,
+dœeùiÚ
+)) {
+
+1820
+R–©iÚ
+
+ gpickäom
+;
+
+1821 if(
+has_nÚ¡ride_EQ
+(
+I
+,
+Ëv–
+))
+
+1822
+ gpickäom
+ =
+pickEQ
+(
+I
+,
+Ëv–
+);
+
+1824
+ gpickäom
+ =
+pickBound
+(
+I
+,
+Ëv–
+,
+dœeùiÚ
+);
+
+1825
+ gS
+ =
+pickOv”h—d
+(
+pickäom
+,
+Ëv–
+);
+
+1826 if(
+ gS
+.
+is_obvious_utÞogy
+()èS =
+R–©iÚ
+::
+NuÎ
+();
+
+1827  !
+ gS
+.
+is_nuÎ
+();
+
+1829 
+ gçl£
+;
+
+1833
+boÞ
+
+has_nÚ¡ride_EQ
+(
+R–©iÚ
+
+r
+, 
+Ëv–
+) {
+
+1834
+ gr
+.
+sim¶ify
+();
+
+1835
+V¬ŸbË_ID
+
+ gv
+ =
+£t_v¬
+(
+Ëv–
+);
+
+1836
+CÚjunù
+ *
+ gs_cÚj
+ =
+r
+.
+sšgË_cÚjunù
+();
+
+1837 
+EQ_I‹¿tÜ
+
+G
+(
+s_cÚj
+);
+ gG
+; G++)
+
+1838 ià((*
+ gG
+).
+g‘_cÛf
+(
+v
+è&& !(*G).
+has_wždÿrds
+())
+
+1839 
+ gŒue
+;
+
+1840 
+ gçl£
+;
+
+1844
+R–©iÚ
+
+mšMaxOv”h—d
+(R–©iÚ
+r
+, 
+Ëv–
+) {
+
+1845
+ gr
+.
+fš®ize
+();
+
+1846
+ gr
+.
+sim¶ify
+();
+
+1847
+CÚjunù
+ *
+ gs_cÚj
+ =
+r
+.
+sšgË_cÚjunù
+();
+
+1848
+GEQ_HªdË
+
+ gLBs
+[50],
+ gUBs
+[50];
+
+1849 
+ gnumLBs
+ = 0;
+
+1850 
+ gnumUBs
+ = 0;
+
+1851
+V¬ŸbË_ID
+
+ gv
+ =
+£t_v¬
+(
+Ëv–
+);
+
+1852 
+GEQ_I‹¿tÜ
+
+G
+(
+s_cÚj
+);
+ gG
+; G++èià((*G).
+g‘_cÛf
+(
+v
+)) {
+
+1853
+GEQ_HªdË
+
+ gg
+ = *
+G
+;
+
+1854 ià(
+ gg
+.
+g‘_cÛf
+(
+v
+è> 0è
+ gLBs
+[
+numLBs
+++] =
+g
+;
+
+1855
+ gUBs
+[
+numUBs
+++] =
+g
+;
+
+1857 ià(
+ gnumLBs
+ <ð1 &&
+numUBs
+ <= 1) {
+
+1858 
+R–©iÚ
+::
+True
+(
+r
+.
+n_£t
+());
+
+1860
+R–©iÚ
+
+r1
+(
+r
+.
+n_£t
+());
+
+1861
+R–©iÚ
+
+r2
+(
+r
+.
+n_£t
+());
+
+1862 ià(
+ gnumLBs
+ > 1) {
+
+1864
+ gr1
+.
+ªd_w™h_GEQ
+(
+LBs
+[0]);
+
+1865
+ gr2
+.
+ªd_w™h_GEQ
+(
+LBs
+[1]);
+
+1866
+ gr1
+ =
+´ojeù_Úto_Ëv–s
+(
+Difã»nû
+(
+r1
+,
+r2
+),
+Ëv–
+-1,0);
+
+1870
+ gr1
+.
+ªd_w™h_GEQ
+(
+UBs
+[0]);
+
+1871
+ gr2
+.
+ªd_w™h_GEQ
+(
+UBs
+[1]);
+
+1872
+ gr1
+ =
+´ojeù_Úto_Ëv–s
+(
+Difã»nû
+(
+r1
+,
+r2
+),
+Ëv–
+-1,0);
+
+1875
+årštf
+(
+DebugFže
+,"Te¡šg %s\n",(cÚ¡ *)
+r1
+.
+´št_fÜmuÏ_to_¡ršg
+());
+
+1876
+årštf
+(
+DebugFže
+,"wžÈ»moved ov”h—d oÀbound oàt%d: %s\n",
+Ëv–
+,
+
+1877 (cÚ¡ *)
+r
+.
+´št_fÜmuÏ_to_¡ršg
+());
+
+1880 
+pickOv”h—d
+(
+r1
+, -1);
+
+1883
+ g¡d
+::
+·œ
+<
+EQ_HªdË
+, >
+fšd_sim¶e¡_assignm’t
+(cÚ¡
+R–©iÚ
+ &
+R_
+,
+V¬ŸbË_ID
+
+v
+, cÚ¡
+¡d
+::
+veùÜ
+<
+CG_ouutR•r
+ *> &
+assigÃd_Ú_the_æy
+) {
+
+1884
+R–©iÚ
+ &
+R
+ =
+cÚ¡_ÿ¡
+<R–©iÚ &>(
+R_
+);
+
+1885
+CÚjunù
+ *
+ gc
+ =
+R
+.
+sšgË_cÚjunù
+();
+
+1887 
+ gmš_co¡
+ =
+INT_MAX
+;
+
+1888
+EQ_HªdË
+
+ geq
+;
+
+1889 
+EQ_I‹¿tÜ
+
+ei
+(
+c
+->
+EQs
+());
+ gei
+;ƒi++)
+
+1890 ià(!(*
+ gei
+).
+has_wždÿrds
+(è&& (*ei).
+g‘_cÛf
+(
+v
+) != 0) {
+
+1891 
+co¡
+ = 0;
+
+1893 ià(
+abs
+((*
+ei
+).
+g‘_cÛf
+(
+v
+)) != 1)
+
+1894
+co¡
+ += 4;
+
+1896 
+ gnum_v¬
+ = 0;
+
+1897 
+CÚ¡r_V¬s_I‹r
+
+cvi
+(*
+ei
+);
+ gcvi
+; cvi++)
+
+1898 ià((*
+ gcvi
+).
+ gv¬
+ !ð
+v
+) {
+
+1899
+num_v¬
+++;
+
+1900 ià((*
+ gcvi
+).
+ gv¬
+->
+kšd
+(è=ð
+Glob®_V¬
+ && (*
+cvi
+).
+v¬
+->
+g‘_glob®_v¬
+()->
+ªy
+() > 0) {
+
+1901
+co¡
+ += 10;
+
+1903 ià(
+abs
+((*
+cvi
+).
+cÛf
+) != 1)
+
+1904
+co¡
+ += 2;
+
+1905 ià((*
+ gcvi
+).
+ gv¬
+->
+kšd
+(è=ð
+IÅut_V¬
+ &&
+assigÃd_Ú_the_æy
+[(*
+cvi
+).
+v¬
+->
+g‘_pos™iÚ
+()-1] !ð
+NULL
+) {
+
+1906
+co¡
+ += 5;
+
+1909 ià((*
+ gei
+).
+g‘_cÚ¡
+() != 0)
+
+1910
+num_v¬
+++;
+
+1911 ià(
+ gnum_v¬
+ > 1)
+
+1912
+ gco¡
+ +ð
+num_v¬
+ - 1;
+
+1914 ià(
+ gco¡
+ <
+ gmš_co¡
+) {
+
+1915
+ gmš_co¡
+ =
+co¡
+;
+
+1916
+ geq
+ = *
+ei
+;
+
+1920 
+ g¡d
+::
+make_·œ
+(
+eq
+,
+mš_co¡
+);
+
+1923 
+max_fs_ªy
+(cÚ¡
+CÚ¡¿št_HªdË
+ &
+c
+) {
+
+1924 
+ gmax_ªy
+=0;
+
+1925 
+CÚ¡r_V¬s_I‹r
+
+cv
+(
+c
+);
+ gcv
+; cv++)
+
+1926 if((*
+ gcv
+).
+ gv¬
+->
+kšd
+(è=ð
+Glob®_V¬
+)
+
+1927
+max_ªy
+ =
+max
+(max_ªy,(*
+cv
+).
+v¬
+->
+g‘_glob®_v¬
+()->
+ªy
+());
+
+1928 
+ gmax_ªy
+;
+
+ @/usr/include/math.h
+
+25 #iâdef
+_MATH_H
+
+
+26 
+ #_MATH_H
+ 1
+
+ )
+
+28 
+ ~<ã©u»s.h
+>
+
+30
+ g__BEGIN_DECLS
+
+
+34 
+ ~<b™s/huge_v®.h
+>
+
+35 #ifdeà
+__USE_ISOC99
+
+
+36 
+ ~<b™s/huge_v®f.h
+>
+
+37 
+ ~<b™s/huge_v®l.h
+>
+
+40 
+ ~<b™s/šf.h
+>
+
+43 
+ ~<b™s/Çn.h
+>
+
+47 
+ ~<b™s/m©hdef.h
+>
+
+54 
+ #__MATHCALL
+(
+funùiÚ
+,
+suffix
+,
+¬gs
+) \
+
+55
+ `__MATHDECL
+ (
+_MdoubË_
+,
+funùiÚ
+,
+suffix
+,
+¬gs
+)
+
+ )
+
+56 
+ #__MATHDECL
+(
+ty³
+,
+funùiÚ
+,
+suffix
+,
+¬gs
+) \
+
+57
+ `__MATHDECL_1
+(
+ty³
+,
+funùiÚ
+,
+suffix
+,
+¬gs
+); \
+
+58
+ `__MATHDECL_1
+(
+ty³
+,
+ `__CONCAT
+(
+__
+,
+funùiÚ
+),
+suffix
+,
+¬gs
+)
+
+ )
+
+59 
+ #__MATHCALLX
+(
+funùiÚ
+,
+suffix
+,
+¬gs
+,
+©Œib
+) \
+
+60
+ `__MATHDECLX
+ (
+_MdoubË_
+,
+funùiÚ
+,
+suffix
+,
+¬gs
+,
+©Œib
+)
+
+ )
+
+61 
+ #__MATHDECLX
+(
+ty³
+,
+funùiÚ
+,
+suffix
+,
+¬gs
+,
+©Œib
+) \
+
+62
+ `__MATHDECL_1
+(
+ty³
+,
+funùiÚ
+,
+suffix
+,
+¬gs
+ `__©Œibu‹__
+ (
+©Œib
+); \
+
+63
+ `__MATHDECL_1
+(
+ty³
+,
+ `__CONCAT
+(
+__
+,
+funùiÚ
+),
+suffix
+,
+¬gs
+ `__©Œibu‹__
+ (
+©Œib
+)
+
+ )
+
+64 
+ #__MATHDECL_1
+(
+ty³
+,
+funùiÚ
+,
+suffix
+,
+¬gs
+) \
+
+65
+ty³
+
+ `__MATH_PRECNAME
+(
+funùiÚ
+,
+suffix
+¬gs
+
+__THROW
+
+
+ )
+
+67 
+ #_MdoubË_
+ 
+
+ )
+
+68 
+ #__MATH_PRECNAME
+(
+Çme
+,
+r
+ `__CONCAT
+Òame,r)
+
+ )
+
+69 
+ #_MdoubË_BEGIN_NAMESPACE
+
+__BEGIN_NAMESPACE_STD
+
+
+ )
+
+70 
+ #_MdoubË_END_NAMESPACE
+
+__END_NAMESPACE_STD
+
+
+ )
+
+71 
+ ~<b™s/m©hÿÎs.h
+>
+
+72 #undeà
+_MdoubË_
+
+
+73 #undeà
+_MdoubË_BEGIN_NAMESPACE
+
+
+74 #undeà
+_MdoubË_END_NAMESPACE
+
+
+75 #undeà
+__MATH_PRECNAME
+
+
+77 #ià
+defšed
+
+__USE_MISC
+ || defšed
+__USE_ISOC99
+
+
+83 #iâdeà
+_Mæßt_
+
+
+84 
+ #_Mæßt_
+ 
+
+ )
+
+86 
+ #_MdoubË_
+
+_Mæßt_
+
+
+ )
+
+87 #ifdeà
+__STDC__
+
+
+88 
+ #__MATH_PRECNAME
+(
+Çme
+,
+r
+èÇme##
+f
+##
+ )
+r
+
+90 
+ #__MATH_PRECNAME
+(
+Çme
+,
+r
+èÇm
+f
+
+ )
+r
+
+92 
+ #_MdoubË_BEGIN_NAMESPACE
+
+__BEGIN_NAMESPACE_C99
+
+
+ )
+
+93 
+ #_MdoubË_END_NAMESPACE
+
+__END_NAMESPACE_C99
+
+
+ )
+
+94 
+ ~<b™s/m©hÿÎs.h
+>
+
+95 #undeà
+_MdoubË_
+
+
+96 #undeà
+_MdoubË_BEGIN_NAMESPACE
+
+
+97 #undeà
+_MdoubË_END_NAMESPACE
+
+
+98 #undeà
+__MATH_PRECNAME
+
+
+100 #ià(
+__STDC__
+ - 0 ||
+__GNUC__
+ - 0) \
+
+101 && (!
+defšed
+
+__NO_LONG_DOUBLE_MATH
+ \
+
+102 ||
+defšed
+
+__LDBL_COMPAT
+ \
+
+103 || !
+defšed
+
+_LIBC
+)
+
+104 #ifdeà
+__LDBL_COMPAT
+
+
+106 #ifdeà
+__USE_ISOC99
+
+
+107 
+ $__Ædbl_Ãx‰ow¬df
+ (
+__x
+, 
+__y
+)
+
+108
+__THROW
+
+ `__©Œibu‹__
+ ((
+__cÚ¡__
+));
+
+109 #ifdeà
+__REDIRECT_NTH
+
+
+110 
+ `__REDIRECT_NTH
+ (
+Ãx‰ow¬df
+, (
+__x
+, 
+__y
+),
+
+111
+__Ædbl_Ãx‰ow¬df
+)
+
+112
+ `__©Œibu‹__
+ ((
+__cÚ¡__
+));
+
+113 
+ `__REDIRECT_NTH
+ (
+Ãx‰ow¬d
+, (
+__x
+, 
+__y
+),
+
+114
+Ãxá”
+ `__©Œibu‹__
+ ((
+__cÚ¡__
+));
+
+115 
+ `__REDIRECT_NTH
+ (
+Ãx‰ow¬dl
+,
+
+116 (
+__x
+, 
+__y
+),
+
+117
+Ãxá”
+ `__©Œibu‹__
+ ((
+__cÚ¡__
+));
+
+122 #ià
+defšed
+
+__LDBL_COMPAT
+ || defšed
+__NO_LONG_DOUBLE_MATH
+
+
+124 #undeà
+__MATHDECL_1
+
+
+125 
+ #__MATHDECL_2
+(
+ty³
+,
+funùiÚ
+,
+suffix
+,
+¬gs
+,
+®Ÿs
+) \
+
+126
+ty³
+
+ `__REDIRECT_NTH
+(
+ `__MATH_PRECNAME
+(
+funùiÚ
+,
+suffix
+), \
+
+127
+¬gs
+,
+®Ÿs
+)
+
+ )
+
+128 
+ #__MATHDECL_1
+(
+ty³
+,
+funùiÚ
+,
+suffix
+,
+¬gs
+) \
+
+129
+ `__MATHDECL_2
+(
+ty³
+,
+funùiÚ
+,
+suffix
+,
+¬gs
+,
+ `__CONCAT
+(funùiÚ,suffix))
+
+ )
+
+134 #iâdeà
+_MlÚg_doubË_
+
+
+135 
+ #_MlÚg_doubË_
+ 
+
+ )
+
+137 
+ #_MdoubË_
+
+_MlÚg_doubË_
+
+
+ )
+
+138 #ifdeà
+__STDC__
+
+
+139 
+ #__MATH_PRECNAME
+(
+Çme
+,
+r
+èÇme##
+l
+##
+ )
+r
+
+141 
+ #__MATH_PRECNAME
+(
+Çme
+,
+r
+èÇm
+l
+
+ )
+r
+
+143 
+ #_MdoubË_BEGIN_NAMESPACE
+
+__BEGIN_NAMESPACE_C99
+
+
+ )
+
+144 
+ #_MdoubË_END_NAMESPACE
+
+__END_NAMESPACE_C99
+
+
+ )
+
+145 
+ ~<b™s/m©hÿÎs.h
+>
+
+146 #undeà
+_MdoubË_
+
+
+147 #undeà
+_MdoubË_BEGIN_NAMESPACE
+
+
+148 #undeà
+_MdoubË_END_NAMESPACE
+
+
+149 #undeà
+__MATH_PRECNAME
+
+
+154 #undeà
+__MATHDECL_1
+
+
+155 #undeà
+__MATHDECL
+
+
+156 #undeà
+__MATHCALL
+
+
+159 #ià
+defšed
+
+__USE_MISC
+ || defšed
+__USE_XOPEN
+
+
+161 
+signgam
+;
+
+166 #ifdeà
+__USE_ISOC99
+
+
+204
+FP_NAN
+,
+
+205 
+ #FP_NAN
+
+FP_NAN
+
+
+ )
+
+206
+FP_INFINITE
+,
+
+207 
+ #FP_INFINITE
+
+FP_INFINITE
+
+
+ )
+
+208
+FP_ZERO
+,
+
+209 
+ #FP_ZERO
+
+FP_ZERO
+
+
+ )
+
+210
+FP_SUBNORMAL
+,
+
+211 
+ #FP_SUBNORMAL
+
+FP_SUBNORMAL
+
+
+ )
+
+212
+FP_NORMAL
+
+
+213 
+ #FP_NORMAL
+
+FP_NORMAL
+
+
+ )
+
+217 #ifdeà
+__NO_LONG_DOUBLE_MATH
+
+
+218 
+ #åþassify
+(
+x
+) \
+
+219 ( (
+x
+è=ð (è?
+ `__åþassifyf
+ (xè:
+ `__åþassify
+ (x))
+
+ )
+
+221 
+ #åþassify
+(
+x
+) \
+
+222 ( (
+x
+) ==  () \
+
+223 ?
+ `__åþassifyf
+ (
+x
+) \
+
+224 :  (
+x
+) ==  () \
+
+225 ?
+ `__åþassify
+ (
+x
+è:
+ `__åþassifyl
+ (x))
+
+ )
+
+229 #ifdeà
+__NO_LONG_DOUBLE_MATH
+
+
+230 
+ #signb™
+(
+x
+) \
+
+231 ( (
+x
+è=ð (è?
+ `__signb™f
+ (xè:
+ `__signb™
+ (x))
+
+ )
+
+233 
+ #signb™
+(
+x
+) \
+
+234 ( (
+x
+) ==  () \
+
+235 ?
+ `__signb™f
+ (
+x
+) \
+
+236 :  (
+x
+) ==  () \
+
+237 ?
+ `__signb™
+ (
+x
+è:
+ `__signb™l
+ (x))
+
+ )
+
+241 #ifdeà
+__NO_LONG_DOUBLE_MATH
+
+
+242 
+ #isfš™e
+(
+x
+) \
+
+243 ( (
+x
+è=ð (è?
+ `__fš™ef
+ (xè:
+ `__fš™e
+ (x))
+
+ )
+
+245 
+ #isfš™e
+(
+x
+) \
+
+246 ( (
+x
+) ==  () \
+
+247 ?
+ `__fš™ef
+ (
+x
+) \
+
+248 :  (
+x
+) ==  () \
+
+249 ?
+ `__fš™e
+ (
+x
+è:
+ `__fš™–
+ (x))
+
+ )
+
+253 
+ #i¢Üm®
+(
+x
+è(
+ `åþassify
+ (xè=ð
+FP_NORMAL
+)
+
+ )
+
+257 #ifdeà
+__NO_LONG_DOUBLE_MATH
+
+
+258 
+ #i¢ª
+(
+x
+) \
+
+259 ( (
+x
+è=ð (è?
+ `__i¢ªf
+ (xè:
+ `__i¢ª
+ (x))
+
+ )
+
+261 
+ #i¢ª
+(
+x
+) \
+
+262 ( (
+x
+) ==  () \
+
+263 ?
+ `__i¢ªf
+ (
+x
+) \
+
+264 :  (
+x
+) ==  () \
+
+265 ?
+ `__i¢ª
+ (
+x
+è:
+ `__i¢ªl
+ (x))
+
+ )
+
+269 #ifdeà
+__NO_LONG_DOUBLE_MATH
+
+
+270 
+ #isšf
+(
+x
+) \
+
+271 ( (
+x
+è=ð (è?
+ `__isšff
+ (xè:
+ `__isšf
+ (x))
+
+ )
+
+273 
+ #isšf
+(
+x
+) \
+
+274 ( (
+x
+) ==  () \
+
+275 ?
+ `__isšff
+ (
+x
+) \
+
+276 :  (
+x
+) ==  () \
+
+277 ?
+ `__isšf
+ (
+x
+è:
+ `__isšæ
+ (x))
+
+ )
+
+281 
+ #MATH_ERRNO
+ 1
+
+ )
+
+282 
+ #MATH_ERREXCEPT
+ 2
+
+ )
+
+287 #iâdeà
+__FAST_MATH__
+
+
+288 
+ #m©h_”rhªdlšg
+ (
+MATH_ERRNO
+ |
+MATH_ERREXCEPT
+)
+
+ )
+
+293 #ifdef
+__USE_MISC
+
+
+297
+_IEEE_
+ = -1,
+
+298
+_SVID_
+,
+
+299
+_XOPEN_
+,
+
+300
+_POSIX_
+,
+
+301
+_ISOC_
+
+
+302 }
+ t_LIB_VERSION_TYPE
+;
+
+307
+_LIB_VERSION_TYPE
+
+_LIB_VERSION
+;
+
+311 #ifdeà
+__USE_SVID
+
+
+317 #ifdeà
+__ýlu¥lus
+
+
+318 
+__exû±iÚ
+
+
+320 
+exû±iÚ
+
+
+323 
+ty³
+;
+
+324 *
+Çme
+;
+
+325 
+¬g1
+;
+
+326 
+¬g2
+;
+
+327 
+»tv®
+;
+
+328
+ }
+};
+
+330 #ifdeà
+__ýlu¥lus
+
+
+331 
+ $m©h”r
+ (
+__exû±iÚ
+ *
+__exc
+ `throw
+ ();
+
+333 
+ `m©h”r
+ (
+exû±iÚ
+ *
+__exc
+);
+
+336 
+ #X_TLOSS
+ 1.41484755040568800000e+16
+
+ )
+
+339 
+ #DOMAIN
+ 1
+
+ )
+
+340 
+ #SING
+ 2
+
+ )
+
+341 
+ #OVERFLOW
+ 3
+
+ )
+
+342 
+ #UNDERFLOW
+ 4
+
+ )
+
+343 
+ #TLOSS
+ 5
+
+ )
+
+344 
+ #PLOSS
+ 6
+
+ )
+
+347 
+ #HUGE
+ 3.40282347e+38F
+
+ )
+
+351 #ifdeà
+__USE_XOPEN
+
+
+353 
+ #MAXFLOAT
+ 3.40282347e+38F
+
+ )
+
+360 #ià
+defšed
+
+__USE_BSD
+ || defšed
+__USE_XOPEN
+
+
+361 
+ #M_E
+ 2.7182818284590452354
+
+ )
+
+362 
+ #M_LOG2E
+ 1.4426950408889634074
+
+ )
+
+363 
+ #M_LOG10E
+ 0.43429448190325182765
+
+ )
+
+364 
+ #M_LN2
+ 0.69314718055994530942
+
+ )
+
+365 
+ #M_LN10
+ 2.30258509299404568402
+
+ )
+
+366 
+ #M_PI
+ 3.14159265358979323846
+
+ )
+
+367 
+ #M_PI_2
+ 1.57079632679489661923
+
+ )
+
+368 
+ #M_PI_4
+ 0.78539816339744830962
+
+ )
+
+369 
+ #M_1_PI
+ 0.31830988618379067154
+
+ )
+
+370 
+ #M_2_PI
+ 0.63661977236758134308
+
+ )
+
+371 
+ #M_2_SQRTPI
+ 1.12837916709551257390
+
+ )
+
+372 
+ #M_SQRT2
+ 1.41421356237309504880
+
+ )
+
+373 
+ #M_SQRT1_2
+ 0.70710678118654752440
+
+ )
+
+379 #ifdeà
+__USE_GNU
+
+
+380 
+ #M_El
+ 2.7182818284590452353602874713526625L
+
+ )
+
+381 
+ #M_LOG2El
+ 1.4426950408889634073599246810018921L
+
+ )
+
+382 
+ #M_LOG10El
+ 0.4342944819032518276511289189166051L
+
+ )
+
+383 
+ #M_LN2l
+ 0.6931471805599453094172321214581766L
+
+ )
+
+384 
+ #M_LN10l
+ 2.3025850929940456840179914546843642L
+
+ )
+
+385 
+ #M_PIl
+ 3.1415926535897932384626433832795029L
+
+ )
+
+386 
+ #M_PI_2l
+ 1.5707963267948966192313216916397514L
+
+ )
+
+387 
+ #M_PI_4l
+ 0.7853981633974483096156608458198757L
+
+ )
+
+388 
+ #M_1_PIl
+ 0.3183098861837906715377675267450287L
+
+ )
+
+389 
+ #M_2_PIl
+ 0.6366197723675813430755350534900574L
+
+ )
+
+390 
+ #M_2_SQRTPIl
+ 1.1283791670955125738961589031215452L
+
+ )
+
+391 
+ #M_SQRT2l
+ 1.4142135623730950488016887242096981L
+
+ )
+
+392 
+ #M_SQRT1_2l
+ 0.7071067811865475244008443621048490L
+
+ )
+
+399 #ià
+defšed
+
+__STRICT_ANSI__
+ && !defšed
+__NO_MATH_INLINES
+
+
+400 
+ #__NO_MATH_INLINES
+ 1
+
+ )
+
+403 #ià
+defšed
+
+__USE_ISOC99
+ &&
+ `__GNUC_PREREQ
+(2,97)
+
+410 
+ #isg»©”
+(
+x
+,
+y
+ `__bužtš_isg»©”
+(x, y)
+
+ )
+
+411 
+ #isg»©”equ®
+(
+x
+,
+y
+ `__bužtš_isg»©”equ®
+(x, y)
+
+ )
+
+412 
+ #i¦ess
+(
+x
+,
+y
+ `__bužtš_i¦ess
+(x, y)
+
+ )
+
+413 
+ #i¦es£qu®
+(
+x
+,
+y
+ `__bužtš_i¦es£qu®
+(x, y)
+
+ )
+
+414 
+ #i¦essg»©”
+(
+x
+,
+y
+ `__bužtš_i¦essg»©”
+(x, y)
+
+ )
+
+415 
+ #isunÜd”ed
+(
+u
+,
+v
+ `__bužtš_isunÜd”ed
+(u, v)
+
+ )
+
+419 #ifdeà
+__USE_EXTERN_INLINES
+
+
+420 
+ ~<b™s/m©hšlše.h
+>
+
+423 #ifdeà
+__USE_ISOC99
+
+
+427 #iâdeà
+isg»©”
+
+
+428 
+ #isg»©”
+(
+x
+,
+y
+) \
+
+429 (
+__ex‹nsiÚ__
+ \
+
+430 ({
+ `__ty³of__
+(
+x
+__x
+ = (x); __ty³of__(
+y
+__y
+ = (y); \
+
+431 !
+ `isunÜd”ed
+ (
+__x
+,
+__y
+è&& __x > __y;
+ }
+}))
+
+ )
+
+435 #iâdeà
+isg»©”equ®
+
+
+436 
+ #isg»©”equ®
+(
+x
+,
+y
+) \
+
+437 (
+__ex‹nsiÚ__
+ \
+
+438 ({
+ `__ty³of__
+(
+x
+__x
+ = (x); __ty³of__(
+y
+__y
+ = (y); \
+
+439 !
+ `isunÜd”ed
+ (
+__x
+,
+__y
+è&& __x >ð__y; }))
+
+ )
+
+443 #iâdeà
+i¦ess
+
+
+444 
+ #i¦ess
+(
+x
+,
+y
+) \
+
+445 (
+__ex‹nsiÚ__
+ \
+
+446 ({
+ `__ty³of__
+(
+x
+__x
+ = (x); __ty³of__(
+y
+__y
+ = (y); \
+
+447 !
+ `isunÜd”ed
+ (
+__x
+,
+__y
+è&& __x < __y; }))
+
+ )
+
+451 #iâdeà
+i¦es£qu®
+
+
+452 
+ #i¦es£qu®
+(
+x
+,
+y
+) \
+
+453 (
+__ex‹nsiÚ__
+ \
+
+454 ({
+ `__ty³of__
+(
+x
+__x
+ = (x); __ty³of__(
+y
+__y
+ = (y); \
+
+455 !
+ `isunÜd”ed
+ (
+__x
+,
+__y
+è&& __x <ð__y; }))
+
+ )
+
+459 #iâdeà
+i¦essg»©”
+
+
+460 
+ #i¦essg»©”
+(
+x
+,
+y
+) \
+
+461 (
+__ex‹nsiÚ__
+ \
+
+462 ({
+ `__ty³of__
+(
+x
+__x
+ = (x); __ty³of__(
+y
+__y
+ = (y); \
+
+463 !
+ `isunÜd”ed
+ (
+__x
+,
+__y
+è&& (__x < __y || __y < __x); }))
+
+ )
+
+467 #iâdeà
+isunÜd”ed
+
+
+468 
+ #isunÜd”ed
+(
+u
+,
+v
+) \
+
+469 (
+__ex‹nsiÚ__
+ \
+
+470 ({
+ `__ty³of__
+(
+u
+__u
+ = (u); __ty³of__(
+v
+__v
+ = (v); \
+
+471
+ `åþassify
+ (
+__u
+è=ð
+FP_NAN
+ || fpþassify (
+__v
+è=ðFP_NAN; }))
+
+ )
+
+476
+ g__END_DECLS
+
+
+ @/usr/include/stdio.h
+
+24 #iâdeà
+_STDIO_H
+
+
+26 #ià!
+defšed
+
+__Ãed_FILE
+ && !defšed
+__Ãed___FILE
+
+
+27 
+ #_STDIO_H
+ 1
+
+ )
+
+28 
+ ~<ã©u»s.h
+>
+
+30
+ g__BEGIN_DECLS
+
+
+32 
+ #__Ãed_size_t
+
+
+ )
+
+33 
+ #__Ãed_NULL
+
+
+ )
+
+34 
+ ~<¡ddef.h
+>
+
+36 
+ ~<b™s/ty³s.h
+>
+
+37 
+ #__Ãed_FILE
+
+
+ )
+
+38 
+ #__Ãed___FILE
+
+
+ )
+
+42 #ià!
+defšed
+
+__FILE_defšed
+ && defšed
+__Ãed_FILE
+
+
+45 
+ g_IO_FILE
+;
+
+47
+__BEGIN_NAMESPACE_STD
+
+
+49 
+_IO_FILE
+
+ tFILE
+;
+
+50
+ g__END_NAMESPACE_STD
+
+
+51 #ià
+defšed
+
+__USE_LARGEFILE64
+ || defšed
+__USE_SVID
+ || defšed
+__USE_POSIX
+ \
+
+52 ||
+defšed
+
+ g__USE_BSD
+ || defšed
+ g__USE_ISOC99
+ || defšed
+ g__USE_XOPEN
+ \
+
+53 ||
+defšed
+
+__USE_POSIX2
+
+
+54
+ $__USING_NAMESPACE_STD
+(
+FILE
+)
+
+57 
+ #__FILE_defšed
+ 1
+
+ )
+
+59 #undeà
+__Ãed_FILE
+
+
+62 #ià!
+defšed
+
+____FILE_defšed
+ && defšed
+__Ãed___FILE
+
+
+65 
+_IO_FILE
+
+ t__FILE
+;
+
+67 
+ #____FILE_defšed
+ 1
+
+ )
+
+69 #undeà
+__Ãed___FILE
+
+
+72 #ifdef
+_STDIO_H
+
+
+73 
+ #_STDIO_USES_IOSTREAM
+
+
+ )
+
+75 
+ ~<libio.h
+>
+
+77 #ifdeà
+__USE_XOPEN
+
+
+78 #ifdeà
+__GNUC__
+
+
+79 #iâdeà
+_VA_LIST_DEFINED
+
+
+80 
+_G_va_li¡
+
+ tva_li¡
+;
+
+81 
+ #_VA_LIST_DEFINED
+
+
+ )
+
+84 
+ ~<¡d¬g.h
+>
+
+89
+__BEGIN_NAMESPACE_STD
+
+
+90 #iâdeà
+__USE_FILE_OFFSET64
+
+
+91 
+_G_åos_t
+
+ tåos_t
+;
+
+93 
+_G_åos64_t
+
+ tåos_t
+;
+
+95
+__END_NAMESPACE_STD
+
+
+96 #ifdeà
+__USE_LARGEFILE64
+
+
+97 
+_G_åos64_t
+
+ tåos64_t
+;
+
+101 
+ #_IOFBF
+ 0
+
+ )
+
+102 
+ #_IOLBF
+ 1
+
+ )
+
+103 
+ #_IONBF
+ 2
+
+ )
+
+107 #iâdeà
+BUFSIZ
+
+
+108 
+ #BUFSIZ
+
+_IO_BUFSIZ
+
+
+ )
+
+114 #iâdeà
+EOF
+
+
+115 
+ #EOF
+ (-1)
+
+ )
+
+121 
+ #SEEK_SET
+ 0
+
+ )
+
+122 
+ #SEEK_CUR
+ 1
+
+ )
+
+123 
+ #SEEK_END
+ 2
+
+ )
+
+126 #ià
+defšed
+
+__USE_SVID
+ || defšed
+__USE_XOPEN
+
+
+128 
+ #P_tmpdœ
+ "/tmp"
+
+ )
+
+141 
+ ~<b™s/¡dio_lim.h
+>
+
+145 
+_IO_FILE
+ *
+¡dš
+;
+
+146 
+_IO_FILE
+ *
+¡dout
+;
+
+147 
+_IO_FILE
+ *
+¡d”r
+;
+
+149 
+ #¡dš
+
+¡dš
+
+
+ )
+
+150 
+ #¡dout
+
+¡dout
+
+
+ )
+
+151 
+ #¡d”r
+
+¡d”r
+
+
+ )
+
+153
+__BEGIN_NAMESPACE_STD
+
+
+155 
+ $»move
+ (
+__cÚ¡
+ *
+__fž’ame
+__THROW
+;
+
+157 
+ $Ȃme
+ (
+__cÚ¡
+ *
+__Þd
+, __cÚ¡ *
+__Ãw
+__THROW
+;
+
+158
+__END_NAMESPACE_STD
+
+
+160 #ifdeà
+__USE_ATFILE
+
+
+162 
+ $»Çm—t
+ (
+__Þdfd
+,
+__cÚ¡
+ *
+__Þd
+, 
+__Ãwfd
+,
+
+163
+__cÚ¡
+ *
+__Ãw
+__THROW
+;
+
+166
+__BEGIN_NAMESPACE_STD
+
+
+171 #iâdeà
+__USE_FILE_OFFSET64
+
+
+172
+FILE
+ *
+ $tmpfže
+ (è
+__wur
+;
+
+174 #ifdeà
+__REDIRECT
+
+
+175
+FILE
+ *
+ `__REDIRECT
+ (
+tmpfže
+, (),
+tmpfže64
+__wur
+;
+
+177 
+ #tmpfže
+
+tmpfže64
+
+
+ )
+
+181 #ifdeà
+__USE_LARGEFILE64
+
+
+182
+FILE
+ *
+ $tmpfže64
+ (è
+__wur
+;
+
+186 *
+ $tm²am
+ (*
+__s
+__THROW
+
+__wur
+;
+
+187
+__END_NAMESPACE_STD
+
+
+189 #ifdeà
+__USE_MISC
+
+
+192 *
+ $tm²am_r
+ (*
+__s
+__THROW
+
+__wur
+;
+
+196 #ià
+defšed
+
+__USE_SVID
+ || defšed
+__USE_XOPEN
+
+
+204 *
+ $‹m²am
+ (
+__cÚ¡
+ *
+__dœ
+, __cÚ¡ *
+__pfx
+)
+
+205
+__THROW
+
+__©Œibu‹_m®loc__
+
+__wur
+;
+
+209
+__BEGIN_NAMESPACE_STD
+
+
+214 
+ `fþo£
+ (
+FILE
+ *
+__¡»am
+);
+
+219 
+ `fæush
+ (
+FILE
+ *
+__¡»am
+);
+
+220
+__END_NAMESPACE_STD
+
+
+222 #ifdeà
+__USE_MISC
+
+
+229 
+ `fæush_uÆocked
+ (
+FILE
+ *
+__¡»am
+);
+
+232 #ifdeà
+__USE_GNU
+
+
+239 
+ `fþo£®l
+ ();
+
+243
+__BEGIN_NAMESPACE_STD
+
+
+244 #iâdeà
+__USE_FILE_OFFSET64
+
+
+249
+FILE
+ *
+ $fÝ’
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__fž’ame
+,
+
+250
+__cÚ¡
+ *
+__»¡riù
+
+__modes
+__wur
+;
+
+255
+FILE
+ *
+ $äeÝ’
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__fž’ame
+,
+
+256
+__cÚ¡
+ *
+__»¡riù
+
+__modes
+,
+
+257
+FILE
+ *
+__»¡riù
+
+__¡»am
+__wur
+;
+
+259 #ifdeà
+__REDIRECT
+
+
+260
+FILE
+ *
+ `__REDIRECT
+ (
+fÝ’
+, (
+__cÚ¡
+ *
+__»¡riù
+
+__fž’ame
+,
+
+261
+__cÚ¡
+ *
+__»¡riù
+
+__modes
+),
+fÝ’64
+)
+
+262
+__wur
+;
+
+263
+FILE
+ *
+ `__REDIRECT
+ (
+äeÝ’
+, (
+__cÚ¡
+ *
+__»¡riù
+
+__fž’ame
+,
+
+264
+__cÚ¡
+ *
+__»¡riù
+
+__modes
+,
+
+265
+FILE
+ *
+__»¡riù
+
+__¡»am
+),
+äeÝ’64
+)
+
+266
+__wur
+;
+
+268 
+ #fÝ’
+
+fÝ’64
+
+
+ )
+
+269 
+ #äeÝ’
+
+äeÝ’64
+
+
+ )
+
+272
+__END_NAMESPACE_STD
+
+
+273 #ifdeà
+__USE_LARGEFILE64
+
+
+274
+FILE
+ *
+ $fÝ’64
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__fž’ame
+,
+
+275
+__cÚ¡
+ *
+__»¡riù
+
+__modes
+__wur
+;
+
+276
+FILE
+ *
+ $äeÝ’64
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__fž’ame
+,
+
+277
+__cÚ¡
+ *
+__»¡riù
+
+__modes
+,
+
+278
+FILE
+ *
+__»¡riù
+
+__¡»am
+__wur
+;
+
+281 #ifdef
+__USE_POSIX
+
+
+283
+FILE
+ *
+ $fdÝ’
+ (
+__fd
+,
+__cÚ¡
+ *
+__modes
+__THROW
+
+__wur
+;
+
+286 #ifdef
+__USE_GNU
+
+
+289
+FILE
+ *
+ $fÝ’cook›
+ (*
+__»¡riù
+
+__magic_cook›
+,
+
+290
+__cÚ¡
+ *
+__»¡riù
+
+__modes
+,
+
+291
+_IO_cook›_io_funùiÚs_t
+
+__io_funcs
+__THROW
+
+__wur
+;
+
+294 #ifdeà
+__USE_XOPEN2K8
+
+
+296
+FILE
+ *
+ $fmemÝ’
+ (*
+__s
+,
+size_t
+
+__Ën
+,
+__cÚ¡
+ *
+__modes
+)
+
+297
+__THROW
+
+__wur
+;
+
+302
+FILE
+ *
+ $Ý’_mem¡»am
+ (**
+__buæoc
+,
+size_t
+ *
+__siz–oc
+__THROW
+
+__wur
+;
+
+306
+__BEGIN_NAMESPACE_STD
+
+
+309 
+ $£tbuf
+ (
+FILE
+ *
+__»¡riù
+
+__¡»am
+, *__»¡riù
+__buf
+__THROW
+;
+
+313 
+ $£tvbuf
+ (
+FILE
+ *
+__»¡riù
+
+__¡»am
+, *__»¡riù
+__buf
+,
+
+314 
+__modes
+,
+size_t
+
+__n
+__THROW
+;
+
+315
+__END_NAMESPACE_STD
+
+
+317 #ifdef
+__USE_BSD
+
+
+320 
+ $£tbufãr
+ (
+FILE
+ *
+__»¡riù
+
+__¡»am
+, *__»¡riù
+__buf
+,
+
+321
+size_t
+
+__size
+__THROW
+;
+
+324 
+ $£Žšebuf
+ (
+FILE
+ *
+__¡»am
+__THROW
+;
+
+328
+__BEGIN_NAMESPACE_STD
+
+
+333 
+ `årštf
+ (
+FILE
+ *
+__»¡riù
+
+__¡»am
+,
+
+334
+__cÚ¡
+ *
+__»¡riù
+
+__fÜm©
+, ...);
+
+339 
+ `´štf
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__fÜm©
+, ...);
+
+341 
+ $¥rštf
+ (*
+__»¡riù
+
+__s
+,
+
+342
+__cÚ¡
+ *
+__»¡riù
+
+__fÜm©
+, ...è
+__THROW
+;
+
+348 
+ `vårštf
+ (
+FILE
+ *
+__»¡riù
+
+__s
+,
+__cÚ¡
+ *__»¡riù
+__fÜm©
+,
+
+349
+_G_va_li¡
+
+__¬g
+);
+
+354 
+ `v´štf
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__fÜm©
+,
+_G_va_li¡
+
+__¬g
+);
+
+356 
+ $v¥rštf
+ (*
+__»¡riù
+
+__s
+,
+__cÚ¡
+ *__»¡riù
+__fÜm©
+,
+
+357
+_G_va_li¡
+
+__¬g
+__THROW
+;
+
+358
+__END_NAMESPACE_STD
+
+
+360 #ià
+defšed
+
+__USE_BSD
+ || defšed
+__USE_ISOC99
+ || defšed
+__USE_UNIX98
+
+
+361
+__BEGIN_NAMESPACE_C99
+
+
+363 
+ $¢´štf
+ (*
+__»¡riù
+
+__s
+,
+size_t
+
+__maxËn
+,
+
+364
+__cÚ¡
+ *
+__»¡riù
+
+__fÜm©
+, ...)
+
+365
+__THROW
+
+ `__©Œibu‹__
+ ((
+ `__fÜm©__
+ (
+__´štf__
+, 3, 4)));
+
+367 
+ $v¢´štf
+ (*
+__»¡riù
+
+__s
+,
+size_t
+
+__maxËn
+,
+
+368
+__cÚ¡
+ *
+__»¡riù
+
+__fÜm©
+,
+_G_va_li¡
+
+__¬g
+)
+
+369
+__THROW
+
+ `__©Œibu‹__
+ ((
+ `__fÜm©__
+ (
+__´štf__
+, 3, 0)));
+
+370
+__END_NAMESPACE_C99
+
+
+373 #ifdeà
+__USE_GNU
+
+
+376 
+ $va¥rštf
+ (**
+__»¡riù
+
+__±r
+,
+__cÚ¡
+ *__»¡riù
+__f
+,
+
+377
+_G_va_li¡
+
+__¬g
+)
+
+378
+__THROW
+
+ `__©Œibu‹__
+ ((
+ $__fÜm©__
+ (
+__´štf__
+, 2, 0))è
+__wur
+;
+
+379 
+ $__a¥rštf
+ (**
+__»¡riù
+
+__±r
+,
+
+380
+__cÚ¡
+ *
+__»¡riù
+
+__fmt
+, ...)
+
+381
+__THROW
+
+ `__©Œibu‹__
+ ((
+ $__fÜm©__
+ (
+__´štf__
+, 2, 3))è
+__wur
+;
+
+382 
+ $a¥rštf
+ (**
+__»¡riù
+
+__±r
+,
+
+383
+__cÚ¡
+ *
+__»¡riù
+
+__fmt
+, ...)
+
+384
+__THROW
+
+ `__©Œibu‹__
+ ((
+ $__fÜm©__
+ (
+__´štf__
+, 2, 3))è
+__wur
+;
+
+387 #ifdeà
+__USE_XOPEN2K8
+
+
+394 
+ $vd´štf
+ (
+__fd
+,
+__cÚ¡
+ *
+__»¡riù
+
+__fmt
+,
+
+395
+_G_va_li¡
+
+__¬g
+)
+
+396
+ `__©Œibu‹__
+ ((
+ `__fÜm©__
+ (
+__´štf__
+, 2, 0)));
+
+397 
+ $d´štf
+ (
+__fd
+,
+__cÚ¡
+ *
+__»¡riù
+
+__fmt
+, ...)
+
+398
+ `__©Œibu‹__
+ ((
+ `__fÜm©__
+ (
+__´štf__
+, 2, 3)));
+
+402
+__BEGIN_NAMESPACE_STD
+
+
+407 
+ $fsÿnf
+ (
+FILE
+ *
+__»¡riù
+
+__¡»am
+,
+
+408
+__cÚ¡
+ *
+__»¡riù
+
+__fÜm©
+, ...è
+__wur
+;
+
+413 
+ $sÿnf
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__fÜm©
+, ...è
+__wur
+;
+
+415 
+ $ssÿnf
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__s
+,
+
+416
+__cÚ¡
+ *
+__»¡riù
+
+__fÜm©
+, ...è
+__THROW
+;
+
+418 #ià
+defšed
+
+__USE_ISOC99
+ && !defšed
+__USE_GNU
+ \
+
+419 && (!
+defšed
+
+__LDBL_COMPAT
+ || !defšed
+__REDIRECT
+) \
+
+420 && (
+defšed
+
+__STRICT_ANSI__
+ || defšed
+__USE_XOPEN2K
+)
+
+421 #ifdeà
+__REDIRECT
+
+
+425 
+ `__REDIRECT
+ (
+fsÿnf
+, (
+FILE
+ *
+__»¡riù
+
+__¡»am
+,
+
+426
+__cÚ¡
+ *
+__»¡riù
+
+__fÜm©
+, ...),
+
+427
+__isoc99_fsÿnf
+__wur
+;
+
+428 
+ `__REDIRECT
+ (
+sÿnf
+, (
+__cÚ¡
+ *
+__»¡riù
+
+__fÜm©
+, ...),
+
+429
+__isoc99_sÿnf
+__wur
+;
+
+430 
+ `__REDIRECT
+ (
+ssÿnf
+, (
+__cÚ¡
+ *
+__»¡riù
+
+__s
+,
+
+431
+__cÚ¡
+ *
+__»¡riù
+
+__fÜm©
+, ...),
+
+432
+__isoc99_ssÿnf
+__THROW
+;
+
+434 
+ $__isoc99_fsÿnf
+ (
+FILE
+ *
+__»¡riù
+
+__¡»am
+,
+
+435
+__cÚ¡
+ *
+__»¡riù
+
+__fÜm©
+, ...è
+__wur
+;
+
+436 
+ $__isoc99_sÿnf
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__fÜm©
+, ...è
+__wur
+;
+
+437 
+ $__isoc99_ssÿnf
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__s
+,
+
+438
+__cÚ¡
+ *
+__»¡riù
+
+__fÜm©
+, ...è
+__THROW
+;
+
+439 
+ #fsÿnf
+
+__isoc99_fsÿnf
+
+
+ )
+
+440 
+ #sÿnf
+
+__isoc99_sÿnf
+
+
+ )
+
+441 
+ #ssÿnf
+
+__isoc99_ssÿnf
+
+
+ )
+
+445
+__END_NAMESPACE_STD
+
+
+447 #ifdef
+__USE_ISOC99
+
+
+448
+__BEGIN_NAMESPACE_C99
+
+
+453 
+ $vfsÿnf
+ (
+FILE
+ *
+__»¡riù
+
+__s
+,
+__cÚ¡
+ *__»¡riù
+__fÜm©
+,
+
+454
+_G_va_li¡
+
+__¬g
+)
+
+455
+ `__©Œibu‹__
+ ((
+ $__fÜm©__
+ (
+__sÿnf__
+, 2, 0))è
+__wur
+;
+
+461 
+ $vsÿnf
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__fÜm©
+,
+_G_va_li¡
+
+__¬g
+)
+
+462
+ `__©Œibu‹__
+ ((
+ $__fÜm©__
+ (
+__sÿnf__
+, 1, 0))è
+__wur
+;
+
+465 
+ $vssÿnf
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__s
+,
+
+466
+__cÚ¡
+ *
+__»¡riù
+
+__fÜm©
+,
+_G_va_li¡
+
+__¬g
+)
+
+467
+__THROW
+
+ `__©Œibu‹__
+ ((
+ `__fÜm©__
+ (
+__sÿnf__
+, 2, 0)));
+
+469 #ià!
+defšed
+
+__USE_GNU
+ \
+
+470 && (!
+defšed
+
+__LDBL_COMPAT
+ || !defšed
+__REDIRECT
+) \
+
+471 && (
+defšed
+
+__STRICT_ANSI__
+ || defšed
+__USE_XOPEN2K
+)
+
+472 #ifdeà
+__REDIRECT
+
+
+476 
+ `__REDIRECT
+ (
+vfsÿnf
+,
+
+477 (
+FILE
+ *
+__»¡riù
+
+__s
+,
+
+478
+__cÚ¡
+ *
+__»¡riù
+
+__fÜm©
+,
+_G_va_li¡
+
+__¬g
+),
+
+479
+__isoc99_vfsÿnf
+)
+
+480
+ `__©Œibu‹__
+ ((
+ $__fÜm©__
+ (
+__sÿnf__
+, 2, 0))è
+__wur
+;
+
+481 
+ `__REDIRECT
+ (
+vsÿnf
+, (
+__cÚ¡
+ *
+__»¡riù
+
+__fÜm©
+,
+
+482
+_G_va_li¡
+
+__¬g
+),
+__isoc99_vsÿnf
+)
+
+483
+ `__©Œibu‹__
+ ((
+ $__fÜm©__
+ (
+__sÿnf__
+, 1, 0))è
+__wur
+;
+
+484 
+ `__REDIRECT
+ (
+vssÿnf
+,
+
+485 (
+__cÚ¡
+ *
+__»¡riù
+
+__s
+,
+
+486
+__cÚ¡
+ *
+__»¡riù
+
+__fÜm©
+,
+_G_va_li¡
+
+__¬g
+),
+
+487
+__isoc99_vssÿnf
+)
+
+488
+__THROW
+
+ `__©Œibu‹__
+ ((
+ `__fÜm©__
+ (
+__sÿnf__
+, 2, 0)));
+
+490 
+ $__isoc99_vfsÿnf
+ (
+FILE
+ *
+__»¡riù
+
+__s
+,
+
+491
+__cÚ¡
+ *
+__»¡riù
+
+__fÜm©
+,
+
+492
+_G_va_li¡
+
+__¬g
+__wur
+;
+
+493 
+ $__isoc99_vsÿnf
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__fÜm©
+,
+
+494
+_G_va_li¡
+
+__¬g
+__wur
+;
+
+495 
+ $__isoc99_vssÿnf
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__s
+,
+
+496
+__cÚ¡
+ *
+__»¡riù
+
+__fÜm©
+,
+
+497
+_G_va_li¡
+
+__¬g
+__THROW
+;
+
+498 
+ #vfsÿnf
+
+__isoc99_vfsÿnf
+
+
+ )
+
+499 
+ #vsÿnf
+
+__isoc99_vsÿnf
+
+
+ )
+
+500 
+ #vssÿnf
+
+__isoc99_vssÿnf
+
+
+ )
+
+504
+__END_NAMESPACE_C99
+
+
+508
+__BEGIN_NAMESPACE_STD
+
+
+513 
+ `fg‘c
+ (
+FILE
+ *
+__¡»am
+);
+
+514 
+ `g‘c
+ (
+FILE
+ *
+__¡»am
+);
+
+520 
+ `g‘ch¬
+ ();
+
+521
+__END_NAMESPACE_STD
+
+
+525 
+ #g‘c
+(
+_å
+ `_IO_g‘c
+ (_å)
+
+ )
+
+527 #ià
+defšed
+
+__USE_POSIX
+ || defšed
+__USE_MISC
+
+
+532 
+ `g‘c_uÆocked
+ (
+FILE
+ *
+__¡»am
+);
+
+533 
+ `g‘ch¬_uÆocked
+ ();
+
+536 #ifdeà
+__USE_MISC
+
+
+543 
+ `fg‘c_uÆocked
+ (
+FILE
+ *
+__¡»am
+);
+
+547
+__BEGIN_NAMESPACE_STD
+
+
+555 
+ `åutc
+ (
+__c
+,
+FILE
+ *
+__¡»am
+);
+
+556 
+ `putc
+ (
+__c
+,
+FILE
+ *
+__¡»am
+);
+
+562 
+ `putch¬
+ (
+__c
+);
+
+563
+__END_NAMESPACE_STD
+
+
+567 
+ #putc
+(
+_ch
+,
+_å
+ `_IO_putc
+ (_ch, _å)
+
+ )
+
+569 #ifdeà
+__USE_MISC
+
+
+576 
+ `åutc_uÆocked
+ (
+__c
+,
+FILE
+ *
+__¡»am
+);
+
+579 #ià
+defšed
+
+__USE_POSIX
+ || defšed
+__USE_MISC
+
+
+584 
+ `putc_uÆocked
+ (
+__c
+,
+FILE
+ *
+__¡»am
+);
+
+585 
+ `putch¬_uÆocked
+ (
+__c
+);
+
+589 #ià
+defšed
+
+__USE_SVID
+ || defšed
+__USE_MISC
+ \
+
+590 || (
+defšed
+
+__USE_XOPEN
+ && !defšed
+__USE_XOPEN2K
+)
+
+592 
+ `g‘w
+ (
+FILE
+ *
+__¡»am
+);
+
+595 
+ `putw
+ (
+__w
+,
+FILE
+ *
+__¡»am
+);
+
+599
+__BEGIN_NAMESPACE_STD
+
+
+604 *
+ $fg‘s
+ (*
+__»¡riù
+
+__s
+, 
+__n
+,
+FILE
+ *__»¡riù
+__¡»am
+)
+
+605
+__wur
+;
+
+612 *
+ $g‘s
+ (*
+__s
+__wur
+;
+
+613
+__END_NAMESPACE_STD
+
+
+615 #ifdeà
+__USE_GNU
+
+
+622 *
+ $fg‘s_uÆocked
+ (*
+__»¡riù
+
+__s
+, 
+__n
+,
+
+623
+FILE
+ *
+__»¡riù
+
+__¡»am
+__wur
+;
+
+627 #ifdef
+__USE_XOPEN2K8
+
+
+638
+_IO_ssize_t
+
+ $__g‘d–im
+ (**
+__»¡riù
+
+__lš•Œ
+,
+
+639
+size_t
+ *
+__»¡riù
+
+__n
+, 
+__d–im™”
+,
+
+640
+FILE
+ *
+__»¡riù
+
+__¡»am
+__wur
+;
+
+641
+_IO_ssize_t
+
+ $g‘d–im
+ (**
+__»¡riù
+
+__lš•Œ
+,
+
+642
+size_t
+ *
+__»¡riù
+
+__n
+, 
+__d–im™”
+,
+
+643
+FILE
+ *
+__»¡riù
+
+__¡»am
+__wur
+;
+
+651
+_IO_ssize_t
+
+ $g‘lše
+ (**
+__»¡riù
+
+__lš•Œ
+,
+
+652
+size_t
+ *
+__»¡riù
+
+__n
+,
+
+653
+FILE
+ *
+__»¡riù
+
+__¡»am
+__wur
+;
+
+657
+__BEGIN_NAMESPACE_STD
+
+
+662 
+ `åuts
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__s
+,
+FILE
+ *__»¡riù
+__¡»am
+);
+
+668 
+ `puts
+ (
+__cÚ¡
+ *
+__s
+);
+
+675 
+ `ung‘c
+ (
+__c
+,
+FILE
+ *
+__¡»am
+);
+
+682
+size_t
+
+ $ä—d
+ (*
+__»¡riù
+
+__±r
+,
+size_t
+
+__size
+,
+
+683
+size_t
+
+__n
+,
+FILE
+ *
+__»¡riù
+
+__¡»am
+__wur
+;
+
+688
+size_t
+
+ `fwr™e
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__±r
+, size_ˆ
+__size
+,
+
+689
+size_t
+
+__n
+,
+FILE
+ *
+__»¡riù
+
+__s
+);
+
+690
+__END_NAMESPACE_STD
+
+
+692 #ifdeà
+__USE_GNU
+
+
+699 
+ `åuts_uÆocked
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__s
+,
+
+700
+FILE
+ *
+__»¡riù
+
+__¡»am
+);
+
+703 #ifdeà
+__USE_MISC
+
+
+710
+size_t
+
+ $ä—d_uÆocked
+ (*
+__»¡riù
+
+__±r
+,
+size_t
+
+__size
+,
+
+711
+size_t
+
+__n
+,
+FILE
+ *
+__»¡riù
+
+__¡»am
+__wur
+;
+
+712
+size_t
+
+ `fwr™e_uÆocked
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__±r
+, size_ˆ
+__size
+,
+
+713
+size_t
+
+__n
+,
+FILE
+ *
+__»¡riù
+
+__¡»am
+);
+
+717
+__BEGIN_NAMESPACE_STD
+
+
+722 
+ `f£ek
+ (
+FILE
+ *
+__¡»am
+, 
+__off
+, 
+__wh’û
+);
+
+727 
+ $á–l
+ (
+FILE
+ *
+__¡»am
+__wur
+;
+
+732 
+ `»wšd
+ (
+FILE
+ *
+__¡»am
+);
+
+733
+__END_NAMESPACE_STD
+
+
+740 #ià
+defšed
+
+__USE_LARGEFILE
+ || defšed
+__USE_XOPEN2K
+
+
+741 #iâdeà
+__USE_FILE_OFFSET64
+
+
+746 
+ `f£eko
+ (
+FILE
+ *
+__¡»am
+,
+__off_t
+
+__off
+, 
+__wh’û
+);
+
+751
+__off_t
+
+ $á–lo
+ (
+FILE
+ *
+__¡»am
+__wur
+;
+
+753 #ifdeà
+__REDIRECT
+
+
+754 
+ `__REDIRECT
+ (
+f£eko
+,
+
+755 (
+FILE
+ *
+__¡»am
+,
+__off64_t
+
+__off
+, 
+__wh’û
+),
+
+756
+f£eko64
+);
+
+757
+__off64_t
+
+ `__REDIRECT
+ (
+á–lo
+, (
+FILE
+ *
+__¡»am
+),
+á–lo64
+);
+
+759 
+ #f£eko
+
+f£eko64
+
+
+ )
+
+760 
+ #á–lo
+
+á–lo64
+
+
+ )
+
+765
+__BEGIN_NAMESPACE_STD
+
+
+766 #iâdeà
+__USE_FILE_OFFSET64
+
+
+771 
+ `fg‘pos
+ (
+FILE
+ *
+__»¡riù
+
+__¡»am
+,
+åos_t
+ *__»¡riù
+__pos
+);
+
+776 
+ `f£os
+ (
+FILE
+ *
+__¡»am
+,
+__cÚ¡
+
+åos_t
+ *
+__pos
+);
+
+778 #ifdeà
+__REDIRECT
+
+
+779 
+ `__REDIRECT
+ (
+fg‘pos
+, (
+FILE
+ *
+__»¡riù
+
+__¡»am
+,
+
+780
+åos_t
+ *
+__»¡riù
+
+__pos
+),
+fg‘pos64
+);
+
+781 
+ `__REDIRECT
+ (
+f£os
+,
+
+782 (
+FILE
+ *
+__¡»am
+,
+__cÚ¡
+
+åos_t
+ *
+__pos
+),
+f£os64
+);
+
+784 
+ #fg‘pos
+
+fg‘pos64
+
+
+ )
+
+785 
+ #f£os
+
+f£os64
+
+
+ )
+
+788
+__END_NAMESPACE_STD
+
+
+790 #ifdeà
+__USE_LARGEFILE64
+
+
+791 
+ `f£eko64
+ (
+FILE
+ *
+__¡»am
+,
+__off64_t
+
+__off
+, 
+__wh’û
+);
+
+792
+__off64_t
+
+ $á–lo64
+ (
+FILE
+ *
+__¡»am
+__wur
+;
+
+793 
+ `fg‘pos64
+ (
+FILE
+ *
+__»¡riù
+
+__¡»am
+,
+åos64_t
+ *__»¡riù
+__pos
+);
+
+794 
+ `f£os64
+ (
+FILE
+ *
+__¡»am
+,
+__cÚ¡
+
+åos64_t
+ *
+__pos
+);
+
+797
+__BEGIN_NAMESPACE_STD
+
+
+799 
+ $þ—»¼
+ (
+FILE
+ *
+__¡»am
+__THROW
+;
+
+801 
+ $ãof
+ (
+FILE
+ *
+__¡»am
+__THROW
+
+__wur
+;
+
+803 
+ $ã¼Ü
+ (
+FILE
+ *
+__¡»am
+__THROW
+
+__wur
+;
+
+804
+__END_NAMESPACE_STD
+
+
+806 #ifdeà
+__USE_MISC
+
+
+808 
+ $þ—»¼_uÆocked
+ (
+FILE
+ *
+__¡»am
+__THROW
+;
+
+809 
+ $ãof_uÆocked
+ (
+FILE
+ *
+__¡»am
+__THROW
+
+__wur
+;
+
+810 
+ $ã¼Ü_uÆocked
+ (
+FILE
+ *
+__¡»am
+__THROW
+
+__wur
+;
+
+814
+__BEGIN_NAMESPACE_STD
+
+
+819 
+ `³¼Ü
+ (
+__cÚ¡
+ *
+__s
+);
+
+820
+__END_NAMESPACE_STD
+
+
+826 
+ ~<b™s/sys_”¾i¡.h
+>
+
+829 #ifdef
+__USE_POSIX
+
+
+831 
+ $fž’o
+ (
+FILE
+ *
+__¡»am
+__THROW
+
+__wur
+;
+
+834 #ifdeà
+__USE_MISC
+
+
+836 
+ $fž’o_uÆocked
+ (
+FILE
+ *
+__¡»am
+__THROW
+
+__wur
+;
+
+840 #ià(
+defšed
+
+__USE_POSIX2
+ || defšed
+__USE_SVID
+ || defšed
+__USE_BSD
+ || \
+
+841
+defšed
+
+__USE_MISC
+)
+
+846
+FILE
+ *
+ $pÝ’
+ (
+__cÚ¡
+ *
+__commªd
+, __cÚ¡ *
+__modes
+__wur
+;
+
+852 
+ `pþo£
+ (
+FILE
+ *
+__¡»am
+);
+
+856 #ifdef
+__USE_POSIX
+
+
+858 *
+ $ù”mid
+ (*
+__s
+__THROW
+;
+
+862 #ifdeà
+__USE_XOPEN
+
+
+864 *
+ `cu£rid
+ (*
+__s
+);
+
+868 #ifdef
+__USE_GNU
+
+
+869 
+ob¡ack
+;
+
+872 
+ $ob¡ack_´štf
+ (
+ob¡ack
+ *
+__»¡riù
+
+__ob¡ack
+,
+
+873
+__cÚ¡
+ *
+__»¡riù
+
+__fÜm©
+, ...)
+
+874
+__THROW
+
+ `__©Œibu‹__
+ ((
+ `__fÜm©__
+ (
+__´štf__
+, 2, 3)));
+
+875 
+ $ob¡ack_v´štf
+ (
+ob¡ack
+ *
+__»¡riù
+
+__ob¡ack
+,
+
+876
+__cÚ¡
+ *
+__»¡riù
+
+__fÜm©
+,
+
+877
+_G_va_li¡
+
+__¬gs
+)
+
+878
+__THROW
+
+ `__©Œibu‹__
+ ((
+ `__fÜm©__
+ (
+__´štf__
+, 2, 0)));
+
+882 #ià
+defšed
+
+__USE_POSIX
+ || defšed
+__USE_MISC
+
+
+886 
+ $æockfže
+ (
+FILE
+ *
+__¡»am
+__THROW
+;
+
+890 
+ $árylockfže
+ (
+FILE
+ *
+__¡»am
+__THROW
+
+__wur
+;
+
+893 
+ $fuÆockfže
+ (
+FILE
+ *
+__¡»am
+__THROW
+;
+
+896 #ià
+defšed
+
+__USE_XOPEN
+ && !defšed
+__USE_XOPEN2K
+ && !defšed
+__USE_GNU
+
+
+900 
+ #__Ãed_g‘Ýt
+
+
+ )
+
+901 
+ ~<g‘Ýt.h
+>
+
+906 #ifdeà
+__USE_EXTERN_INLINES
+
+
+907 
+ ~<b™s/¡dio.h
+>
+
+909 #ià
+__USE_FORTIFY_LEVEL
+ > 0 &&
+defšed
+
+__ex‹º_®ways_šlše
+
+
+910 
+ ~<b™s/¡dio2.h
+>
+
+912 #ifdeà
+__LDBL_COMPAT
+
+
+913 
+ ~<b™s/¡dio-ldbl.h
+>
+
+916
+__END_DECLS
+
+
+ @/usr/include/string.h
+
+23 #iâdef
+_STRING_H
+
+
+24 
+ #_STRING_H
+ 1
+
+ )
+
+26 
+ ~<ã©u»s.h
+>
+
+28
+ g__BEGIN_DECLS
+
+
+31 
+ #__Ãed_size_t
+
+
+ )
+
+32 
+ #__Ãed_NULL
+
+
+ )
+
+33 
+ ~<¡ddef.h
+>
+
+36 #ià
+defšed
+
+__ýlu¥lus
+ &&
+__GNUC_PREREQ
+ (4, 4)
+
+37 
+ #__CORRECT_ISO_CPP_STRING_H_PROTO
+
+
+ )
+
+41
+__BEGIN_NAMESPACE_STD
+
+
+43 *
+ $memýy
+ (*
+__»¡riù
+
+__de¡
+,
+
+44
+__cÚ¡
+ *
+__»¡riù
+
+__¤c
+,
+size_t
+
+__n
+)
+
+45
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+48 *
+ $memmove
+ (*
+__de¡
+,
+__cÚ¡
+ *
+__¤c
+,
+size_t
+
+__n
+)
+
+49
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+50
+__END_NAMESPACE_STD
+
+
+55 #ià
+defšed
+
+__USE_SVID
+ || defšed
+__USE_BSD
+ || defšed
+__USE_XOPEN
+
+
+56 *
+ $memcýy
+ (*
+__»¡riù
+
+__de¡
+,
+__cÚ¡
+ *__»¡riù
+__¤c
+,
+
+57 
+__c
+,
+size_t
+
+__n
+)
+
+58
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+62
+__BEGIN_NAMESPACE_STD
+
+
+64 *
+ $mem£t
+ (*
+__s
+, 
+__c
+,
+size_t
+
+__n
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+67 
+ $memcmp
+ (
+__cÚ¡
+ *
+__s1
+, __cÚ¡ *
+__s2
+,
+size_t
+
+__n
+)
+
+68
+__THROW
+
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1, 2));
+
+71 #ifdeà
+__CORRECT_ISO_CPP_STRING_H_PROTO
+
+
+74 *
+ `memchr
+ (*
+__s
+, 
+__c
+,
+size_t
+
+__n
+)
+
+75
+__THROW
+
+ `__asm
+ ("memchr"è
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1));
+
+76
+__cÚ¡
+ *
+ `memchr
+ (__cÚ¡ *
+__s
+, 
+__c
+,
+size_t
+
+__n
+)
+
+77
+__THROW
+
+ `__asm
+ ("memchr"è
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1));
+
+79 #ifdeà
+__OPTIMIZE__
+
+
+80
+__ex‹º_®ways_šlše
+ *
+
+81
+ `memchr
+ (*
+__s
+, 
+__c
+,
+size_t
+
+__n
+__THROW
+
+
+83 
+ `__bužtš_memchr
+ (
+__s
+,
+__c
+,
+__n
+);
+
+86
+__ex‹º_®ways_šlše
+
+__cÚ¡
+ *
+
+87
+ `memchr
+ (
+__cÚ¡
+ *
+__s
+, 
+__c
+,
+size_t
+
+__n
+__THROW
+
+
+89 
+ `__bužtš_memchr
+ (
+__s
+,
+__c
+,
+__n
+);
+
+92
+ }
+}
+
+94 *
+ $memchr
+ (
+__cÚ¡
+ *
+__s
+, 
+__c
+,
+size_t
+
+__n
+)
+
+95
+__THROW
+
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1));
+
+97
+__END_NAMESPACE_STD
+
+
+99 #ifdeà
+__USE_GNU
+
+
+102 #ifdeà
+__CORRECT_ISO_CPP_STRING_H_PROTO
+
+
+103 "C++" *
+ $¿wmemchr
+ (*
+__s
+, 
+__c
+)
+
+104
+__THROW
+
+ `__asm
+ ("¿wmemchr"è
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1));
+
+105 "C++"
+__cÚ¡
+ *
+ $¿wmemchr
+ (
+__cÚ¡
+ *
+__s
+, 
+__c
+)
+
+106
+__THROW
+
+ `__asm
+ ("¿wmemchr"è
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1));
+
+108 *
+ $¿wmemchr
+ (
+__cÚ¡
+ *
+__s
+, 
+__c
+)
+
+109
+__THROW
+
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1));
+
+113 #ifdeà
+__CORRECT_ISO_CPP_STRING_H_PROTO
+
+
+114 "C++" *
+ $memrchr
+ (*
+__s
+, 
+__c
+,
+size_t
+
+__n
+)
+
+115
+__THROW
+
+ `__asm
+ ("memrchr"è
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1));
+
+116 "C++"
+__cÚ¡
+ *
+ $memrchr
+ (
+__cÚ¡
+ *
+__s
+, 
+__c
+,
+size_t
+
+__n
+)
+
+117
+__THROW
+
+ `__asm
+ ("memrchr"è
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1));
+
+119 *
+ $memrchr
+ (
+__cÚ¡
+ *
+__s
+, 
+__c
+,
+size_t
+
+__n
+)
+
+120
+__THROW
+
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1));
+
+125
+__BEGIN_NAMESPACE_STD
+
+
+127 *
+ $¡rýy
+ (*
+__»¡riù
+
+__de¡
+,
+__cÚ¡
+ *__»¡riù
+__¤c
+)
+
+128
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+130 *
+ $¡ºýy
+ (*
+__»¡riù
+
+__de¡
+,
+
+131
+__cÚ¡
+ *
+__»¡riù
+
+__¤c
+,
+size_t
+
+__n
+)
+
+132
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+135 *
+ $¡rÿt
+ (*
+__»¡riù
+
+__de¡
+,
+__cÚ¡
+ *__»¡riù
+__¤c
+)
+
+136
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+138 *
+ $¡ºÿt
+ (*
+__»¡riù
+
+__de¡
+,
+__cÚ¡
+ *__»¡riù
+__¤c
+,
+
+139
+size_t
+
+__n
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+142 
+ $¡rcmp
+ (
+__cÚ¡
+ *
+__s1
+, __cÚ¡ *
+__s2
+)
+
+143
+__THROW
+
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1, 2));
+
+145 
+ $¡ºcmp
+ (
+__cÚ¡
+ *
+__s1
+, __cÚ¡ *
+__s2
+,
+size_t
+
+__n
+)
+
+146
+__THROW
+
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1, 2));
+
+149 
+ $¡rcÞl
+ (
+__cÚ¡
+ *
+__s1
+, __cÚ¡ *
+__s2
+)
+
+150
+__THROW
+
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1, 2));
+
+152
+size_t
+
+ $¡rxäm
+ (*
+__»¡riù
+
+__de¡
+,
+
+153
+__cÚ¡
+ *
+__»¡riù
+
+__¤c
+,
+size_t
+
+__n
+)
+
+154
+__THROW
+
+ `__nÚnuÎ
+ ((2));
+
+155
+__END_NAMESPACE_STD
+
+
+157 #ifdeà
+__USE_XOPEN2K8
+
+
+161 
+ ~<xloÿË.h
+>
+
+164 
+ $¡rcÞl_l
+ (
+__cÚ¡
+ *
+__s1
+, __cÚ¡ *
+__s2
+,
+__loÿË_t
+
+__l
+)
+
+165
+__THROW
+
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1, 2, 3));
+
+167
+size_t
+
+ $¡rxäm_l
+ (*
+__de¡
+,
+__cÚ¡
+ *
+__¤c
+,
+size_t
+
+__n
+,
+
+168
+__loÿË_t
+
+__l
+__THROW
+
+ `__nÚnuÎ
+ ((2, 4));
+
+171 #ià
+defšed
+
+__USE_SVID
+ || defšed
+__USE_BSD
+ || defšed
+__USE_XOPEN_EXTENDED
+
+
+173 *
+ $¡rdup
+ (
+__cÚ¡
+ *
+__s
+)
+
+174
+__THROW
+
+__©Œibu‹_m®loc__
+
+ `__nÚnuÎ
+ ((1));
+
+180 #ià
+defšed
+
+__USE_XOPEN2K8
+
+
+181 *
+ $¡ºdup
+ (
+__cÚ¡
+ *
+__¡ršg
+,
+size_t
+
+__n
+)
+
+182
+__THROW
+
+__©Œibu‹_m®loc__
+
+ `__nÚnuÎ
+ ((1));
+
+185 #ià
+defšed
+
+__USE_GNU
+ && defšed
+__GNUC__
+
+
+187 
+ #¡rdu·
+(
+s
+) \
+
+188 (
+__ex‹nsiÚ__
+ \
+
+190
+__cÚ¡
+ *
+__Þd
+ = (
+s
+); \
+
+191
+size_t
+
+__Ën
+ =
+ `¡¾’
+ (
+__Þd
+) + 1; \
+
+192 *
+__Ãw
+ = (*è
+ `__bužtš_®loÿ
+ (
+__Ën
+); \
+
+193 (*è
+ `memýy
+ (
+__Ãw
+,
+__Þd
+,
+__Ën
+); \
+
+194
+ }
+}))
+
+ )
+
+197 
+ #¡ºdu·
+(
+s
+,
+n
+) \
+
+198 (
+__ex‹nsiÚ__
+ \
+
+200
+__cÚ¡
+ *
+__Þd
+ = (
+s
+); \
+
+201
+size_t
+
+__Ën
+ =
+ `¡ºËn
+ (
+__Þd
+, (
+n
+)); \
+
+202 *
+__Ãw
+ = (*è
+ `__bužtš_®loÿ
+ (
+__Ën
+ + 1); \
+
+203
+__Ãw
+[
+__Ën
+] = '\0'; \
+
+204 (*è
+ `memýy
+ (
+__Ãw
+,
+__Þd
+,
+__Ën
+); \
+
+205 }))
+
+ )
+
+208
+ g__BEGIN_NAMESPACE_STD
+
+
+210 #ifdeà
+__CORRECT_ISO_CPP_STRING_H_PROTO
+
+
+213 *
+¡rchr
+ (*
+__s
+, 
+__c
+)
+
+214
+__THROW
+
+__asm
+ ("¡rchr"è
+__©Œibu‹_pu»__
+
+__nÚnuÎ
+ ((1));
+
+215
+__cÚ¡
+ *
+¡rchr
+ (__cÚ¡ *
+__s
+, 
+__c
+)
+
+216
+__THROW
+
+__asm
+ ("¡rchr"è
+__©Œibu‹_pu»__
+
+__nÚnuÎ
+ ((1));
+
+218 #ifdeà
+__OPTIMIZE__
+
+
+219
+__ex‹º_®ways_šlše
+ *
+
+220
+¡rchr
+ (*
+__s
+, 
+__c
+ g__THROW
+
+
+222 
+__bužtš_¡rchr
+ (
+__s
+,
+__c
+);
+
+225
+__ex‹º_®ways_šlše
+
+__cÚ¡
+ *
+
+226
+¡rchr
+ (
+__cÚ¡
+ *
+__s
+, 
+__c
+ g__THROW
+
+
+228 
+__bužtš_¡rchr
+ (
+__s
+,
+__c
+);
+
+233 *
+ $¡rchr
+ (
+__cÚ¡
+ *
+__s
+, 
+__c
+)
+
+234
+__THROW
+
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1));
+
+237 #ifdeà
+__CORRECT_ISO_CPP_STRING_H_PROTO
+
+
+240 *
+ `¡¼chr
+ (*
+__s
+, 
+__c
+)
+
+241
+__THROW
+
+ `__asm
+ ("¡¼chr"è
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1));
+
+242
+__cÚ¡
+ *
+ `¡¼chr
+ (__cÚ¡ *
+__s
+, 
+__c
+)
+
+243
+__THROW
+
+ `__asm
+ ("¡¼chr"è
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1));
+
+245 #ifdeà
+__OPTIMIZE__
+
+
+246
+__ex‹º_®ways_šlše
+ *
+
+247
+ `¡¼chr
+ (*
+__s
+, 
+__c
+__THROW
+
+
+249 
+ `__bužtš_¡¼chr
+ (
+__s
+,
+__c
+);
+
+252
+__ex‹º_®ways_šlše
+
+__cÚ¡
+ *
+
+253
+ `¡¼chr
+ (
+__cÚ¡
+ *
+__s
+, 
+__c
+__THROW
+
+
+255 
+ `__bužtš_¡¼chr
+ (
+__s
+,
+__c
+);
+
+258
+ }
+}
+
+260 *
+ $¡¼chr
+ (
+__cÚ¡
+ *
+__s
+, 
+__c
+)
+
+261
+__THROW
+
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1));
+
+263
+__END_NAMESPACE_STD
+
+
+265 #ifdeà
+__USE_GNU
+
+
+268 #ifdeà
+__CORRECT_ISO_CPP_STRING_H_PROTO
+
+
+269 "C++" *
+ $¡rchºul
+ (*
+__s
+, 
+__c
+)
+
+270
+__THROW
+
+ `__asm
+ ("¡rchºul"è
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1));
+
+271 "C++"
+__cÚ¡
+ *
+ $¡rchºul
+ (
+__cÚ¡
+ *
+__s
+, 
+__c
+)
+
+272
+__THROW
+
+ `__asm
+ ("¡rchºul"è
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1));
+
+274 *
+ $¡rchºul
+ (
+__cÚ¡
+ *
+__s
+, 
+__c
+)
+
+275
+__THROW
+
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1));
+
+279
+__BEGIN_NAMESPACE_STD
+
+
+282
+size_t
+
+ $¡rc¥n
+ (
+__cÚ¡
+ *
+__s
+, __cÚ¡ *
+__»jeù
+)
+
+283
+__THROW
+
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1, 2));
+
+286
+size_t
+
+ $¡r¥n
+ (
+__cÚ¡
+ *
+__s
+, __cÚ¡ *
+__acû±
+)
+
+287
+__THROW
+
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1, 2));
+
+289 #ifdeà
+__CORRECT_ISO_CPP_STRING_H_PROTO
+
+
+292 *
+ `¡½brk
+ (*
+__s
+,
+__cÚ¡
+ *
+__acû±
+)
+
+293
+__THROW
+
+ `__asm
+ ("¡½brk"è
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1, 2));
+
+294
+__cÚ¡
+ *
+ `¡½brk
+ (__cÚ¡ *
+__s
+, __cÚ¡ *
+__acû±
+)
+
+295
+__THROW
+
+ `__asm
+ ("¡½brk"è
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1, 2));
+
+297 #ifdeà
+__OPTIMIZE__
+
+
+298
+__ex‹º_®ways_šlše
+ *
+
+299
+ `¡½brk
+ (*
+__s
+,
+__cÚ¡
+ *
+__acû±
+__THROW
+
+
+301 
+ `__bužtš_¡½brk
+ (
+__s
+,
+__acû±
+);
+
+304
+__ex‹º_®ways_šlše
+
+__cÚ¡
+ *
+
+305
+ `¡½brk
+ (
+__cÚ¡
+ *
+__s
+, __cÚ¡ *
+__acû±
+__THROW
+
+
+307 
+ `__bužtš_¡½brk
+ (
+__s
+,
+__acû±
+);
+
+310
+ }
+}
+
+312 *
+ $¡½brk
+ (
+__cÚ¡
+ *
+__s
+, __cÚ¡ *
+__acû±
+)
+
+313
+__THROW
+
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1, 2));
+
+316 #ifdeà
+__CORRECT_ISO_CPP_STRING_H_PROTO
+
+
+319 *
+ `¡r¡r
+ (*
+__hay¡ack
+,
+__cÚ¡
+ *
+__ÃedË
+)
+
+320
+__THROW
+
+ `__asm
+ ("¡r¡r"è
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1, 2));
+
+321
+__cÚ¡
+ *
+ `¡r¡r
+ (__cÚ¡ *
+__hay¡ack
+,
+
+322
+__cÚ¡
+ *
+__ÃedË
+)
+
+323
+__THROW
+
+ `__asm
+ ("¡r¡r"è
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1, 2));
+
+325 #ifdeà
+__OPTIMIZE__
+
+
+326
+__ex‹º_®ways_šlše
+ *
+
+327
+ `¡r¡r
+ (*
+__hay¡ack
+,
+__cÚ¡
+ *
+__ÃedË
+__THROW
+
+
+329 
+ `__bužtš_¡r¡r
+ (
+__hay¡ack
+,
+__ÃedË
+);
+
+332
+__ex‹º_®ways_šlše
+
+__cÚ¡
+ *
+
+333
+ `¡r¡r
+ (
+__cÚ¡
+ *
+__hay¡ack
+, __cÚ¡ *
+__ÃedË
+__THROW
+
+
+335 
+ `__bužtš_¡r¡r
+ (
+__hay¡ack
+,
+__ÃedË
+);
+
+338
+ }
+}
+
+340 *
+ $¡r¡r
+ (
+__cÚ¡
+ *
+__hay¡ack
+, __cÚ¡ *
+__ÃedË
+)
+
+341
+__THROW
+
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1, 2));
+
+346 *
+ $¡¹ok
+ (*
+__»¡riù
+
+__s
+,
+__cÚ¡
+ *__»¡riù
+__d–im
+)
+
+347
+__THROW
+
+ `__nÚnuÎ
+ ((2));
+
+348
+__END_NAMESPACE_STD
+
+
+352 *
+ $__¡¹ok_r
+ (*
+__»¡riù
+
+__s
+,
+
+353
+__cÚ¡
+ *
+__»¡riù
+
+__d–im
+,
+
+354 **
+__»¡riù
+
+__§ve_±r
+)
+
+355
+__THROW
+
+ `__nÚnuÎ
+ ((2, 3));
+
+356 #ià
+defšed
+
+__USE_POSIX
+ || defšed
+__USE_MISC
+
+
+357 *
+ $¡¹ok_r
+ (*
+__»¡riù
+
+__s
+,
+__cÚ¡
+ *__»¡riù
+__d–im
+,
+
+358 **
+__»¡riù
+
+__§ve_±r
+)
+
+359
+__THROW
+
+ `__nÚnuÎ
+ ((2, 3));
+
+362 #ifdeà
+__USE_GNU
+
+
+364 #ifdeà
+__CORRECT_ISO_CPP_STRING_H_PROTO
+
+
+365 "C++" *
+ $¡rÿ£¡r
+ (*
+__hay¡ack
+,
+__cÚ¡
+ *
+__ÃedË
+)
+
+366
+__THROW
+
+ `__asm
+ ("¡rÿ£¡r"è
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1, 2));
+
+367 "C++"
+__cÚ¡
+ *
+ $¡rÿ£¡r
+ (
+__cÚ¡
+ *
+__hay¡ack
+,
+
+368
+__cÚ¡
+ *
+__ÃedË
+)
+
+369
+__THROW
+
+ `__asm
+ ("¡rÿ£¡r"è
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1, 2));
+
+371 *
+ $¡rÿ£¡r
+ (
+__cÚ¡
+ *
+__hay¡ack
+, __cÚ¡ *
+__ÃedË
+)
+
+372
+__THROW
+
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1, 2));
+
+376 #ifdeà
+__USE_GNU
+
+
+380 *
+ $memmem
+ (
+__cÚ¡
+ *
+__hay¡ack
+,
+size_t
+
+__hay¡ackËn
+,
+
+381
+__cÚ¡
+ *
+__ÃedË
+,
+size_t
+
+__ÃedËËn
+)
+
+382
+__THROW
+
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1, 3));
+
+386 *
+ $__mempýy
+ (*
+__»¡riù
+
+__de¡
+,
+
+387
+__cÚ¡
+ *
+__»¡riù
+
+__¤c
+,
+size_t
+
+__n
+)
+
+388
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+389 *
+ $mempýy
+ (*
+__»¡riù
+
+__de¡
+,
+
+390
+__cÚ¡
+ *
+__»¡riù
+
+__¤c
+,
+size_t
+
+__n
+)
+
+391
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+395
+__BEGIN_NAMESPACE_STD
+
+
+397
+size_t
+
+ $¡¾’
+ (
+__cÚ¡
+ *
+__s
+)
+
+398
+__THROW
+
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1));
+
+399
+__END_NAMESPACE_STD
+
+
+401 #ifdef
+__USE_XOPEN2K8
+
+
+404
+size_t
+
+ $¡ºËn
+ (
+__cÚ¡
+ *
+__¡ršg
+,
+size_t
+
+__maxËn
+)
+
+405
+__THROW
+
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1));
+
+409
+__BEGIN_NAMESPACE_STD
+
+
+411 *
+ $¡»¼Ü
+ (
+__Ӽum
+__THROW
+;
+
+412
+__END_NAMESPACE_STD
+
+
+413 #ià
+defšed
+
+__USE_XOPEN2K
+ || defšed
+__USE_MISC
+
+
+421 #ià
+defšed
+
+__USE_XOPEN2K
+ && !defšed
+__USE_GNU
+
+
+424 #ifdeà
+__REDIRECT_NTH
+
+
+425 
+ `__REDIRECT_NTH
+ (
+¡»¼Ü_r
+,
+
+426 (
+__Ӽum
+, *
+__buf
+,
+size_t
+
+__buæ’
+),
+
+427
+__xpg_¡»¼Ü_r
+ `__nÚnuÎ
+ ((2));
+
+429 
+ $__xpg_¡»¼Ü_r
+ (
+__Ӽum
+, *
+__buf
+,
+size_t
+
+__buæ’
+)
+
+430
+__THROW
+
+ `__nÚnuÎ
+ ((2));
+
+431 
+ #¡»¼Ü_r
+
+__xpg_¡»¼Ü_r
+
+
+ )
+
+436 *
+ $¡»¼Ü_r
+ (
+__Ӽum
+, *
+__buf
+,
+size_t
+
+__buæ’
+)
+
+437
+__THROW
+
+ `__nÚnuÎ
+ ((2));
+
+441 #ifdeà
+__USE_XOPEN2K8
+
+
+443 *
+ $¡»¼Ü_l
+ (
+__Ӽum
+,
+__loÿË_t
+
+__l
+__THROW
+;
+
+449 
+ $__bz”o
+ (*
+__s
+,
+size_t
+
+__n
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+451 #ifdeà
+__USE_BSD
+
+
+453 
+ $bcÝy
+ (
+__cÚ¡
+ *
+__¤c
+, *
+__de¡
+,
+size_t
+
+__n
+)
+
+454
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+457 
+ $bz”o
+ (*
+__s
+,
+size_t
+
+__n
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+460 
+ $bcmp
+ (
+__cÚ¡
+ *
+__s1
+, __cÚ¡ *
+__s2
+,
+size_t
+
+__n
+)
+
+461
+__THROW
+
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1, 2));
+
+464 #ifdeà
+__CORRECT_ISO_CPP_STRING_H_PROTO
+
+
+467 *
+ `šdex
+ (*
+__s
+, 
+__c
+)
+
+468
+__THROW
+
+ `__asm
+ ("šdex"è
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1));
+
+469
+__cÚ¡
+ *
+ `šdex
+ (__cÚ¡ *
+__s
+, 
+__c
+)
+
+470
+__THROW
+
+ `__asm
+ ("šdex"è
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1));
+
+472 #ià
+defšed
+
+__OPTIMIZE__
+ && !defšed
+__CORRECT_ISO_CPP_STRINGS_H_PROTO
+
+
+473
+__ex‹º_®ways_šlše
+ *
+
+474
+ `šdex
+ (*
+__s
+, 
+__c
+__THROW
+
+
+476 
+ `__bužtš_šdex
+ (
+__s
+,
+__c
+);
+
+479
+__ex‹º_®ways_šlše
+
+__cÚ¡
+ *
+
+480
+ `šdex
+ (
+__cÚ¡
+ *
+__s
+, 
+__c
+__THROW
+
+
+482 
+ `__bužtš_šdex
+ (
+__s
+,
+__c
+);
+
+485
+ }
+}
+
+487 *
+ $šdex
+ (
+__cÚ¡
+ *
+__s
+, 
+__c
+)
+
+488
+__THROW
+
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1));
+
+492 #ifdeà
+__CORRECT_ISO_CPP_STRING_H_PROTO
+
+
+495 *
+ `ršdex
+ (*
+__s
+, 
+__c
+)
+
+496
+__THROW
+
+ `__asm
+ ("ršdex"è
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1));
+
+497
+__cÚ¡
+ *
+ `ršdex
+ (__cÚ¡ *
+__s
+, 
+__c
+)
+
+498
+__THROW
+
+ `__asm
+ ("ršdex"è
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1));
+
+500 #ià
+defšed
+
+__OPTIMIZE__
+ && !defšed
+__CORRECT_ISO_CPP_STRINGS_H_PROTO
+
+
+501
+__ex‹º_®ways_šlše
+ *
+
+502
+ `ršdex
+ (*
+__s
+, 
+__c
+__THROW
+
+
+504 
+ `__bužtš_ršdex
+ (
+__s
+,
+__c
+);
+
+507
+__ex‹º_®ways_šlše
+
+__cÚ¡
+ *
+
+508
+ `ršdex
+ (
+__cÚ¡
+ *
+__s
+, 
+__c
+__THROW
+
+
+510 
+ `__bužtš_ršdex
+ (
+__s
+,
+__c
+);
+
+513
+ }
+}
+
+515 *
+ $ršdex
+ (
+__cÚ¡
+ *
+__s
+, 
+__c
+)
+
+516
+__THROW
+
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1));
+
+521 
+ $ffs
+ (
+__i
+__THROW
+
+ `__©Œibu‹__
+ ((
+__cÚ¡__
+));
+
+525 #ifdef
+__USE_GNU
+
+
+526 
+ $ff¦
+ (
+__l
+__THROW
+
+ `__©Œibu‹__
+ ((
+__cÚ¡__
+));
+
+527 #ifdeà
+__GNUC__
+
+
+528
+__ex‹nsiÚ__
+ 
+ $ff¦l
+ (
+__Î
+)
+
+529
+__THROW
+
+ `__©Œibu‹__
+ ((
+__cÚ¡__
+));
+
+534 
+ $¡rÿ£cmp
+ (
+__cÚ¡
+ *
+__s1
+, __cÚ¡ *
+__s2
+)
+
+535
+__THROW
+
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1, 2));
+
+538 
+ $¡ºÿ£cmp
+ (
+__cÚ¡
+ *
+__s1
+, __cÚ¡ *
+__s2
+,
+size_t
+
+__n
+)
+
+539
+__THROW
+
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1, 2));
+
+542 #ifdef
+__USE_GNU
+
+
+545 
+ $¡rÿ£cmp_l
+ (
+__cÚ¡
+ *
+__s1
+, __cÚ¡ *
+__s2
+,
+
+546
+__loÿË_t
+
+__loc
+)
+
+547
+__THROW
+
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1, 2, 3));
+
+549 
+ $¡ºÿ£cmp_l
+ (
+__cÚ¡
+ *
+__s1
+, __cÚ¡ *
+__s2
+,
+
+550
+size_t
+
+__n
+,
+__loÿË_t
+
+__loc
+)
+
+551
+__THROW
+
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1, 2, 4));
+
+554 #ifdef
+__USE_BSD
+
+
+557 *
+ $¡r£p
+ (**
+__»¡riù
+
+__¡ršgp
+,
+
+558
+__cÚ¡
+ *
+__»¡riù
+
+__d–im
+)
+
+559
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+562 #ifdef
+__USE_XOPEN2K8
+
+
+564 *
+ $¡rsigÇl
+ (
+__sig
+__THROW
+;
+
+567 *
+ $__¡pýy
+ (*
+__»¡riù
+
+__de¡
+,
+__cÚ¡
+ *__»¡riù
+__¤c
+)
+
+568
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+569 *
+ $¡pýy
+ (*
+__»¡riù
+
+__de¡
+,
+__cÚ¡
+ *__»¡riù
+__¤c
+)
+
+570
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+574 *
+ $__¡²ýy
+ (*
+__»¡riù
+
+__de¡
+,
+
+575
+__cÚ¡
+ *
+__»¡riù
+
+__¤c
+,
+size_t
+
+__n
+)
+
+576
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+577 *
+ $¡²ýy
+ (*
+__»¡riù
+
+__de¡
+,
+
+578
+__cÚ¡
+ *
+__»¡riù
+
+__¤c
+,
+size_t
+
+__n
+)
+
+579
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+582 #ifdef
+__USE_GNU
+
+
+584 
+ $¡rv”scmp
+ (
+__cÚ¡
+ *
+__s1
+, __cÚ¡ *
+__s2
+)
+
+585
+__THROW
+
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1, 2));
+
+588 *
+ $¡räy
+ (*
+__¡ršg
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+591 *
+ $memäob
+ (*
+__s
+,
+size_t
+
+__n
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+593 #iâdeà
+ba£Çme
+
+
+598 #ifdeà
+__CORRECT_ISO_CPP_STRING_H_PROTO
+
+
+599 "C++" *
+ $ba£Çme
+ (*
+__fž’ame
+)
+
+600
+__THROW
+
+ `__asm
+ ("ba£Çme"è
+ `__nÚnuÎ
+ ((1));
+
+601 "C++"
+__cÚ¡
+ *
+ $ba£Çme
+ (
+__cÚ¡
+ *
+__fž’ame
+)
+
+602
+__THROW
+
+ `__asm
+ ("ba£Çme"è
+ `__nÚnuÎ
+ ((1));
+
+604 *
+ $ba£Çme
+ (
+__cÚ¡
+ *
+__fž’ame
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+610 #ià
+defšed
+
+__GNUC__
+ && __GNUC__ >= 2
+
+611 #ià
+defšed
+
+__OPTIMIZE__
+ && !defšed
+__OPTIMIZE_SIZE__
+ \
+
+612 && !
+defšed
+
+__NO_INLINE__
+ && !defšed
+__ýlu¥lus
+
+
+632 
+ ~<b™s/¡ršg.h
+>
+
+635 
+ ~<b™s/¡ršg2.h
+>
+
+638 #ià
+__USE_FORTIFY_LEVEL
+ > 0 &&
+defšed
+
+__ex‹º_®ways_šlše
+
+
+640 
+ ~<b™s/¡ršg3.h
+>
+
+644
+__END_DECLS
+
+
+ @/usr/include/bits/huge_val.h
+
+22 #iâdeà
+_MATH_H
+
+
+28 #ià
+__GNUC_PREREQ
+(3,3)
+
+29 
+ #HUGE_VAL
+ (
+ `__bužtš_huge_v®
+())
+
+ )
+
+30 #–ià
+__GNUC_PREREQ
+(2,96)
+
+31 
+ #HUGE_VAL
+ (
+__ex‹nsiÚ__
+ 0x1.0
+p2047
+)
+
+ )
+
+32 #–ià
+defšed
+
+__GNUC__
+
+
+34 
+ #HUGE_VAL
+ \
+
+35 (
+__ex‹nsiÚ__
+ \
+
+36 ((uniÚ { 
+__l
+
+ `__©Œibu‹__
+((
+ `__mode__
+(
+__DI__
+))); 
+__d
+; }) \
+
+37 {
+__l
+: 0x7ff0000000000000ULL }).
+__d
+)
+
+ )
+
+41 
+ ~<’dŸn.h
+>
+
+43 uniÚ { 
+ m__c
+[8]; 
+ m__d
+; }
+ t__huge_v®_t
+;
+
+45 #ià
+__BYTE_ORDER
+ =ð
+__BIG_ENDIAN
+
+
+46 
+ #__HUGE_VAL_by‹s
+ { 0x7f, 0xf0, 0, 0, 0, 0, 0, 0 }
+
+ )
+
+48 #ià
+__BYTE_ORDER
+ =ð
+__LITTLE_ENDIAN
+
+
+49 
+ #__HUGE_VAL_by‹s
+ { 0, 0, 0, 0, 0, 0, 0xf0, 0x7à}
+
+ )
+
+52 
+__huge_v®_t
+
+ g__huge_v®
+ = {
+__HUGE_VAL_by‹s
+ };
+
+53 
+ #HUGE_VAL
+ (
+__huge_v®
+.
+__d
+)
+
+ )
+
+ @/usr/include/bits/huge_valf.h
+
+22 #iâdeà
+_MATH_H
+
+
+28 #ià
+__GNUC_PREREQ
+(3,3)
+
+29 
+ #HUGE_VALF
+ (
+ `__bužtš_huge_v®f
+())
+
+ )
+
+30 #–ià
+__GNUC_PREREQ
+(2,96)
+
+31 
+ #HUGE_VALF
+ (
+__ex‹nsiÚ__
+ 0x1.0
+p255f
+)
+
+ )
+
+32 #–ià
+defšed
+
+__GNUC__
+
+
+34 
+ #HUGE_VALF
+ \
+
+35 (
+__ex‹nsiÚ__
+ \
+
+36 ((uniÚ { 
+__l
+
+ `__©Œibu‹__
+((
+ `__mode__
+(
+__SI__
+))); 
+__d
+; }) \
+
+37 {
+__l
+: 0x7f800000UL }).
+__d
+)
+
+ )
+
+41 uniÚ { 
+ m__c
+[4]; 
+ m__f
+; }
+ t__huge_v®f_t
+;
+
+43 #ià
+__BYTE_ORDER
+ =ð
+__BIG_ENDIAN
+
+
+44 
+ #__HUGE_VALF_by‹s
+ { 0x7f, 0x80, 0, 0 }
+
+ )
+
+46 #ià
+__BYTE_ORDER
+ =ð
+__LITTLE_ENDIAN
+
+
+47 
+ #__HUGE_VALF_by‹s
+ { 0, 0, 0x80, 0x7à}
+
+ )
+
+50 
+__huge_v®f_t
+
+ g__huge_v®f
+ = {
+__HUGE_VALF_by‹s
+ };
+
+51 
+ #HUGE_VALF
+ (
+__huge_v®f
+.
+__f
+)
+
+ )
+
+ @/usr/include/bits/huge_vall.h
+
+21 #iâdeà
+_MATH_H
+
+
+25 #ià
+__GNUC_PREREQ
+(3,3)
+
+26 
+ #HUGE_VALL
+ (
+ `__bužtš_huge_v®l
+())
+
+ )
+
+28 
+ #HUGE_VALL
+ ((è
+HUGE_VAL
+)
+
+ )
+
+ @/usr/include/bits/inf.h
+
+20 #iâdeà
+_MATH_H
+
+
+26 #ià
+__GNUC_PREREQ
+(3,3)
+
+27 
+ #INFINITY
+ (
+ `__bužtš_šff
+())
+
+ )
+
+29 
+ #INFINITY
+
+HUGE_VALF
+
+
+ )
+
+ @/usr/include/bits/mathcalls.h
+
+46 #iâdeà
+_MATH_H
+
+
+53
+_MdoubË_BEGIN_NAMESPACE
+
+
+55
+__MATHCALL
+ (
+acos
+,, (
+_MdoubË_
+
+__x
+));
+
+57
+__MATHCALL
+ (
+asš
+,, (
+_MdoubË_
+
+__x
+));
+
+59
+__MATHCALL
+ (
+©ª
+,, (
+_MdoubË_
+
+__x
+));
+
+61
+__MATHCALL
+ (
+©ª2
+,, (
+_MdoubË_
+
+__y
+, _MdoubË_
+__x
+));
+
+64
+__MATHCALL
+ (
+cos
+,, (
+_MdoubË_
+
+__x
+));
+
+66
+__MATHCALL
+ (
+sš
+,, (
+_MdoubË_
+
+__x
+));
+
+68
+__MATHCALL
+ (
+n
+,, (
+_MdoubË_
+
+__x
+));
+
+73
+__MATHCALL
+ (
+cosh
+,, (
+_MdoubË_
+
+__x
+));
+
+75
+__MATHCALL
+ (
+sšh
+,, (
+_MdoubË_
+
+__x
+));
+
+77
+__MATHCALL
+ (
+nh
+,, (
+_MdoubË_
+
+__x
+));
+
+78
+ g_MdoubË_END_NAMESPACE
+
+
+80 #ifdeà
+__USE_GNU
+
+
+82
+__MATHDECL
+ (,
+sšcos
+,,
+
+83 (
+_MdoubË_
+
+__x
+, _MdoubË_ *
+__sšx
+, _MdoubË_ *
+__cosx
+));
+
+86 #ià
+defšed
+
+__USE_MISC
+ || defšed
+__USE_XOPEN_EXTENDED
+ || defšed
+__USE_ISOC99
+
+
+87
+__BEGIN_NAMESPACE_C99
+
+
+89
+__MATHCALL
+ (
+acosh
+,, (
+_MdoubË_
+
+__x
+));
+
+91
+__MATHCALL
+ (
+asšh
+,, (
+_MdoubË_
+
+__x
+));
+
+93
+__MATHCALL
+ (
+©ªh
+,, (
+_MdoubË_
+
+__x
+));
+
+94
+ g__END_NAMESPACE_C99
+
+
+99
+_MdoubË_BEGIN_NAMESPACE
+
+
+101
+__MATHCALL
+ (
+exp
+,, (
+_MdoubË_
+
+__x
+));
+
+104
+__MATHCALL
+ (
+äexp
+,, (
+_MdoubË_
+
+__x
+, *
+__expÚ’t
+));
+
+107
+__MATHCALL
+ (
+ldexp
+,, (
+_MdoubË_
+
+__x
+, 
+__expÚ’t
+));
+
+110
+__MATHCALL
+ (
+log
+,, (
+_MdoubË_
+
+__x
+));
+
+113
+__MATHCALL
+ (
+log10
+,, (
+_MdoubË_
+
+__x
+));
+
+116
+__MATHCALL
+ (
+modf
+,, (
+_MdoubË_
+
+__x
+, _MdoubË_ *
+__Œ
+));
+
+117
+ g_MdoubË_END_NAMESPACE
+
+
+119 #ifdeà
+__USE_GNU
+
+
+121
+__MATHCALL
+ (
+exp10
+,, (
+_MdoubË_
+
+__x
+));
+
+123
+__MATHCALL
+ (
+pow10
+,, (
+_MdoubË_
+
+__x
+));
+
+126 #ià
+defšed
+
+__USE_MISC
+ || defšed
+__USE_XOPEN_EXTENDED
+ || defšed
+__USE_ISOC99
+
+
+127
+__BEGIN_NAMESPACE_C99
+
+
+129
+__MATHCALL
+ (
+expm1
+,, (
+_MdoubË_
+
+__x
+));
+
+132
+__MATHCALL
+ (
+log1p
+,, (
+_MdoubË_
+
+__x
+));
+
+135
+__MATHCALL
+ (
+logb
+,, (
+_MdoubË_
+
+__x
+));
+
+136
+ g__END_NAMESPACE_C99
+
+
+139 #ifdeà
+__USE_ISOC99
+
+
+140
+__BEGIN_NAMESPACE_C99
+
+
+142
+__MATHCALL
+ (
+exp2
+,, (
+_MdoubË_
+
+__x
+));
+
+145
+__MATHCALL
+ (
+log2
+,, (
+_MdoubË_
+
+__x
+));
+
+146
+ g__END_NAMESPACE_C99
+
+
+152
+_MdoubË_BEGIN_NAMESPACE
+
+
+154
+__MATHCALL
+ (
+pow
+,, (
+_MdoubË_
+
+__x
+, _MdoubË_
+__y
+));
+
+157
+__MATHCALL
+ (
+sq¹
+,, (
+_MdoubË_
+
+__x
+));
+
+158
+ g_MdoubË_END_NAMESPACE
+
+
+160 #ià
+defšed
+
+__USE_MISC
+ || defšed
+__USE_XOPEN
+ || defšed
+__USE_ISOC99
+
+
+161
+__BEGIN_NAMESPACE_C99
+
+
+163
+__MATHCALL
+ (
+hypÙ
+,, (
+_MdoubË_
+
+__x
+, _MdoubË_
+__y
+));
+
+164
+ g__END_NAMESPACE_C99
+
+
+167 #ià
+defšed
+
+__USE_MISC
+ || defšed
+__USE_XOPEN_EXTENDED
+ || defšed
+__USE_ISOC99
+
+
+168
+__BEGIN_NAMESPACE_C99
+
+
+170
+__MATHCALL
+ (
+cb¹
+,, (
+_MdoubË_
+
+__x
+));
+
+171
+ g__END_NAMESPACE_C99
+
+
+177
+_MdoubË_BEGIN_NAMESPACE
+
+
+179
+__MATHCALLX
+ (
+ûž
+,, (
+_MdoubË_
+
+__x
+), (
+__cÚ¡__
+));
+
+182
+__MATHCALLX
+ (
+çbs
+,, (
+_MdoubË_
+
+__x
+), (
+__cÚ¡__
+));
+
+185
+__MATHCALLX
+ (
+æoÜ
+,, (
+_MdoubË_
+
+__x
+), (
+__cÚ¡__
+));
+
+188
+__MATHCALL
+ (
+fmod
+,, (
+_MdoubË_
+
+__x
+, _MdoubË_
+__y
+));
+
+193
+__MATHDECL_1
+ (,
+__isšf
+,, (
+_MdoubË_
+
+__v®ue
+)è
+__©Œibu‹__
+ ((
+__cÚ¡__
+));
+
+196
+__MATHDECL_1
+ (,
+__fš™e
+,, (
+_MdoubË_
+
+__v®ue
+)è
+__©Œibu‹__
+ ((
+__cÚ¡__
+));
+
+197
+ g_MdoubË_END_NAMESPACE
+
+
+199 #ifdeà
+__USE_MISC
+
+
+202
+__MATHDECL_1
+ (,
+isšf
+,, (
+_MdoubË_
+
+__v®ue
+)è
+__©Œibu‹__
+ ((
+__cÚ¡__
+));
+
+205
+__MATHDECL_1
+ (,
+fš™e
+,, (
+_MdoubË_
+
+__v®ue
+)è
+__©Œibu‹__
+ ((
+__cÚ¡__
+));
+
+208
+__MATHCALL
+ (
+d»m
+,, (
+_MdoubË_
+
+__x
+, _MdoubË_
+__y
+));
+
+212
+__MATHCALL
+ (
+signifiÿnd
+,, (
+_MdoubË_
+
+__x
+));
+
+215 #ià
+defšed
+
+__USE_MISC
+ || defšed
+__USE_ISOC99
+
+
+216
+__BEGIN_NAMESPACE_C99
+
+
+218
+__MATHCALLX
+ (
+cÝysign
+,, (
+_MdoubË_
+
+__x
+, _MdoubË_
+__y
+), (
+__cÚ¡__
+));
+
+219
+ g__END_NAMESPACE_C99
+
+
+222 #ifdeà
+__USE_ISOC99
+
+
+223
+__BEGIN_NAMESPACE_C99
+
+
+225
+__MATHCALLX
+ (
+Çn
+,, (
+__cÚ¡
+ *
+__gb
+), (
+__cÚ¡__
+));
+
+226
+ g__END_NAMESPACE_C99
+
+
+231
+__MATHDECL_1
+ (,
+__i¢ª
+,, (
+_MdoubË_
+
+__v®ue
+)è
+__©Œibu‹__
+ ((
+__cÚ¡__
+));
+
+233 #ià
+defšed
+
+__USE_MISC
+ || defšed
+__USE_XOPEN
+
+
+235
+__MATHDECL_1
+ (,
+i¢ª
+,, (
+_MdoubË_
+
+__v®ue
+)è
+__©Œibu‹__
+ ((
+__cÚ¡__
+));
+
+238
+__MATHCALL
+ (
+j0
+,, (
+_MdoubË_
+));
+
+239
+__MATHCALL
+ (
+j1
+,, (
+_MdoubË_
+));
+
+240
+__MATHCALL
+ (
+jn
+,, (,
+_MdoubË_
+));
+
+241
+__MATHCALL
+ (
+y0
+,, (
+_MdoubË_
+));
+
+242
+__MATHCALL
+ (
+y1
+,, (
+_MdoubË_
+));
+
+243
+__MATHCALL
+ (
+yn
+,, (,
+_MdoubË_
+));
+
+247 #ià
+defšed
+
+__USE_MISC
+ || defšed
+__USE_XOPEN
+ || defšed
+__USE_ISOC99
+
+
+248
+__BEGIN_NAMESPACE_C99
+
+
+250
+__MATHCALL
+ (
+”f
+,, (
+_MdoubË_
+));
+
+251
+__MATHCALL
+ (
+”fc
+,, (
+_MdoubË_
+));
+
+252
+__MATHCALL
+ (
+lgamma
+,, (
+_MdoubË_
+));
+
+253
+ g__END_NAMESPACE_C99
+
+
+256 #ifdeà
+__USE_ISOC99
+
+
+257
+__BEGIN_NAMESPACE_C99
+
+
+259
+__MATHCALL
+ (
+tgamma
+,, (
+_MdoubË_
+));
+
+260
+ g__END_NAMESPACE_C99
+
+
+263 #ià
+defšed
+
+__USE_MISC
+ || defšed
+__USE_XOPEN
+
+
+265
+__MATHCALL
+ (
+gamma
+,, (
+_MdoubË_
+));
+
+268 #ifdeà
+__USE_MISC
+
+
+272
+__MATHCALL
+ (
+lgamma
+,
+_r
+, (
+_MdoubË_
+, *
+__signgamp
+));
+
+276 #ià
+defšed
+
+__USE_MISC
+ || defšed
+__USE_XOPEN_EXTENDED
+ || defšed
+__USE_ISOC99
+
+
+277
+__BEGIN_NAMESPACE_C99
+
+
+280
+__MATHCALL
+ (
+ršt
+,, (
+_MdoubË_
+
+__x
+));
+
+283
+__MATHCALLX
+ (
+Ãxá”
+,, (
+_MdoubË_
+
+__x
+, _MdoubË_
+__y
+), (
+__cÚ¡__
+));
+
+284 #ià
+defšed
+
+__USE_ISOC99
+ && !defšed
+__LDBL_COMPAT
+
+
+285
+__MATHCALLX
+ (
+Ãx‰ow¬d
+,, (
+_MdoubË_
+
+__x
+, 
+__y
+), (
+__cÚ¡__
+));
+
+289
+__MATHCALL
+ (
+»mašd”
+,, (
+_MdoubË_
+
+__x
+, _MdoubË_
+__y
+));
+
+291 #ià
+defšed
+
+__USE_MISC
+ || defšed
+__USE_ISOC99
+
+
+293
+__MATHCALL
+ (
+sÿlbn
+,, (
+_MdoubË_
+
+__x
+, 
+__n
+));
+
+297
+__MATHDECL
+ (,
+žogb
+,, (
+_MdoubË_
+
+__x
+));
+
+300 #ifdeà
+__USE_ISOC99
+
+
+302
+__MATHCALL
+ (
+sÿlbÊ
+,, (
+_MdoubË_
+
+__x
+, 
+__n
+));
+
+306
+__MATHCALL
+ (
+ìbyšt
+,, (
+_MdoubË_
+
+__x
+));
+
+310
+__MATHCALLX
+ (
+round
+,, (
+_MdoubË_
+
+__x
+), (
+__cÚ¡__
+));
+
+314
+__MATHCALLX
+ (
+Œunc
+,, (
+_MdoubË_
+
+__x
+), (
+__cÚ¡__
+));
+
+319
+__MATHCALL
+ (
+»mquo
+,, (
+_MdoubË_
+
+__x
+, _MdoubË_
+__y
+, *
+__quo
+));
+
+326
+__MATHDECL
+ (,
+Ìšt
+,, (
+_MdoubË_
+
+__x
+));
+
+327
+__MATHDECL
+ (,
+Îršt
+,, (
+_MdoubË_
+
+__x
+));
+
+331
+__MATHDECL
+ (,
+Ìound
+,, (
+_MdoubË_
+
+__x
+));
+
+332
+__MATHDECL
+ (,
+Îround
+,, (
+_MdoubË_
+
+__x
+));
+
+336
+__MATHCALL
+ (
+fdim
+,, (
+_MdoubË_
+
+__x
+, _MdoubË_
+__y
+));
+
+339
+__MATHCALL
+ (
+fmax
+,, (
+_MdoubË_
+
+__x
+, _MdoubË_
+__y
+));
+
+342
+__MATHCALL
+ (
+fmš
+,, (
+_MdoubË_
+
+__x
+, _MdoubË_
+__y
+));
+
+346
+__MATHDECL_1
+ (,
+__åþassify
+,, (
+_MdoubË_
+
+__v®ue
+))
+
+347
+__©Œibu‹__
+ ((
+__cÚ¡__
+));
+
+350
+__MATHDECL_1
+ (,
+__signb™
+,, (
+_MdoubË_
+
+__v®ue
+))
+
+351
+__©Œibu‹__
+ ((
+__cÚ¡__
+));
+
+355
+__MATHCALL
+ (
+fma
+,, (
+_MdoubË_
+
+__x
+, _MdoubË_
+__y
+, _MdoubË_
+__z
+));
+
+358 #ià
+defšed
+
+__USE_MISC
+ || defšed
+__USE_XOPEN_EXTENDED
+ || defšed
+__USE_ISOC99
+
+
+359
+ g__END_NAMESPACE_C99
+
+
+362 #ià
+defšed
+
+__USE_MISC
+ || defšed
+__USE_XOPEN_EXTENDED
+
+
+364
+__MATHCALL
+ (
+sÿlb
+,, (
+_MdoubË_
+
+__x
+, _MdoubË_
+__n
+));
+
+ @/usr/include/bits/mathdef.h
+
+19 #ià!
+defšed
+
+_MATH_H
+ && !defšed
+_COMPLEX_H
+
+
+23 #ià
+defšed
+
+__USE_ISOC99
+ && defšed
+_MATH_H
+ && !defšed
+_MATH_H_MATHDEF
+
+
+24 
+ #_MATH_H_MATHDEF
+ 1
+
+ )
+
+26 
+ ~<b™s/wÜdsize.h
+>
+
+28 #ià
+__WORDSIZE
+ =ð64 || (
+defšed
+
+__FLT_EVAL_METHOD__
+ && __FLT_EVAL_METHOD__ == 0)
+
+31 
+ tæßt_t
+;
+
+32 
+ tdoubË_t
+;
+
+38 
+ tæßt_t
+;
+
+40 
+ tdoubË_t
+;
+
+45 
+ #FP_ILOGB0
+ (-2147483647 - 1)
+
+ )
+
+46 
+ #FP_ILOGBNAN
+ (-2147483647 - 1)
+
+ )
+
+ @/usr/include/bits/mathinline.h
+
+21 #iâdeà
+_MATH_H
+
+
+25 
+ ~<b™s/wÜdsize.h
+>
+
+27 #iâdeà
+__ex‹º_šlše
+
+
+28 
+ #__MATH_INLINE
+
+__šlše
+
+
+ )
+
+30 
+ #__MATH_INLINE
+
+__ex‹º_šlše
+
+
+ )
+
+34 #ià
+defšed
+
+__USE_ISOC99
+ && defšed
+__GNUC__
+ && __GNUC__ >= 2
+
+37
+__MATH_INLINE
+ 
+
+38
+__NTH
+ (
+ $__signb™f
+ (
+__x
+))
+
+40 #ià
+__WORDSIZE
+ == 32
+
+41
+__ex‹nsiÚ__
+ uniÚ { 
+__f
+; 
+__i
+; }
+__u
+ = { __f:
+__x
+ };
+
+42 
+__u
+.
+__i
+ < 0;
+
+44 
+__m
+;
+
+45
+ `__asm
+ ("pmovmskb %1, %0" : "ô" (
+__m
+è: "x" (
+__x
+));
+
+46 
+__m
+ & 0x8;
+
+48
+ }
+}
+
+49
+__MATH_INLINE
+ 
+
+50
+__NTH
+ (
+ $__signb™
+ (
+__x
+))
+
+52 #ià
+__WORDSIZE
+ == 32
+
+53
+__ex‹nsiÚ__
+ uniÚ { 
+__d
+; 
+__i
+[2]; }
+__u
+ = { __d:
+__x
+ };
+
+54 
+__u
+.
+__i
+[1] < 0;
+
+56 
+__m
+;
+
+57
+ `__asm
+ ("pmovmskb %1, %0" : "ô" (
+__m
+è: "x" (
+__x
+));
+
+58 
+__m
+ & 0x80;
+
+60
+ }
+}
+
+61
+__MATH_INLINE
+ 
+
+62
+__NTH
+ (
+ $__signb™l
+ (
+__x
+))
+
+64
+__ex‹nsiÚ__
+ uniÚ { 
+__l
+; 
+__i
+[3]; }
+__u
+ = { __l:
+__x
+ };
+
+65  (
+__u
+.
+__i
+[2] & 0x8000) != 0;
+
+66
+ }
+}
+
+ @/usr/include/bits/nan.h
+
+20 #iâdeà
+_MATH_H
+
+
+27 #ià
+__GNUC_PREREQ
+(3,3)
+
+29 
+ #NAN
+ (
+ `__bužtš_Çnf
+ (""))
+
+ )
+
+31 #–ià
+defšed
+
+__GNUC__
+
+
+33 
+ #NAN
+ \
+
+34 (
+__ex‹nsiÚ__
+ \
+
+35 ((uniÚ { 
+__l
+
+ `__©Œibu‹__
+ ((
+ `__mode__
+ (
+__SI__
+))); 
+__d
+; }) \
+
+36 {
+__l
+: 0x7fc00000UL }).
+__d
+)
+
+ )
+
+40 
+ ~<’dŸn.h
+>
+
+42 #ià
+__BYTE_ORDER
+ =ð
+__BIG_ENDIAN
+
+
+43 
+ #__Çn_by‹s
+ { 0x7f, 0xc0, 0, 0 }
+
+ )
+
+45 #ià
+__BYTE_ORDER
+ =ð
+__LITTLE_ENDIAN
+
+
+46 
+ #__Çn_by‹s
+ { 0, 0, 0xc0, 0x7à}
+
+ )
+
+49 uniÚ { 
+ m__c
+[4]; 
+ m__d
+; }
+__Çn_uniÚ
+
+
+50
+ g__©Œibu‹_u£d__
+ = {
+__Çn_by‹s
+ };
+
+51 
+ #NAN
+ (
+__Çn_uniÚ
+.
+__d
+)
+
+ )
+
+ @/usr/include/bits/stdio-ldbl.h
+
+20 #iâdeà
+_STDIO_H
+
+
+24
+__BEGIN_NAMESPACE_STD
+
+
+25
+ $__LDBL_REDIR_DECL
+ (
+årštf
+)
+
+26
+ $__LDBL_REDIR_DECL
+ (
+´štf
+)
+
+27
+ $__LDBL_REDIR_DECL
+ (
+¥rštf
+)
+
+28
+ $__LDBL_REDIR_DECL
+ (
+vårštf
+)
+
+29
+ $__LDBL_REDIR_DECL
+ (
+v´štf
+)
+
+30
+ $__LDBL_REDIR_DECL
+ (
+v¥rštf
+)
+
+31 #ià
+defšed
+
+__USE_ISOC99
+ && !defšed
+__USE_GNU
+ \
+
+32 && !
+defšed
+
+__REDIRECT
+ \
+
+33 && (
+defšed
+
+__STRICT_ANSI__
+ || defšed
+__USE_XOPEN2K
+)
+
+34
+ $__LDBL_REDIR1_DECL
+ (
+fsÿnf
+,
+__Ædbl___isoc99_fsÿnf
+)
+
+35
+ $__LDBL_REDIR1_DECL
+ (
+sÿnf
+,
+__Ædbl___isoc99_sÿnf
+)
+
+36
+ $__LDBL_REDIR1_DECL
+ (
+ssÿnf
+,
+__Ædbl___isoc99_ssÿnf
+)
+
+38
+ $__LDBL_REDIR_DECL
+ (
+fsÿnf
+)
+
+39
+ $__LDBL_REDIR_DECL
+ (
+sÿnf
+)
+
+40
+ $__LDBL_REDIR_DECL
+ (
+ssÿnf
+)
+
+42
+__END_NAMESPACE_STD
+
+
+44 #ià
+defšed
+
+__USE_BSD
+ || defšed
+__USE_ISOC99
+ || defšed
+__USE_UNIX98
+
+
+45
+__BEGIN_NAMESPACE_C99
+
+
+46
+ $__LDBL_REDIR_DECL
+ (
+¢´štf
+)
+
+47
+ $__LDBL_REDIR_DECL
+ (
+v¢´štf
+)
+
+48
+__END_NAMESPACE_C99
+
+
+51 #ifdef
+__USE_ISOC99
+
+
+52
+__BEGIN_NAMESPACE_C99
+
+
+53 #ià!
+defšed
+
+__USE_GNU
+ && !defšed
+__REDIRECT
+ \
+
+54 && (
+defšed
+
+__STRICT_ANSI__
+ || defšed
+__USE_XOPEN2K
+)
+
+55
+ $__LDBL_REDIR1_DECL
+ (
+vfsÿnf
+,
+__Ædbl___isoc99_vfsÿnf
+)
+
+56
+ $__LDBL_REDIR1_DECL
+ (
+vsÿnf
+,
+__Ædbl___isoc99_vsÿnf
+)
+
+57
+ $__LDBL_REDIR1_DECL
+ (
+vssÿnf
+,
+__Ædbl___isoc99_vssÿnf
+)
+
+59
+ $__LDBL_REDIR_DECL
+ (
+vfsÿnf
+)
+
+60
+ $__LDBL_REDIR_DECL
+ (
+vssÿnf
+)
+
+61
+ $__LDBL_REDIR_DECL
+ (
+vsÿnf
+)
+
+63
+__END_NAMESPACE_C99
+
+
+66 #ifdeà
+__USE_GNU
+
+
+67
+ $__LDBL_REDIR_DECL
+ (
+vd´štf
+)
+
+68
+ $__LDBL_REDIR_DECL
+ (
+d´štf
+)
+
+69
+ $__LDBL_REDIR_DECL
+ (
+va¥rštf
+)
+
+70
+ $__LDBL_REDIR_DECL
+ (
+__a¥rštf
+)
+
+71
+ $__LDBL_REDIR_DECL
+ (
+a¥rštf
+)
+
+72
+ $__LDBL_REDIR_DECL
+ (
+ob¡ack_´štf
+)
+
+73
+ $__LDBL_REDIR_DECL
+ (
+ob¡ack_v´štf
+)
+
+76 #ià
+__USE_FORTIFY_LEVEL
+ > 0 &&
+defšed
+
+__ex‹º_®ways_šlše
+
+
+77
+ $__LDBL_REDIR_DECL
+ (
+__¥rštf_chk
+)
+
+78
+ $__LDBL_REDIR_DECL
+ (
+__v¥rštf_chk
+)
+
+79 #ià
+defšed
+
+__USE_BSD
+ || defšed
+__USE_ISOC99
+ || defšed
+__USE_UNIX98
+
+
+80
+ $__LDBL_REDIR_DECL
+ (
+__¢´štf_chk
+)
+
+81
+ $__LDBL_REDIR_DECL
+ (
+__v¢´štf_chk
+)
+
+83 #ià
+__USE_FORTIFY_LEVEL
+ > 1
+
+84
+ $__LDBL_REDIR_DECL
+ (
+__årštf_chk
+)
+
+85
+ $__LDBL_REDIR_DECL
+ (
+__´štf_chk
+)
+
+86
+ $__LDBL_REDIR_DECL
+ (
+__vårštf_chk
+)
+
+87
+ $__LDBL_REDIR_DECL
+ (
+__v´štf_chk
+)
+
+88 #ifdeà
+__USE_GNU
+
+
+89
+ $__LDBL_REDIR_DECL
+ (
+__a¥rštf_chk
+)
+
+90
+ $__LDBL_REDIR_DECL
+ (
+__va¥rštf_chk
+)
+
+91
+ $__LDBL_REDIR_DECL
+ (
+__d´štf_chk
+)
+
+92
+ $__LDBL_REDIR_DECL
+ (
+__vd´štf_chk
+)
+
+93
+ $__LDBL_REDIR_DECL
+ (
+__ob¡ack_´štf_chk
+)
+
+94
+ $__LDBL_REDIR_DECL
+ (
+__ob¡ack_v´štf_chk
+)
+
+ @/usr/include/bits/stdio.h
+
+20 #iâdeà
+_STDIO_H
+
+
+24 #iâdeà
+__ex‹º_šlše
+
+
+25 
+ #__STDIO_INLINE
+
+šlše
+
+
+ )
+
+27 
+ #__STDIO_INLINE
+
+__ex‹º_šlše
+
+
+ )
+
+31 #ifdeà
+__USE_EXTERN_INLINES
+
+
+34 #ià!(
+__USE_FORTIFY_LEVEL
+ > 0 &&
+defšed
+
+__ex‹º_®ways_šlše
+)
+
+36
+__STDIO_INLINE
+ 
+
+37
+ $v´štf
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__fmt
+,
+_G_va_li¡
+
+__¬g
+)
+
+39 
+ `vårštf
+ (
+¡dout
+,
+__fmt
+,
+__¬g
+);
+
+40
+ }
+}
+
+44
+__STDIO_INLINE
+ 
+
+45
+ $g‘ch¬
+ ()
+
+47 
+ `_IO_g‘c
+ (
+¡dš
+);
+
+48
+ }
+}
+
+51 #ifdeà
+__USE_MISC
+
+
+53
+__STDIO_INLINE
+ 
+
+54
+ $fg‘c_uÆocked
+ (
+FILE
+ *
+__å
+)
+
+56 
+ `_IO_g‘c_uÆocked
+ (
+__å
+);
+
+57
+ }
+}
+
+61 #ià
+defšed
+
+__USE_POSIX
+ || defšed
+__USE_MISC
+
+
+63
+__STDIO_INLINE
+ 
+
+64
+ $g‘c_uÆocked
+ (
+FILE
+ *
+__å
+)
+
+66 
+ `_IO_g‘c_uÆocked
+ (
+__å
+);
+
+67
+ }
+}
+
+70
+__STDIO_INLINE
+ 
+
+71
+ $g‘ch¬_uÆocked
+ ()
+
+73 
+ `_IO_g‘c_uÆocked
+ (
+¡dš
+);
+
+74
+ }
+}
+
+79
+__STDIO_INLINE
+ 
+
+80
+ $putch¬
+ (
+__c
+)
+
+82 
+ `_IO_putc
+ (
+__c
+,
+¡dout
+);
+
+83
+ }
+}
+
+86 #ifdeà
+__USE_MISC
+
+
+88
+__STDIO_INLINE
+ 
+
+89
+ $åutc_uÆocked
+ (
+__c
+,
+FILE
+ *
+__¡»am
+)
+
+91 
+ `_IO_putc_uÆocked
+ (
+__c
+,
+__¡»am
+);
+
+92
+ }
+}
+
+96 #ià
+defšed
+
+__USE_POSIX
+ || defšed
+__USE_MISC
+
+
+98
+__STDIO_INLINE
+ 
+
+99
+ $putc_uÆocked
+ (
+__c
+,
+FILE
+ *
+__¡»am
+)
+
+101 
+ `_IO_putc_uÆocked
+ (
+__c
+,
+__¡»am
+);
+
+102
+ }
+}
+
+105
+__STDIO_INLINE
+ 
+
+106
+ $putch¬_uÆocked
+ (
+__c
+)
+
+108 
+ `_IO_putc_uÆocked
+ (
+__c
+,
+¡dout
+);
+
+109
+ }
+}
+
+113 #ifdef
+__USE_GNU
+
+
+115
+__STDIO_INLINE
+
+_IO_ssize_t
+
+
+116
+ $g‘lše
+ (**
+__lš•Œ
+,
+size_t
+ *
+__n
+,
+FILE
+ *
+__¡»am
+)
+
+118 
+ `__g‘d–im
+ (
+__lš•Œ
+,
+__n
+, '\n',
+__¡»am
+);
+
+119
+ }
+}
+
+123 #ifdeà
+__USE_MISC
+
+
+125
+__STDIO_INLINE
+ 
+
+126
+__NTH
+ (
+ $ãof_uÆocked
+ (
+FILE
+ *
+__¡»am
+))
+
+128 
+ `_IO_ãof_uÆocked
+ (
+__¡»am
+);
+
+129
+ }
+}
+
+132
+__STDIO_INLINE
+ 
+
+133
+__NTH
+ (
+ $ã¼Ü_uÆocked
+ (
+FILE
+ *
+__¡»am
+))
+
+135 
+ `_IO_ã¼Ü_uÆocked
+ (
+__¡»am
+);
+
+136
+ }
+}
+
+142 #ià
+defšed
+
+__USE_MISC
+ && defšed
+__GNUC__
+ && defšed
+__OPTIMIZE__
+ \
+
+143 && !
+defšed
+
+ g__ýlu¥lus
+
+
+145 
+ #ä—d_uÆocked
+(
+±r
+,
+size
+,
+n
+,
+¡»am
+) \
+
+146 (
+ `__ex‹nsiÚ__
+ ((
+ `__bužtš_cÚ¡ªt_p
+ (
+size
+è&& __bužtš_cÚ¡ªt_°(
+n
+) \
+
+147 && (
+size_t
+è(
+size
+è* (size_tè(
+n
+) <= 8 \
+
+148 && (
+size_t
+è(
+size
+) != 0) \
+
+149 ? ({ *
+__±r
+ = (*è(
+±r
+); \
+
+150
+FILE
+ *
+__¡»am
+ = (
+¡»am
+); \
+
+151
+size_t
+
+__út
+; \
+
+152 
+__út
+ = (
+size_t
+è(
+size
+è* (size_tè(
+n
+); \
+
+153
+__út
+ > 0; --__cnt) \
+
+155 
+__c
+ =
+ `_IO_g‘c_uÆocked
+ (
+__¡»am
+); \
+
+156 ià(
+__c
+ =ð
+EOF
+) \
+
+158 *
+__±r
+++ =
+__c
+; \
+
+160 ((
+size_t
+è(
+size
+è* (size_tè(
+n
+è-
+__út
+) \
+
+161 / (
+size_t
+è(
+size
+); }) \
+
+162 : (((
+ `__bužtš_cÚ¡ªt_p
+ (
+size
+è&& (
+size_t
+) (size) == 0) \
+
+163 || (
+ `__bužtš_cÚ¡ªt_p
+ (
+n
+è&& (
+size_t
+) (n) == 0)) \
+
+165 ? ((è(
+±r
+), (è(
+¡»am
+), (è(
+size
+), \
+
+166 (è(
+n
+), (
+size_t
+) 0) \
+
+167 :
+ `ä—d_uÆocked
+ (
+±r
+,
+size
+,
+n
+,
+¡»am
+))))
+
+ )
+
+169 
+ #fwr™e_uÆocked
+(
+±r
+,
+size
+,
+n
+,
+¡»am
+) \
+
+170 (
+ `__ex‹nsiÚ__
+ ((
+ `__bužtš_cÚ¡ªt_p
+ (
+size
+è&& __bužtš_cÚ¡ªt_°(
+n
+) \
+
+171 && (
+size_t
+è(
+size
+è* (size_tè(
+n
+) <= 8 \
+
+172 && (
+size_t
+è(
+size
+) != 0) \
+
+173 ? ({ cÚ¡ *
+__±r
+ = (cÚ¡ *è(
+±r
+); \
+
+174
+FILE
+ *
+__¡»am
+ = (
+¡»am
+); \
+
+175
+size_t
+
+__út
+; \
+
+176 
+__út
+ = (
+size_t
+è(
+size
+è* (size_tè(
+n
+); \
+
+177
+__út
+ > 0; --__cnt) \
+
+178 ià(
+ `_IO_putc_uÆocked
+ (*
+__±r
+++,
+__¡»am
+è=ð
+EOF
+) \
+
+180 ((
+size_t
+è(
+size
+è* (size_tè(
+n
+è-
+__út
+) \
+
+181 / (
+size_t
+è(
+size
+); }) \
+
+182 : (((
+ `__bužtš_cÚ¡ªt_p
+ (
+size
+è&& (
+size_t
+) (size) == 0) \
+
+183 || (
+ `__bužtš_cÚ¡ªt_p
+ (
+n
+è&& (
+size_t
+) (n) == 0)) \
+
+185 ? ((è(
+±r
+), (è(
+¡»am
+), (è(
+size
+), \
+
+186 (è(
+n
+), (
+size_t
+) 0) \
+
+187 :
+ `fwr™e_uÆocked
+ (
+±r
+,
+size
+,
+n
+,
+¡»am
+))))
+
+ )
+
+191 #undeà
+__STDIO_INLINE
+
+
+ @/usr/include/bits/stdio2.h
+
+20 #iâdeà
+_STDIO_H
+
+
+24 
+ $__¥rštf_chk
+ (*
+__»¡riù
+
+__s
+, 
+__æag
+,
+size_t
+
+__¦’
+,
+
+25
+__cÚ¡
+ *
+__»¡riù
+
+__fÜm©
+, ...è
+__THROW
+;
+
+26 
+ $__v¥rštf_chk
+ (*
+__»¡riù
+
+__s
+, 
+__æag
+,
+size_t
+
+__¦’
+,
+
+27
+__cÚ¡
+ *
+__»¡riù
+
+__fÜm©
+,
+
+28
+_G_va_li¡
+
+__­
+__THROW
+;
+
+30 #ifdeà
+__va_¬g_·ck
+
+
+31
+__ex‹º_®ways_šlše
+ 
+
+32
+ `__NTH
+ (
+ $¥rštf
+ (*
+__»¡riù
+
+__s
+,
+__cÚ¡
+ *__»¡riù
+__fmt
+, ...))
+
+34 
+ `__bužtš___¥rštf_chk
+ (
+__s
+,
+__USE_FORTIFY_LEVEL
+ - 1,
+
+35
+ `__bos
+ (
+__s
+),
+__fmt
+,
+ `__va_¬g_·ck
+ ());
+
+36
+ }
+}
+
+37 #–ià!
+defšed
+
+__ýlu¥lus
+
+
+38 
+ #¥rštf
+(
+¡r
+, ...) \
+
+39
+ `__bužtš___¥rštf_chk
+ (
+¡r
+,
+__USE_FORTIFY_LEVEL
+ - 1,
+ `__bos
+ (str), \
+
+40
+__VA_ARGS__
+)
+
+ )
+
+43
+__ex‹º_®ways_šlše
+ 
+
+44
+__NTH
+ (
+ $v¥rštf
+ (*
+__»¡riù
+
+__s
+,
+__cÚ¡
+ *__»¡riù
+__fmt
+,
+
+45
+_G_va_li¡
+
+__­
+))
+
+47 
+ `__bužtš___v¥rštf_chk
+ (
+__s
+,
+__USE_FORTIFY_LEVEL
+ - 1,
+
+48
+ `__bos
+ (
+__s
+),
+__fmt
+,
+__­
+);
+
+49
+ }
+}
+
+51 #ià
+defšed
+
+__USE_BSD
+ || defšed
+__USE_ISOC99
+ || defšed
+__USE_UNIX98
+
+
+53 
+ $__¢´štf_chk
+ (*
+__»¡riù
+
+__s
+,
+size_t
+
+__n
+, 
+__æag
+,
+
+54
+size_t
+
+__¦’
+,
+__cÚ¡
+ *
+__»¡riù
+
+__fÜm©
+,
+
+55 ...è
+__THROW
+;
+
+56 
+ $__v¢´štf_chk
+ (*
+__»¡riù
+
+__s
+,
+size_t
+
+__n
+, 
+__æag
+,
+
+57
+size_t
+
+__¦’
+,
+__cÚ¡
+ *
+__»¡riù
+
+__fÜm©
+,
+
+58
+_G_va_li¡
+
+__­
+__THROW
+;
+
+60 #ifdeà
+__va_¬g_·ck
+
+
+61
+__ex‹º_®ways_šlše
+ 
+
+62
+ `__NTH
+ (
+ $¢´štf
+ (*
+__»¡riù
+
+__s
+,
+size_t
+
+__n
+,
+
+63
+__cÚ¡
+ *
+__»¡riù
+
+__fmt
+, ...))
+
+65 
+ `__bužtš___¢´štf_chk
+ (
+__s
+,
+__n
+,
+__USE_FORTIFY_LEVEL
+ - 1,
+
+66
+ `__bos
+ (
+__s
+),
+__fmt
+,
+ `__va_¬g_·ck
+ ());
+
+67
+ }
+}
+
+68 #–ià!
+defšed
+
+__ýlu¥lus
+
+
+69 
+ #¢´štf
+(
+¡r
+,
+Ën
+, ...) \
+
+70
+ `__bužtš___¢´štf_chk
+ (
+¡r
+,
+Ën
+,
+__USE_FORTIFY_LEVEL
+ - 1,
+ `__bos
+ (str), \
+
+71
+__VA_ARGS__
+)
+
+ )
+
+74
+__ex‹º_®ways_šlše
+ 
+
+75
+__NTH
+ (
+ $v¢´štf
+ (*
+__»¡riù
+
+__s
+,
+size_t
+
+__n
+,
+
+76
+__cÚ¡
+ *
+__»¡riù
+
+__fmt
+,
+_G_va_li¡
+
+__­
+))
+
+78 
+ `__bužtš___v¢´štf_chk
+ (
+__s
+,
+__n
+,
+__USE_FORTIFY_LEVEL
+ - 1,
+
+79
+ `__bos
+ (
+__s
+),
+__fmt
+,
+__­
+);
+
+80
+ }
+}
+
+84 #ià
+__USE_FORTIFY_LEVEL
+ > 1
+
+86 
+__årštf_chk
+ (
+FILE
+ *
+__»¡riù
+
+__¡»am
+, 
+__æag
+,
+
+87
+__cÚ¡
+ *
+__»¡riù
+
+__fÜm©
+, ...);
+
+88 
+__´štf_chk
+ (
+__æag
+,
+__cÚ¡
+ *
+__»¡riù
+
+__fÜm©
+, ...);
+
+89 
+__vårštf_chk
+ (
+FILE
+ *
+__»¡riù
+
+__¡»am
+, 
+__æag
+,
+
+90
+__cÚ¡
+ *
+__»¡riù
+
+__fÜm©
+,
+_G_va_li¡
+
+__­
+);
+
+91 
+__v´štf_chk
+ (
+__æag
+,
+__cÚ¡
+ *
+__»¡riù
+
+__fÜm©
+,
+
+92
+_G_va_li¡
+
+__­
+);
+
+94 #ifdeà
+__va_¬g_·ck
+
+
+95
+__ex‹º_®ways_šlše
+ 
+
+96
+ $årštf
+ (
+FILE
+ *
+__»¡riù
+
+__¡»am
+,
+__cÚ¡
+ *__»¡riù
+__fmt
+, ...)
+
+98 
+ `__årštf_chk
+ (
+__¡»am
+,
+__USE_FORTIFY_LEVEL
+ - 1,
+__fmt
+,
+
+99
+ `__va_¬g_·ck
+ ());
+
+100
+ }
+}
+
+102
+__ex‹º_®ways_šlše
+ 
+
+103
+ $´štf
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__fmt
+, ...)
+
+105 
+ `__´štf_chk
+ (
+__USE_FORTIFY_LEVEL
+ - 1,
+__fmt
+,
+ `__va_¬g_·ck
+ ());
+
+106
+ }
+}
+
+107 #–ià!
+defšed
+
+__ýlu¥lus
+
+
+108 
+ #´štf
+(...) \
+
+109
+ `__´štf_chk
+ (
+__USE_FORTIFY_LEVEL
+ - 1,
+__VA_ARGS__
+)
+
+ )
+
+110 
+ #årštf
+(
+¡»am
+, ...) \
+
+111
+ `__årštf_chk
+ (
+¡»am
+,
+__USE_FORTIFY_LEVEL
+ - 1,
+__VA_ARGS__
+)
+
+ )
+
+114
+__ex‹º_®ways_šlše
+ 
+
+115
+ $v´štf
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__fmt
+,
+_G_va_li¡
+
+__­
+)
+
+117 #ifdeà
+__USE_EXTERN_INLINES
+
+
+118 
+ `__vårštf_chk
+ (
+¡dout
+,
+__USE_FORTIFY_LEVEL
+ - 1,
+__fmt
+,
+__­
+);
+
+120 
+ `__v´štf_chk
+ (
+__USE_FORTIFY_LEVEL
+ - 1,
+__fmt
+,
+__­
+);
+
+122
+ }
+}
+
+124
+__ex‹º_®ways_šlše
+ 
+
+125
+ $vårštf
+ (
+FILE
+ *
+__»¡riù
+
+__¡»am
+,
+
+126
+__cÚ¡
+ *
+__»¡riù
+
+__fmt
+,
+_G_va_li¡
+
+__­
+)
+
+128 
+ `__vårštf_chk
+ (
+__¡»am
+,
+__USE_FORTIFY_LEVEL
+ - 1,
+__fmt
+,
+__­
+);
+
+129
+ }
+}
+
+131 #ifdeà
+__USE_GNU
+
+
+133 
+ $__a¥rštf_chk
+ (**
+__»¡riù
+
+__±r
+, 
+__æag
+,
+
+134
+__cÚ¡
+ *
+__»¡riù
+
+__fmt
+, ...)
+
+135
+__THROW
+
+ `__©Œibu‹__
+ ((
+ $__fÜm©__
+ (
+__´štf__
+, 3, 4))è
+__wur
+;
+
+136 
+ $__va¥rštf_chk
+ (**
+__»¡riù
+
+__±r
+, 
+__æag
+,
+
+137
+__cÚ¡
+ *
+__»¡riù
+
+__fmt
+,
+_G_va_li¡
+
+__¬g
+)
+
+138
+__THROW
+
+ `__©Œibu‹__
+ ((
+ $__fÜm©__
+ (
+__´štf__
+, 3, 0))è
+__wur
+;
+
+139 
+ $__d´štf_chk
+ (
+__fd
+, 
+__æag
+,
+__cÚ¡
+ *
+__»¡riù
+
+__fmt
+,
+
+140 ...è
+ `__©Œibu‹__
+ ((
+ `__fÜm©__
+ (
+__´štf__
+, 3, 4)));
+
+141 
+ $__vd´štf_chk
+ (
+__fd
+, 
+__æag
+,
+
+142
+__cÚ¡
+ *
+__»¡riù
+
+__fmt
+,
+_G_va_li¡
+
+__¬g
+)
+
+143
+ `__©Œibu‹__
+ ((
+ `__fÜm©__
+ (
+__´štf__
+, 3, 0)));
+
+144 
+ $__ob¡ack_´štf_chk
+ (
+ob¡ack
+ *
+__»¡riù
+
+__ob¡ack
+,
+
+145 
+__æag
+,
+__cÚ¡
+ *
+__»¡riù
+
+__fÜm©
+,
+
+147
+__THROW
+
+ `__©Œibu‹__
+ ((
+ `__fÜm©__
+ (
+__´štf__
+, 3, 4)));
+
+148 
+ $__ob¡ack_v´štf_chk
+ (
+ob¡ack
+ *
+__»¡riù
+
+__ob¡ack
+,
+
+149 
+__æag
+,
+
+150
+__cÚ¡
+ *
+__»¡riù
+
+__fÜm©
+,
+
+151
+_G_va_li¡
+
+__¬gs
+)
+
+152
+__THROW
+
+ `__©Œibu‹__
+ ((
+ `__fÜm©__
+ (
+__´štf__
+, 3, 0)));
+
+154 #ifdeà
+__va_¬g_·ck
+
+
+155
+__ex‹º_®ways_šlše
+ 
+
+156
+ `__NTH
+ (
+ $a¥rštf
+ (**
+__»¡riù
+
+__±r
+,
+__cÚ¡
+ *__»¡riù
+__fmt
+, ...))
+
+158 
+ `__a¥rštf_chk
+ (
+__±r
+,
+__USE_FORTIFY_LEVEL
+ - 1,
+__fmt
+,
+
+159
+ `__va_¬g_·ck
+ ());
+
+160
+ }
+}
+
+162
+__ex‹º_®ways_šlše
+ 
+
+163
+__NTH
+ (
+ $__a¥rštf
+ (**
+__»¡riù
+
+__±r
+,
+__cÚ¡
+ *__»¡riù
+__fmt
+,
+
+166 
+ `__a¥rštf_chk
+ (
+__±r
+,
+__USE_FORTIFY_LEVEL
+ - 1,
+__fmt
+,
+
+167
+ `__va_¬g_·ck
+ ());
+
+168
+ }
+}
+
+170
+__ex‹º_®ways_šlše
+ 
+
+171
+ $d´štf
+ (
+__fd
+,
+__cÚ¡
+ *
+__»¡riù
+
+__fmt
+, ...)
+
+173 
+ `__d´štf_chk
+ (
+__fd
+,
+__USE_FORTIFY_LEVEL
+ - 1,
+__fmt
+,
+
+174
+ `__va_¬g_·ck
+ ());
+
+175
+ }
+}
+
+177
+__ex‹º_®ways_šlše
+ 
+
+178
+__NTH
+ (
+ $ob¡ack_´štf
+ (
+ob¡ack
+ *
+__»¡riù
+
+__ob¡ack
+,
+
+179
+__cÚ¡
+ *
+__»¡riù
+
+__fmt
+, ...))
+
+181 
+ `__ob¡ack_´štf_chk
+ (
+__ob¡ack
+,
+__USE_FORTIFY_LEVEL
+ - 1,
+__fmt
+,
+
+182
+ `__va_¬g_·ck
+ ());
+
+183
+ }
+}
+
+184 #–ià!
+defšed
+
+__ýlu¥lus
+
+
+185 
+ #a¥rštf
+(
+±r
+, ...) \
+
+186
+ `__a¥rštf_chk
+ (
+±r
+,
+__USE_FORTIFY_LEVEL
+ - 1,
+__VA_ARGS__
+)
+
+ )
+
+187 
+ #__a¥rštf
+(
+±r
+, ...) \
+
+188
+ `__a¥rštf_chk
+ (
+±r
+,
+__USE_FORTIFY_LEVEL
+ - 1,
+__VA_ARGS__
+)
+
+ )
+
+189 
+ #d´štf
+(
+fd
+, ...) \
+
+190
+ `__d´štf_chk
+ (
+fd
+,
+__USE_FORTIFY_LEVEL
+ - 1,
+__VA_ARGS__
+)
+
+ )
+
+191 
+ #ob¡ack_´štf
+(
+ob¡ack
+, ...) \
+
+192
+ `__ob¡ack_´štf_chk
+ (
+ob¡ack
+,
+__USE_FORTIFY_LEVEL
+ - 1,
+__VA_ARGS__
+)
+
+ )
+
+195
+__ex‹º_®ways_šlše
+ 
+
+196
+__NTH
+ (
+ $va¥rštf
+ (**
+__»¡riù
+
+__±r
+,
+__cÚ¡
+ *__»¡riù
+__fmt
+,
+
+197
+_G_va_li¡
+
+__­
+))
+
+199 
+ `__va¥rštf_chk
+ (
+__±r
+,
+__USE_FORTIFY_LEVEL
+ - 1,
+__fmt
+,
+__­
+);
+
+200
+ }
+}
+
+202
+__ex‹º_®ways_šlše
+ 
+
+203
+ $vd´štf
+ (
+__fd
+,
+__cÚ¡
+ *
+__»¡riù
+
+__fmt
+,
+_G_va_li¡
+
+__­
+)
+
+205 
+ `__vd´štf_chk
+ (
+__fd
+,
+__USE_FORTIFY_LEVEL
+ - 1,
+__fmt
+,
+__­
+);
+
+206
+ }
+}
+
+208
+__ex‹º_®ways_šlše
+ 
+
+209
+__NTH
+ (
+ $ob¡ack_v´štf
+ (
+ob¡ack
+ *
+__»¡riù
+
+__ob¡ack
+,
+
+210
+__cÚ¡
+ *
+__»¡riù
+
+__fmt
+,
+_G_va_li¡
+
+__­
+))
+
+212 
+ `__ob¡ack_v´štf_chk
+ (
+__ob¡ack
+,
+__USE_FORTIFY_LEVEL
+ - 1,
+__fmt
+,
+
+213
+__­
+);
+
+214
+ }
+}
+
+220 *
+ $__g‘s_chk
+ (*
+__¡r
+,
+size_t
+__wur
+;
+
+221 *
+ `__REDIRECT
+ (
+__g‘s_w¬n
+, (*
+__¡r
+),
+g‘s
+)
+
+222
+__wur
+
+ `__w¬Ç‰r
+ ("please use fgets or getline instead, gets can't "
+
+225
+__ex‹º_®ways_šlše
+
+__wur
+ *
+
+226
+ $g‘s
+ (*
+__¡r
+)
+
+228 ià(
+ `__bos
+ (
+__¡r
+è!ð(
+size_t
+) -1)
+
+229 
+ `__g‘s_chk
+ (
+__¡r
+,
+ `__bos
+ (__str));
+
+230 
+ `__g‘s_w¬n
+ (
+__¡r
+);
+
+231
+ }
+}
+
+233 *
+ $__fg‘s_chk
+ (*
+__»¡riù
+
+__s
+,
+size_t
+
+__size
+, 
+__n
+,
+
+234
+FILE
+ *
+__»¡riù
+
+__¡»am
+__wur
+;
+
+235 *
+ `__REDIRECT
+ (
+__fg‘s_®Ÿs
+,
+
+236 (*
+__»¡riù
+
+__s
+, 
+__n
+,
+
+237
+FILE
+ *
+__»¡riù
+
+__¡»am
+),
+fg‘s
+__wur
+;
+
+238 *
+ `__REDIRECT
+ (
+__fg‘s_chk_w¬n
+,
+
+239 (*
+__»¡riù
+
+__s
+,
+size_t
+
+__size
+, 
+__n
+,
+
+240
+FILE
+ *
+__»¡riù
+
+__¡»am
+),
+__fg‘s_chk
+)
+
+241
+__wur
+
+ `__w¬Ç‰r
+ ("fgets called with bigger sizehan†ength "
+
+244
+__ex‹º_®ways_šlše
+
+__wur
+ *
+
+245
+ $fg‘s
+ (*
+__»¡riù
+
+__s
+, 
+__n
+,
+FILE
+ *__»¡riù
+__¡»am
+)
+
+247 ià(
+ `__bos
+ (
+__s
+è!ð(
+size_t
+) -1)
+
+249 ià(!
+ `__bužtš_cÚ¡ªt_p
+ (
+__n
+) || __n <= 0)
+
+250 
+ `__fg‘s_chk
+ (
+__s
+,
+ `__bos
+ (__s),
+__n
+,
+__¡»am
+);
+
+252 ià((
+size_t
+__n
+ >
+ `__bos
+ (
+__s
+))
+
+253 
+ `__fg‘s_chk_w¬n
+ (
+__s
+,
+ `__bos
+ (__s),
+__n
+,
+__¡»am
+);
+
+255 
+ `__fg‘s_®Ÿs
+ (
+__s
+,
+__n
+,
+__¡»am
+);
+
+256
+ }
+}
+
+258
+size_t
+
+ $__ä—d_chk
+ (*
+__»¡riù
+
+__±r
+,
+size_t
+
+__±¾’
+,
+
+259
+size_t
+
+__size
+, size_ˆ
+__n
+,
+
+260
+FILE
+ *
+__»¡riù
+
+__¡»am
+__wur
+;
+
+261
+size_t
+
+ `__REDIRECT
+ (
+__ä—d_®Ÿs
+,
+
+262 (*
+__»¡riù
+
+__±r
+,
+size_t
+
+__size
+,
+
+263
+size_t
+
+__n
+,
+FILE
+ *
+__»¡riù
+
+__¡»am
+),
+
+264
+ä—d
+__wur
+;
+
+265
+size_t
+
+ `__REDIRECT
+ (
+__ä—d_chk_w¬n
+,
+
+266 (*
+__»¡riù
+
+__±r
+,
+size_t
+
+__±¾’
+,
+
+267
+size_t
+
+__size
+, size_ˆ
+__n
+,
+
+268
+FILE
+ *
+__»¡riù
+
+__¡»am
+),
+
+269
+__ä—d_chk
+)
+
+270
+__wur
+
+ `__w¬Ç‰r
+ ("fread called with bigger size *‚membhan†ength "
+
+273
+__ex‹º_®ways_šlše
+
+__wur
+
+size_t
+
+
+274
+ $ä—d
+ (*
+__»¡riù
+
+__±r
+,
+size_t
+
+__size
+, size_ˆ
+__n
+,
+
+275
+FILE
+ *
+__»¡riù
+
+__¡»am
+)
+
+277 ià(
+ `__bos0
+ (
+__±r
+è!ð(
+size_t
+) -1)
+
+279 ià(!
+ `__bužtš_cÚ¡ªt_p
+ (
+__size
+)
+
+280 || !
+ `__bužtš_cÚ¡ªt_p
+ (
+__n
+)
+
+281 || (
+__size
+ |
+__n
+è>ð(((
+size_t
+) 1) << (8 *  (size_t) / 2)))
+
+282 
+ `__ä—d_chk
+ (
+__±r
+,
+ `__bos0
+ (__±r),
+__size
+,
+__n
+,
+__¡»am
+);
+
+284 ià(
+__size
+ *
+__n
+ >
+ `__bos0
+ (
+__±r
+))
+
+285 
+ `__ä—d_chk_w¬n
+ (
+__±r
+,
+ `__bos0
+ (__±r),
+__size
+,
+__n
+,
+__¡»am
+);
+
+287 
+ `__ä—d_®Ÿs
+ (
+__±r
+,
+__size
+,
+__n
+,
+__¡»am
+);
+
+288
+ }
+}
+
+290 #ifdeà
+__USE_GNU
+
+
+291 *
+ $__fg‘s_uÆocked_chk
+ (*
+__»¡riù
+
+__s
+,
+size_t
+
+__size
+,
+
+292 
+__n
+,
+FILE
+ *
+__»¡riù
+
+__¡»am
+__wur
+;
+
+293 *
+ `__REDIRECT
+ (
+__fg‘s_uÆocked_®Ÿs
+,
+
+294 (*
+__»¡riù
+
+__s
+, 
+__n
+,
+
+295
+FILE
+ *
+__»¡riù
+
+__¡»am
+),
+fg‘s_uÆocked
+__wur
+;
+
+296 *
+ `__REDIRECT
+ (
+__fg‘s_uÆocked_chk_w¬n
+,
+
+297 (*
+__»¡riù
+
+__s
+,
+size_t
+
+__size
+, 
+__n
+,
+
+298
+FILE
+ *
+__»¡riù
+
+__¡»am
+),
+__fg‘s_uÆocked_chk
+)
+
+299
+__wur
+
+ `__w¬Ç‰r
+ ("fgets_unlocked called with bigger sizehan†ength "
+
+302
+__ex‹º_®ways_šlše
+
+__wur
+ *
+
+303
+ $fg‘s_uÆocked
+ (*
+__»¡riù
+
+__s
+, 
+__n
+,
+FILE
+ *__»¡riù
+__¡»am
+)
+
+305 ià(
+ `__bos
+ (
+__s
+è!ð(
+size_t
+) -1)
+
+307 ià(!
+ `__bužtš_cÚ¡ªt_p
+ (
+__n
+) || __n <= 0)
+
+308 
+ `__fg‘s_uÆocked_chk
+ (
+__s
+,
+ `__bos
+ (__s),
+__n
+,
+__¡»am
+);
+
+310 ià((
+size_t
+__n
+ >
+ `__bos
+ (
+__s
+))
+
+311 
+ `__fg‘s_uÆocked_chk_w¬n
+ (
+__s
+,
+ `__bos
+ (__s),
+__n
+,
+__¡»am
+);
+
+313 
+ `__fg‘s_uÆocked_®Ÿs
+ (
+__s
+,
+__n
+,
+__¡»am
+);
+
+314
+ }
+}
+
+317 #ifdeà
+__USE_MISC
+
+
+318 #undeà
+ä—d_uÆocked
+
+
+319
+size_t
+
+ $__ä—d_uÆocked_chk
+ (*
+__»¡riù
+
+__±r
+,
+size_t
+
+__±¾’
+,
+
+320
+size_t
+
+__size
+, size_ˆ
+__n
+,
+
+321
+FILE
+ *
+__»¡riù
+
+__¡»am
+__wur
+;
+
+322
+size_t
+
+ `__REDIRECT
+ (
+__ä—d_uÆocked_®Ÿs
+,
+
+323 (*
+__»¡riù
+
+__±r
+,
+size_t
+
+__size
+,
+
+324
+size_t
+
+__n
+,
+FILE
+ *
+__»¡riù
+
+__¡»am
+),
+
+325
+ä—d_uÆocked
+__wur
+;
+
+326
+size_t
+
+ `__REDIRECT
+ (
+__ä—d_uÆocked_chk_w¬n
+,
+
+327 (*
+__»¡riù
+
+__±r
+,
+size_t
+
+__±¾’
+,
+
+328
+size_t
+
+__size
+, size_ˆ
+__n
+,
+
+329
+FILE
+ *
+__»¡riù
+
+__¡»am
+),
+
+330
+__ä—d_uÆocked_chk
+)
+
+331
+__wur
+
+ `__w¬Ç‰r
+ ("fread_unlocked called with bigger size *‚membhan "
+
+334
+__ex‹º_®ways_šlše
+
+__wur
+
+size_t
+
+
+335
+ $ä—d_uÆocked
+ (*
+__»¡riù
+
+__±r
+,
+size_t
+
+__size
+, size_ˆ
+__n
+,
+
+336
+FILE
+ *
+__»¡riù
+
+__¡»am
+)
+
+338 ià(
+ `__bos0
+ (
+__±r
+è!ð(
+size_t
+) -1)
+
+340 ià(!
+ `__bužtš_cÚ¡ªt_p
+ (
+__size
+)
+
+341 || !
+ `__bužtš_cÚ¡ªt_p
+ (
+__n
+)
+
+342 || (
+__size
+ |
+__n
+è>ð(((
+size_t
+) 1) << (8 *  (size_t) / 2)))
+
+343 
+ `__ä—d_uÆocked_chk
+ (
+__±r
+,
+ `__bos0
+ (__±r),
+__size
+,
+__n
+,
+
+344
+__¡»am
+);
+
+346 ià(
+__size
+ *
+__n
+ >
+ `__bos0
+ (
+__±r
+))
+
+347 
+ `__ä—d_uÆocked_chk_w¬n
+ (
+__±r
+,
+ `__bos0
+ (__±r),
+__size
+,
+__n
+,
+
+348
+__¡»am
+);
+
+351 #ifdeà
+__USE_EXTERN_INLINES
+
+
+352 ià(
+ `__bužtš_cÚ¡ªt_p
+ (
+__size
+)
+
+353 &&
+ `__bužtš_cÚ¡ªt_p
+ (
+__n
+)
+
+354 && (
+__size
+ |
+__n
+è< (((
+size_t
+) 1) << (8 *  (size_t) / 2))
+
+355 &&
+__size
+ *
+__n
+ <= 8)
+
+357
+size_t
+
+__út
+ =
+__size
+ *
+__n
+;
+
+358 *
+__ýŒ
+ = (*è
+__±r
+;
+
+359 ià(
+__út
+ == 0)
+
+362 ;
+__út
+ > 0; --__cnt)
+
+364 
+__c
+ =
+ `_IO_g‘c_uÆocked
+ (
+__¡»am
+);
+
+365 ià(
+__c
+ =ð
+EOF
+)
+
+367 *
+__ýŒ
+++ =
+__c
+;
+
+369  (
+__ýŒ
+ - (*è
+__±r
+è/
+__size
+;
+
+372 
+ `__ä—d_uÆocked_®Ÿs
+ (
+__±r
+,
+__size
+,
+__n
+,
+__¡»am
+);
+
+373
+ }
+}
+
+ @/usr/include/bits/stdio_lim.h
+
+19 #ià!
+defšed
+
+_STDIO_H
+ && !defšed
+__Ãed_FOPEN_MAX
+ && !defšed
+__Ãed_IOV_MAX
+
+
+23 #ifdeà
+_STDIO_H
+
+
+24 
+ #L_tm²am
+ 20
+
+ )
+
+25 
+ #TMP_MAX
+ 238328
+
+ )
+
+26 
+ #FILENAME_MAX
+ 4096
+
+ )
+
+28 #ifdeà
+__USE_POSIX
+
+
+29 
+ #L_ù”mid
+ 9
+
+ )
+
+30 #ià!
+defšed
+
+__USE_XOPEN2K
+ || defšed
+__USE_GNU
+
+
+31 
+ #L_cu£rid
+ 9
+
+ )
+
+36 #ià
+defšed
+
+__Ãed_FOPEN_MAX
+ || defšed
+_STDIO_H
+
+
+37 #undeà
+FOPEN_MAX
+
+
+38 
+ #FOPEN_MAX
+ 16
+
+ )
+
+41 #ià
+defšed
+
+__Ãed_IOV_MAX
+ && !defšed
+IOV_MAX
+
+
+42 
+ #IOV_MAX
+ 1024
+
+ )
+
+ @/usr/include/bits/string.h
+
+20 #iâdeà
+_STRING_H
+
+
+26 
+ #_STRING_ARCH_uÇligÃd
+ 1
+
+ )
+
+ @/usr/include/bits/string2.h
+
+21 #iâdeà
+_STRING_H
+
+
+25 #ià!
+defšed
+
+__NO_STRING_INLINES
+ && !defšed
+__BOUNDED_POINTERS__
+
+
+42 #iâdeà
+__STRING_INLINE
+
+
+43 #ifdeà
+__ýlu¥lus
+
+
+44 
+ #__STRING_INLINE
+
+šlše
+
+
+ )
+
+46 
+ #__STRING_INLINE
+
+__ex‹º_šlše
+
+
+ )
+
+50 #ià
+_STRING_ARCH_uÇligÃd
+
+
+52 
+ ~<’dŸn.h
+>
+
+53 
+ ~<b™s/ty³s.h
+>
+
+55 #ià
+__BYTE_ORDER
+ =ð
+__LITTLE_ENDIAN
+
+
+56 
+ #__STRING2_SMALL_GET16
+(
+¤c
+,
+idx
+) \
+
+57 (((
+__cÚ¡
+ *è(__cÚ¡ *è(
+¤c
+))[
+idx
+ + 1] << 8 \
+
+58 | ((
+__cÚ¡
+ *è(__cÚ¡ *è(
+¤c
+))[
+idx
+])
+
+ )
+
+59 
+ #__STRING2_SMALL_GET32
+(
+¤c
+,
+idx
+) \
+
+60 (((((
+__cÚ¡
+ *è(__cÚ¡ *è(
+¤c
+))[
+idx
+ + 3] << 8 \
+
+61 | ((
+__cÚ¡
+ *è(__cÚ¡ *è(
+¤c
+))[
+idx
+ + 2]) << 8 \
+
+62 | ((
+__cÚ¡
+ *è(__cÚ¡ *è(
+¤c
+))[
+idx
+ + 1]) << 8 \
+
+63 | ((
+__cÚ¡
+ *è(__cÚ¡ *è(
+¤c
+))[
+idx
+])
+
+ )
+
+65 
+ #__STRING2_SMALL_GET16
+(
+¤c
+,
+idx
+) \
+
+66 (((
+__cÚ¡
+ *è(__cÚ¡ *è(
+¤c
+))[
+idx
+] << 8 \
+
+67 | ((
+__cÚ¡
+ *è(__cÚ¡ *è(
+¤c
+))[
+idx
+ + 1])
+
+ )
+
+68 
+ #__STRING2_SMALL_GET32
+(
+¤c
+,
+idx
+) \
+
+69 (((((
+__cÚ¡
+ *è(__cÚ¡ *è(
+¤c
+))[
+idx
+] << 8 \
+
+70 | ((
+__cÚ¡
+ *è(__cÚ¡ *è(
+¤c
+))[
+idx
+ + 1]) << 8 \
+
+71 | ((
+__cÚ¡
+ *è(__cÚ¡ *è(
+¤c
+))[
+idx
+ + 2]) << 8 \
+
+72 | ((
+__cÚ¡
+ *è(__cÚ¡ *è(
+¤c
+))[
+idx
+ + 3])
+
+ )
+
+77 
+ #__STRING2_COPY_TYPE
+(
+N
+) \
+
+78 ¡ruù { 
+__¬r
+[
+N
+]; } \
+
+79
+ t__©Œibu‹__
+ ((
+ t__·cked__
+)è
+ t__STRING2_COPY_ARR
+##
+ tN
+
+
+ )
+
+80
+ t__STRING2_COPY_TYPE
+ (2);
+
+81
+__STRING2_COPY_TYPE
+ (3);
+
+82
+__STRING2_COPY_TYPE
+ (4);
+
+83
+__STRING2_COPY_TYPE
+ (5);
+
+84
+__STRING2_COPY_TYPE
+ (6);
+
+85
+__STRING2_COPY_TYPE
+ (7);
+
+86
+__STRING2_COPY_TYPE
+ (8);
+
+87 #undeà
+__STRING2_COPY_TYPE
+
+
+93 
+ #__¡ršg2_1b±r_p
+(
+__x
+) \
+
+94 ((
+size_t
+)(cÚ¡ *)((
+__x
+è+ 1è- (size_t)(cÚ¡ *)(__xè=ð1)
+
+ )
+
+97 #ià!
+defšed
+
+_HAVE_STRING_ARCH_mem£t
+
+
+98 #ià!
+__GNUC_PREREQ
+ (3, 0)
+
+99 #ià
+_STRING_ARCH_uÇligÃd
+
+
+100 
+ #mem£t
+(
+s
+,
+c
+,
+n
+) \
+
+101 (
+ `__ex‹nsiÚ__
+ (
+ `__bužtš_cÚ¡ªt_p
+ (
+n
+) && (n) <= 16 \
+
+102 ? ((
+n
+) == 1 \
+
+103 ?
+ `__mem£t_1
+ (
+s
+,
+c
+) \
+
+104 :
+ `__mem£t_gc
+ (
+s
+,
+c
+,
+n
+)) \
+
+105 : (
+ `__bužtš_cÚ¡ªt_p
+ (
+c
+) && (c) == '\0' \
+
+106 ? ({ *
+__s
+ = (
+s
+);
+ `__bz”o
+ (__s,
+n
+); __s; }) \
+
+107 :
+ `mem£t
+ (
+s
+,
+c
+,
+n
+))))
+
+ )
+
+109 
+ #__mem£t_1
+(
+s
+,
+c
+è({ *
+__s
+ = (s); \
+
+110 *((
+__ušt8_t
+ *è
+__s
+èð(__ušt8_tè
+c
+; __s; })
+
+ )
+
+112 
+ #__mem£t_gc
+(
+s
+,
+c
+,
+n
+) \
+
+113 ({ *
+__s
+ = (
+s
+); \
+
+115 
+__ui
+; \
+
+116 
+__usi
+; \
+
+117 
+__uc
+; \
+
+118 } *
+__u
+ =
+__s
+; \
+
+119
+__ušt8_t
+
+__c
+ = (__ušt8_tè(
+c
+); \
+
+122 (è(
+n
+)) \
+
+125
+__u
+->
+__ui
+ =
+__c
+ * 0x01010101; \
+
+126
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 4); \
+
+128
+__u
+->
+__ui
+ =
+__c
+ * 0x01010101; \
+
+129
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 4); \
+
+131
+__u
+->
+__ui
+ =
+__c
+ * 0x01010101; \
+
+132
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 4); \
+
+134
+__u
+->
+__usi
+ = (è
+__c
+ * 0x0101; \
+
+135
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 2); \
+
+136
+__u
+->
+__uc
+ = (è
+__c
+; \
+
+140
+__u
+->
+__ui
+ =
+__c
+ * 0x01010101; \
+
+141
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 4); \
+
+143
+__u
+->
+__ui
+ =
+__c
+ * 0x01010101; \
+
+144
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 4); \
+
+146
+__u
+->
+__ui
+ =
+__c
+ * 0x01010101; \
+
+147
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 4); \
+
+149
+__u
+->
+__usi
+ = (è
+__c
+ * 0x0101; \
+
+153
+__u
+->
+__ui
+ =
+__c
+ * 0x01010101; \
+
+154
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 4); \
+
+156
+__u
+->
+__ui
+ =
+__c
+ * 0x01010101; \
+
+157
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 4); \
+
+159
+__u
+->
+__ui
+ =
+__c
+ * 0x01010101; \
+
+160
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 4); \
+
+162
+__u
+->
+__uc
+ = (è
+__c
+; \
+
+166
+__u
+->
+__ui
+ =
+__c
+ * 0x01010101; \
+
+167
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 4); \
+
+169
+__u
+->
+__ui
+ =
+__c
+ * 0x01010101; \
+
+170
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 4); \
+
+172
+__u
+->
+__ui
+ =
+__c
+ * 0x01010101; \
+
+173
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 4); \
+
+175
+__u
+->
+__ui
+ =
+__c
+ * 0x01010101; \
+
+180
+__s
+; })
+
+ )
+
+182 
+ #mem£t
+(
+s
+,
+c
+,
+n
+) \
+
+183 (
+ `__ex‹nsiÚ__
+ (
+ `__bužtš_cÚ¡ªt_p
+ (
+c
+) && (c) == '\0' \
+
+184 ? ({ *
+__s
+ = (
+s
+);
+ `__bz”o
+ (__s,
+n
+); __s; }) \
+
+185 :
+ `mem£t
+ (
+s
+,
+c
+,
+n
+)))
+
+ )
+
+194 #ià
+__GNUC_PREREQ
+ (2, 91)
+
+195 
+ #__bz”o
+(
+s
+,
+n
+ `__bužtš_mem£t
+ (s, '\0',‚)
+
+ )
+
+203 #ifdeà
+__USE_GNU
+
+
+204 #ià!
+defšed
+
+_HAVE_STRING_ARCH_mempýy
+ || defšed
+_FORCE_INLINES
+
+
+205 #iâdeà
+_HAVE_STRING_ARCH_mempýy
+
+
+206 #ià
+__GNUC_PREREQ
+ (3, 4)
+
+207 
+ #__mempýy
+(
+de¡
+,
+¤c
+,
+n
+ `__bužtš_mempýy
+ (de¡, src,‚)
+
+ )
+
+208 #–ià
+__GNUC_PREREQ
+ (3, 0)
+
+209 
+ #__mempýy
+(
+de¡
+,
+¤c
+,
+n
+) \
+
+210 (
+ `__ex‹nsiÚ__
+ (
+ `__bužtš_cÚ¡ªt_p
+ (
+¤c
+è&& __bužtš_cÚ¡ªt_°(
+n
+) \
+
+211 &&
+ `__¡ršg2_1b±r_p
+ (
+¤c
+è&&
+n
+ <= 8 \
+
+212 ?
+ `__bužtš_memýy
+ (
+de¡
+,
+¤c
+,
+n
+) + (n) \
+
+213 :
+ `__mempýy
+ (
+de¡
+,
+¤c
+,
+n
+)))
+
+ )
+
+215 
+ #__mempýy
+(
+de¡
+,
+¤c
+,
+n
+) \
+
+216 (
+ `__ex‹nsiÚ__
+ (
+ `__bužtš_cÚ¡ªt_p
+ (
+¤c
+è&& __bužtš_cÚ¡ªt_°(
+n
+) \
+
+217 &&
+ `__¡ršg2_1b±r_p
+ (
+¤c
+è&&
+n
+ <= 8 \
+
+218 ?
+ `__mempýy_sm®l
+ (
+de¡
+,
+ `__mempýy_¬gs
+ (
+¤c
+),
+n
+) \
+
+219 :
+ `__mempýy
+ (
+de¡
+,
+¤c
+,
+n
+)))
+
+ )
+
+223 
+ #mempýy
+(
+de¡
+,
+¤c
+,
+n
+ `__mempýy
+ (de¡, src,‚)
+
+ )
+
+226 #ià!
+__GNUC_PREREQ
+ (3, 0è||
+defšed
+
+_FORCE_INLINES
+
+
+227 #ià
+_STRING_ARCH_uÇligÃd
+
+
+228 #iâdeà
+_FORCE_INLINES
+
+
+229 
+ #__mempýy_¬gs
+(
+¤c
+) \
+
+230 ((
+__cÚ¡
+ *è(
+¤c
+))[0], ((__const *) (src))[2], \
+
+231 ((
+__cÚ¡
+ *è(
+¤c
+))[4], ((__const *) (src))[6], \
+
+232
+__ex‹nsiÚ__
+
+ `__STRING2_SMALL_GET16
+ (
+¤c
+, 0), \
+
+233
+__ex‹nsiÚ__
+
+ `__STRING2_SMALL_GET16
+ (
+¤c
+, 4), \
+
+234
+__ex‹nsiÚ__
+
+ `__STRING2_SMALL_GET32
+ (
+¤c
+, 0), \
+
+235
+__ex‹nsiÚ__
+
+ `__STRING2_SMALL_GET32
+ (
+¤c
+, 4)
+
+ )
+
+237
+__STRING_INLINE
+ *
+__mempýy_sm®l
+ (*, , , , ,
+
+238
+__ušt16_t
+, __ušt16_t,
+__ušt32_t
+,
+
+239
+__ušt32_t
+,
+size_t
+);
+
+240
+__STRING_INLINE
+ *
+
+241
+ $__mempýy_sm®l
+ (*
+__de¡1
+,
+
+242 
+__¤c0_1
+, 
+__¤c2_1
+, 
+__¤c4_1
+, 
+__¤c6_1
+,
+
+243
+__ušt16_t
+
+__¤c0_2
+, __ušt16_ˆ
+__¤c4_2
+,
+
+244
+__ušt32_t
+
+__¤c0_4
+, __ušt32_ˆ
+__¤c4_4
+,
+
+245
+size_t
+
+__¤þ’
+)
+
+248
+__ušt32_t
+
+__ui
+;
+
+249
+__ušt16_t
+
+__usi
+;
+
+250 
+__uc
+;
+
+251 
+__c
+;
+
+252 } *
+__u
+ =
+__de¡1
+;
+
+253 (è
+__¤þ’
+)
+
+256
+__u
+->
+__c
+ =
+__¤c0_1
+;
+
+257
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 1);
+
+260
+__u
+->
+__usi
+ =
+__¤c0_2
+;
+
+261
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 2);
+
+264
+__u
+->
+__usi
+ =
+__¤c0_2
+;
+
+265
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 2);
+
+266
+__u
+->
+__c
+ =
+__¤c2_1
+;
+
+267
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 1);
+
+270
+__u
+->
+__ui
+ =
+__¤c0_4
+;
+
+271
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 4);
+
+274
+__u
+->
+__ui
+ =
+__¤c0_4
+;
+
+275
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 4);
+
+276
+__u
+->
+__c
+ =
+__¤c4_1
+;
+
+277
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 1);
+
+280
+__u
+->
+__ui
+ =
+__¤c0_4
+;
+
+281
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 4);
+
+282
+__u
+->
+__usi
+ =
+__¤c4_2
+;
+
+283
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 2);
+
+286
+__u
+->
+__ui
+ =
+__¤c0_4
+;
+
+287
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 4);
+
+288
+__u
+->
+__usi
+ =
+__¤c4_2
+;
+
+289
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 2);
+
+290
+__u
+->
+__c
+ =
+__¤c6_1
+;
+
+291
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 1);
+
+294
+__u
+->
+__ui
+ =
+__¤c0_4
+;
+
+295
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 4);
+
+296
+__u
+->
+__ui
+ =
+__¤c4_4
+;
+
+297
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 4);
+
+300  (*è
+__u
+;
+
+301
+ }
+}
+
+303 #iâdeà
+_FORCE_INLINES
+
+
+304 
+ #__mempýy_¬gs
+(
+¤c
+) \
+
+305 ((
+__cÚ¡
+ *è(
+¤c
+))[0], \
+
+306
+ `__ex‹nsiÚ__
+ ((
+__STRING2_COPY_ARR2
+) \
+
+307 { { ((
+__cÚ¡
+ *è(
+¤c
+))[0], ((__const *) (src))[1] } }), \
+
+308
+ `__ex‹nsiÚ__
+ ((
+__STRING2_COPY_ARR3
+) \
+
+309 { { ((
+__cÚ¡
+ *è(
+¤c
+))[0], ((__const *) (src))[1], \
+
+310 ((
+__cÚ¡
+ *è(
+¤c
+))[2] } }), \
+
+311
+ `__ex‹nsiÚ__
+ ((
+__STRING2_COPY_ARR4
+) \
+
+312 { { ((
+__cÚ¡
+ *è(
+¤c
+))[0], ((__const *) (src))[1], \
+
+313 ((
+__cÚ¡
+ *è(
+¤c
+))[2], ((__const *) (src))[3] } }), \
+
+314
+ `__ex‹nsiÚ__
+ ((
+__STRING2_COPY_ARR5
+) \
+
+315 { { ((
+__cÚ¡
+ *è(
+¤c
+))[0], ((__const *) (src))[1], \
+
+316 ((
+__cÚ¡
+ *è(
+¤c
+))[2], ((__const *) (src))[3], \
+
+317 ((
+__cÚ¡
+ *è(
+¤c
+))[4] } }), \
+
+318
+ `__ex‹nsiÚ__
+ ((
+__STRING2_COPY_ARR6
+) \
+
+319 { { ((
+__cÚ¡
+ *è(
+¤c
+))[0], ((__const *) (src))[1], \
+
+320 ((
+__cÚ¡
+ *è(
+¤c
+))[2], ((__const *) (src))[3], \
+
+321 ((
+__cÚ¡
+ *è(
+¤c
+))[4], ((__const *) (src))[5] } }), \
+
+322
+ `__ex‹nsiÚ__
+ ((
+__STRING2_COPY_ARR7
+) \
+
+323 { { ((
+__cÚ¡
+ *è(
+¤c
+))[0], ((__const *) (src))[1], \
+
+324 ((
+__cÚ¡
+ *è(
+¤c
+))[2], ((__const *) (src))[3], \
+
+325 ((
+__cÚ¡
+ *è(
+¤c
+))[4], ((__const *) (src))[5], \
+
+326 ((
+__cÚ¡
+ *è(
+¤c
+))[6] } }), \
+
+327
+ `__ex‹nsiÚ__
+ ((
+__STRING2_COPY_ARR8
+) \
+
+328 { { ((
+__cÚ¡
+ *è(
+¤c
+))[0], ((__const *) (src))[1], \
+
+329 ((
+__cÚ¡
+ *è(
+¤c
+))[2], ((__const *) (src))[3], \
+
+330 ((
+__cÚ¡
+ *è(
+¤c
+))[4], ((__const *) (src))[5], \
+
+331 ((
+__cÚ¡
+ *è(
+¤c
+))[6], ((__cÚ¡ *è(¤c))[7] } })
+
+ )
+
+333
+__STRING_INLINE
+ *
+__mempýy_sm®l
+ (*, ,
+__STRING2_COPY_ARR2
+,
+
+334
+__STRING2_COPY_ARR3
+,
+
+335
+__STRING2_COPY_ARR4
+,
+
+336
+__STRING2_COPY_ARR5
+,
+
+337
+__STRING2_COPY_ARR6
+,
+
+338
+__STRING2_COPY_ARR7
+,
+
+339
+__STRING2_COPY_ARR8
+,
+size_t
+);
+
+340
+__STRING_INLINE
+ *
+
+341
+ $__mempýy_sm®l
+ (*
+__de¡
+, 
+__¤c1
+,
+
+342
+__STRING2_COPY_ARR2
+
+__¤c2
+,
+__STRING2_COPY_ARR3
+
+__¤c3
+,
+
+343
+__STRING2_COPY_ARR4
+
+__¤c4
+,
+__STRING2_COPY_ARR5
+
+__¤c5
+,
+
+344
+__STRING2_COPY_ARR6
+
+__¤c6
+,
+__STRING2_COPY_ARR7
+
+__¤c7
+,
+
+345
+__STRING2_COPY_ARR8
+
+__¤c8
+,
+size_t
+
+__¤þ’
+)
+
+348 
+__c
+;
+
+349
+__STRING2_COPY_ARR2
+
+__sÿ2
+;
+
+350
+__STRING2_COPY_ARR3
+
+__sÿ3
+;
+
+351
+__STRING2_COPY_ARR4
+
+__sÿ4
+;
+
+352
+__STRING2_COPY_ARR5
+
+__sÿ5
+;
+
+353
+__STRING2_COPY_ARR6
+
+__sÿ6
+;
+
+354
+__STRING2_COPY_ARR7
+
+__sÿ7
+;
+
+355
+__STRING2_COPY_ARR8
+
+__sÿ8
+;
+
+356 } *
+__u
+ =
+__de¡
+;
+
+357 (è
+__¤þ’
+)
+
+360
+__u
+->
+__c
+ =
+__¤c1
+;
+
+363
+__ex‹nsiÚ__
+
+__u
+->
+__sÿ2
+ =
+__¤c2
+;
+
+366
+__ex‹nsiÚ__
+
+__u
+->
+__sÿ3
+ =
+__¤c3
+;
+
+369
+__ex‹nsiÚ__
+
+__u
+->
+__sÿ4
+ =
+__¤c4
+;
+
+372
+__ex‹nsiÚ__
+
+__u
+->
+__sÿ5
+ =
+__¤c5
+;
+
+375
+__ex‹nsiÚ__
+
+__u
+->
+__sÿ6
+ =
+__¤c6
+;
+
+378
+__ex‹nsiÚ__
+
+__u
+->
+__sÿ7
+ =
+__¤c7
+;
+
+381
+__ex‹nsiÚ__
+
+__u
+->
+__sÿ8
+ =
+__¤c8
+;
+
+384 
+ `__ex‹nsiÚ__
+ ((*è
+__u
+ +
+__¤þ’
+);
+
+385
+ }
+}
+
+393 #iâdeà
+_HAVE_STRING_ARCH_¡rchr
+
+
+394 *
+__¿wmemchr
+ (cÚ¡ *
+__s
+, 
+__c
+);
+
+395 #ià
+__GNUC_PREREQ
+ (3, 2)
+
+396 
+ #¡rchr
+(
+s
+,
+c
+) \
+
+397 (
+ `__ex‹nsiÚ__
+ (
+ `__bužtš_cÚ¡ªt_p
+ (
+c
+è&& !__bužtš_cÚ¡ªt_°(
+s
+) \
+
+398 && (
+c
+) == '\0' \
+
+399 ? (*è
+ `__¿wmemchr
+ (
+s
+,
+c
+) \
+
+400 :
+ `__bužtš_¡rchr
+ (
+s
+,
+c
+)))
+
+ )
+
+402 
+ #¡rchr
+(
+s
+,
+c
+) \
+
+403 (
+ `__ex‹nsiÚ__
+ (
+ `__bužtš_cÚ¡ªt_p
+ (
+c
+) && (c) == '\0' \
+
+404 ? (*è
+ `__¿wmemchr
+ (
+s
+,
+c
+) \
+
+405 :
+ `¡rchr
+ (
+s
+,
+c
+)))
+
+ )
+
+411 #ià(!
+defšed
+
+_HAVE_STRING_ARCH_¡rýy
+ && !
+__GNUC_PREREQ
+ (3, 0)) \
+
+412 ||
+defšed
+
+ g_FORCE_INLINES
+
+
+413 #ià!
+defšed
+
+_HAVE_STRING_ARCH_¡rýy
+ && !
+__GNUC_PREREQ
+ (3, 0)
+
+414 
+ #¡rýy
+(
+de¡
+,
+¤c
+) \
+
+415 (
+ `__ex‹nsiÚ__
+ (
+ `__bužtš_cÚ¡ªt_p
+ (
+¤c
+) \
+
+416 ? (
+ `__¡ršg2_1b±r_p
+ (
+¤c
+è&&
+ `¡¾’
+ (src) + 1 <= 8 \
+
+417 ?
+ `__¡rýy_sm®l
+ (
+de¡
+,
+ `__¡rýy_¬gs
+ (
+¤c
+), \
+
+418
+ `¡¾’
+ (
+¤c
+) + 1) \
+
+419 : (*è
+ `memýy
+ (
+de¡
+,
+¤c
+,
+ `¡¾’
+ (src) + 1)) \
+
+420 :
+ `¡rýy
+ (
+de¡
+,
+¤c
+)))
+
+ )
+
+423 #ià
+_STRING_ARCH_uÇligÃd
+
+
+424 #iâdeà
+_FORCE_INLINES
+
+
+425 
+ #__¡rýy_¬gs
+(
+¤c
+) \
+
+426
+__ex‹nsiÚ__
+
+ `__STRING2_SMALL_GET16
+ (
+¤c
+, 0), \
+
+427
+__ex‹nsiÚ__
+
+ `__STRING2_SMALL_GET16
+ (
+¤c
+, 4), \
+
+428
+__ex‹nsiÚ__
+
+ `__STRING2_SMALL_GET32
+ (
+¤c
+, 0), \
+
+429
+__ex‹nsiÚ__
+
+ `__STRING2_SMALL_GET32
+ (
+¤c
+, 4)
+
+ )
+
+431
+__STRING_INLINE
+ *
+__¡rýy_sm®l
+ (*,
+__ušt16_t
+, __uint16_t,
+
+432
+__ušt32_t
+, __ušt32_t,
+size_t
+);
+
+433
+__STRING_INLINE
+ *
+
+434
+ $__¡rýy_sm®l
+ (*
+__de¡
+,
+
+435
+__ušt16_t
+
+__¤c0_2
+, __ušt16_ˆ
+__¤c4_2
+,
+
+436
+__ušt32_t
+
+__¤c0_4
+, __ušt32_ˆ
+__¤c4_4
+,
+
+437
+size_t
+
+__¤þ’
+)
+
+440
+__ušt32_t
+
+__ui
+;
+
+441
+__ušt16_t
+
+__usi
+;
+
+442 
+__uc
+;
+
+443 } *
+__u
+ = (*è
+__de¡
+;
+
+444 (è
+__¤þ’
+)
+
+447
+__u
+->
+__uc
+ = '\0';
+
+450
+__u
+->
+__usi
+ =
+__¤c0_2
+;
+
+453
+__u
+->
+__usi
+ =
+__¤c0_2
+;
+
+454
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 2);
+
+455
+__u
+->
+__uc
+ = '\0';
+
+458
+__u
+->
+__ui
+ =
+__¤c0_4
+;
+
+461
+__u
+->
+__ui
+ =
+__¤c0_4
+;
+
+462
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 4);
+
+463
+__u
+->
+__uc
+ = '\0';
+
+466
+__u
+->
+__ui
+ =
+__¤c0_4
+;
+
+467
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 4);
+
+468
+__u
+->
+__usi
+ =
+__¤c4_2
+;
+
+471
+__u
+->
+__ui
+ =
+__¤c0_4
+;
+
+472
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 4);
+
+473
+__u
+->
+__usi
+ =
+__¤c4_2
+;
+
+474
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 2);
+
+475
+__u
+->
+__uc
+ = '\0';
+
+478
+__u
+->
+__ui
+ =
+__¤c0_4
+;
+
+479
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 4);
+
+480
+__u
+->
+__ui
+ =
+__¤c4_4
+;
+
+483 
+__de¡
+;
+
+484
+ }
+}
+
+486 #iâdeà
+_FORCE_INLINES
+
+
+487 
+ #__¡rýy_¬gs
+(
+¤c
+) \
+
+488
+ `__ex‹nsiÚ__
+ ((
+__STRING2_COPY_ARR2
+) \
+
+489 { { ((
+__cÚ¡
+ *è(
+¤c
+))[0], '\0' } }), \
+
+490
+ `__ex‹nsiÚ__
+ ((
+__STRING2_COPY_ARR3
+) \
+
+491 { { ((
+__cÚ¡
+ *è(
+¤c
+))[0], ((__const *) (src))[1], \
+
+493
+ `__ex‹nsiÚ__
+ ((
+__STRING2_COPY_ARR4
+) \
+
+494 { { ((
+__cÚ¡
+ *è(
+¤c
+))[0], ((__const *) (src))[1], \
+
+495 ((
+__cÚ¡
+ *è(
+¤c
+))[2], '\0' } }), \
+
+496
+ `__ex‹nsiÚ__
+ ((
+__STRING2_COPY_ARR5
+) \
+
+497 { { ((
+__cÚ¡
+ *è(
+¤c
+))[0], ((__const *) (src))[1], \
+
+498 ((
+__cÚ¡
+ *è(
+¤c
+))[2], ((__const *) (src))[3], \
+
+500
+ `__ex‹nsiÚ__
+ ((
+__STRING2_COPY_ARR6
+) \
+
+501 { { ((
+__cÚ¡
+ *è(
+¤c
+))[0], ((__const *) (src))[1], \
+
+502 ((
+__cÚ¡
+ *è(
+¤c
+))[2], ((__const *) (src))[3], \
+
+503 ((
+__cÚ¡
+ *è(
+¤c
+))[4], '\0' } }), \
+
+504
+ `__ex‹nsiÚ__
+ ((
+__STRING2_COPY_ARR7
+) \
+
+505 { { ((
+__cÚ¡
+ *è(
+¤c
+))[0], ((__const *) (src))[1], \
+
+506 ((
+__cÚ¡
+ *è(
+¤c
+))[2], ((__const *) (src))[3], \
+
+507 ((
+__cÚ¡
+ *è(
+¤c
+))[4], ((__const *) (src))[5], \
+
+509
+ `__ex‹nsiÚ__
+ ((
+__STRING2_COPY_ARR8
+) \
+
+510 { { ((
+__cÚ¡
+ *è(
+¤c
+))[0], ((__const *) (src))[1], \
+
+511 ((
+__cÚ¡
+ *è(
+¤c
+))[2], ((__const *) (src))[3], \
+
+512 ((
+__cÚ¡
+ *è(
+¤c
+))[4], ((__const *) (src))[5], \
+
+513 ((
+__cÚ¡
+ *è(
+¤c
+))[6], '\0' } })
+
+ )
+
+515
+__STRING_INLINE
+ *
+__¡rýy_sm®l
+ (*,
+__STRING2_COPY_ARR2
+,
+
+516
+__STRING2_COPY_ARR3
+,
+
+517
+__STRING2_COPY_ARR4
+,
+
+518
+__STRING2_COPY_ARR5
+,
+
+519
+__STRING2_COPY_ARR6
+,
+
+520
+__STRING2_COPY_ARR7
+,
+
+521
+__STRING2_COPY_ARR8
+,
+size_t
+);
+
+522
+__STRING_INLINE
+ *
+
+523
+ $__¡rýy_sm®l
+ (*
+__de¡
+,
+
+524
+__STRING2_COPY_ARR2
+
+__¤c2
+,
+__STRING2_COPY_ARR3
+
+__¤c3
+,
+
+525
+__STRING2_COPY_ARR4
+
+__¤c4
+,
+__STRING2_COPY_ARR5
+
+__¤c5
+,
+
+526
+__STRING2_COPY_ARR6
+
+__¤c6
+,
+__STRING2_COPY_ARR7
+
+__¤c7
+,
+
+527
+__STRING2_COPY_ARR8
+
+__¤c8
+,
+size_t
+
+__¤þ’
+)
+
+530 
+__c
+;
+
+531
+__STRING2_COPY_ARR2
+
+__sÿ2
+;
+
+532
+__STRING2_COPY_ARR3
+
+__sÿ3
+;
+
+533
+__STRING2_COPY_ARR4
+
+__sÿ4
+;
+
+534
+__STRING2_COPY_ARR5
+
+__sÿ5
+;
+
+535
+__STRING2_COPY_ARR6
+
+__sÿ6
+;
+
+536
+__STRING2_COPY_ARR7
+
+__sÿ7
+;
+
+537
+__STRING2_COPY_ARR8
+
+__sÿ8
+;
+
+538 } *
+__u
+ = (*è
+__de¡
+;
+
+539 (è
+__¤þ’
+)
+
+542
+__u
+->
+__c
+ = '\0';
+
+545
+__ex‹nsiÚ__
+
+__u
+->
+__sÿ2
+ =
+__¤c2
+;
+
+548
+__ex‹nsiÚ__
+
+__u
+->
+__sÿ3
+ =
+__¤c3
+;
+
+551
+__ex‹nsiÚ__
+
+__u
+->
+__sÿ4
+ =
+__¤c4
+;
+
+554
+__ex‹nsiÚ__
+
+__u
+->
+__sÿ5
+ =
+__¤c5
+;
+
+557
+__ex‹nsiÚ__
+
+__u
+->
+__sÿ6
+ =
+__¤c6
+;
+
+560
+__ex‹nsiÚ__
+
+__u
+->
+__sÿ7
+ =
+__¤c7
+;
+
+563
+__ex‹nsiÚ__
+
+__u
+->
+__sÿ8
+ =
+__¤c8
+;
+
+566 
+__de¡
+;
+
+567
+ }
+}
+
+573 #ifdeà
+__USE_GNU
+
+
+574 #ià!
+defšed
+
+_HAVE_STRING_ARCH_¡pýy
+ || defšed
+_FORCE_INLINES
+
+
+575 #iâdeà
+_HAVE_STRING_ARCH_¡pýy
+
+
+576 #ià
+__GNUC_PREREQ
+ (3, 4)
+
+577 
+ #__¡pýy
+(
+de¡
+,
+¤c
+ `__bužtš_¡pýy
+ (de¡, src)
+
+ )
+
+578 #–ià
+__GNUC_PREREQ
+ (3, 0)
+
+579 
+ #__¡pýy
+(
+de¡
+,
+¤c
+) \
+
+580 (
+ `__ex‹nsiÚ__
+ (
+ `__bužtš_cÚ¡ªt_p
+ (
+¤c
+) \
+
+581 ? (
+ `__¡ršg2_1b±r_p
+ (
+¤c
+è&&
+ `¡¾’
+ (src) + 1 <= 8 \
+
+582 ?
+ `__bužtš_¡rýy
+ (
+de¡
+,
+¤c
+è+
+ `¡¾’
+ (src) \
+
+583 : ((*è(
+__mempýy
+è(
+de¡
+,
+¤c
+,
+ `¡¾’
+ (src) + 1) \
+
+585 :
+ `__¡pýy
+ (
+de¡
+,
+¤c
+)))
+
+ )
+
+587 
+ #__¡pýy
+(
+de¡
+,
+¤c
+) \
+
+588 (
+ `__ex‹nsiÚ__
+ (
+ `__bužtš_cÚ¡ªt_p
+ (
+¤c
+) \
+
+589 ? (
+ `__¡ršg2_1b±r_p
+ (
+¤c
+è&&
+ `¡¾’
+ (src) + 1 <= 8 \
+
+590 ?
+ `__¡pýy_sm®l
+ (
+de¡
+,
+ `__¡pýy_¬gs
+ (
+¤c
+), \
+
+591
+ `¡¾’
+ (
+¤c
+) + 1) \
+
+592 : ((*è(
+__mempýy
+è(
+de¡
+,
+¤c
+,
+ `¡¾’
+ (src) + 1) \
+
+594 :
+ `__¡pýy
+ (
+de¡
+,
+¤c
+)))
+
+ )
+
+598 
+ #¡pýy
+(
+de¡
+,
+¤c
+ `__¡pýy
+ (de¡, src)
+
+ )
+
+601 #ià!
+__GNUC_PREREQ
+ (3, 0è||
+defšed
+
+_FORCE_INLINES
+
+
+602 #ià
+_STRING_ARCH_uÇligÃd
+
+
+603 #iâdeà
+_FORCE_INLINES
+
+
+604 
+ #__¡pýy_¬gs
+(
+¤c
+) \
+
+605
+__ex‹nsiÚ__
+
+ `__STRING2_SMALL_GET16
+ (
+¤c
+, 0), \
+
+606
+__ex‹nsiÚ__
+
+ `__STRING2_SMALL_GET16
+ (
+¤c
+, 4), \
+
+607
+__ex‹nsiÚ__
+
+ `__STRING2_SMALL_GET32
+ (
+¤c
+, 0), \
+
+608
+__ex‹nsiÚ__
+
+ `__STRING2_SMALL_GET32
+ (
+¤c
+, 4)
+
+ )
+
+610
+__STRING_INLINE
+ *
+__¡pýy_sm®l
+ (*,
+__ušt16_t
+, __uint16_t,
+
+611
+__ušt32_t
+, __ušt32_t,
+size_t
+);
+
+612
+__STRING_INLINE
+ *
+
+613
+ $__¡pýy_sm®l
+ (*
+__de¡
+,
+
+614
+__ušt16_t
+
+__¤c0_2
+, __ušt16_ˆ
+__¤c4_2
+,
+
+615
+__ušt32_t
+
+__¤c0_4
+, __ušt32_ˆ
+__¤c4_4
+,
+
+616
+size_t
+
+__¤þ’
+)
+
+619 
+__ui
+;
+
+620 
+__usi
+;
+
+621 
+__uc
+;
+
+622 
+__c
+;
+
+623 } *
+__u
+ = (*è
+__de¡
+;
+
+624 (è
+__¤þ’
+)
+
+627
+__u
+->
+__uc
+ = '\0';
+
+630
+__u
+->
+__usi
+ =
+__¤c0_2
+;
+
+631
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 1);
+
+634
+__u
+->
+__usi
+ =
+__¤c0_2
+;
+
+635
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 2);
+
+636
+__u
+->
+__uc
+ = '\0';
+
+639
+__u
+->
+__ui
+ =
+__¤c0_4
+;
+
+640
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 3);
+
+643
+__u
+->
+__ui
+ =
+__¤c0_4
+;
+
+644
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 4);
+
+645
+__u
+->
+__uc
+ = '\0';
+
+648
+__u
+->
+__ui
+ =
+__¤c0_4
+;
+
+649
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 4);
+
+650
+__u
+->
+__usi
+ =
+__¤c4_2
+;
+
+651
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 1);
+
+654
+__u
+->
+__ui
+ =
+__¤c0_4
+;
+
+655
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 4);
+
+656
+__u
+->
+__usi
+ =
+__¤c4_2
+;
+
+657
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 2);
+
+658
+__u
+->
+__uc
+ = '\0';
+
+661
+__u
+->
+__ui
+ =
+__¤c0_4
+;
+
+662
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 4);
+
+663
+__u
+->
+__ui
+ =
+__¤c4_4
+;
+
+664
+__u
+ =
+ `__ex‹nsiÚ__
+ ((*) __u + 3);
+
+667  &
+__u
+->
+__c
+;
+
+668
+ }
+}
+
+670 #iâdeà
+_FORCE_INLINES
+
+
+671 
+ #__¡pýy_¬gs
+(
+¤c
+) \
+
+672
+ `__ex‹nsiÚ__
+ ((
+__STRING2_COPY_ARR2
+) \
+
+673 { { ((
+__cÚ¡
+ *è(
+¤c
+))[0], '\0' } }), \
+
+674
+ `__ex‹nsiÚ__
+ ((
+__STRING2_COPY_ARR3
+) \
+
+675 { { ((
+__cÚ¡
+ *è(
+¤c
+))[0], ((__const *) (src))[1], \
+
+677
+ `__ex‹nsiÚ__
+ ((
+__STRING2_COPY_ARR4
+) \
+
+678 { { ((
+__cÚ¡
+ *è(
+¤c
+))[0], ((__const *) (src))[1], \
+
+679 ((
+__cÚ¡
+ *è(
+¤c
+))[2], '\0' } }), \
+
+680
+ `__ex‹nsiÚ__
+ ((
+__STRING2_COPY_ARR5
+) \
+
+681 { { ((
+__cÚ¡
+ *è(
+¤c
+))[0], ((__const *) (src))[1], \
+
+682 ((
+__cÚ¡
+ *è(
+¤c
+))[2], ((__const *) (src))[3], \
+
+684
+ `__ex‹nsiÚ__
+ ((
+__STRING2_COPY_ARR6
+) \
+
+685 { { ((
+__cÚ¡
+ *è(
+¤c
+))[0], ((__const *) (src))[1], \
+
+686 ((
+__cÚ¡
+ *è(
+¤c
+))[2], ((__const *) (src))[3], \
+
+687 ((
+__cÚ¡
+ *è(
+¤c
+))[4], '\0' } }), \
+
+688
+ `__ex‹nsiÚ__
+ ((
+__STRING2_COPY_ARR7
+) \
+
+689 { { ((
+__cÚ¡
+ *è(
+¤c
+))[0], ((__const *) (src))[1], \
+
+690 ((
+__cÚ¡
+ *è(
+¤c
+))[2], ((__const *) (src))[3], \
+
+691 ((
+__cÚ¡
+ *è(
+¤c
+))[4], ((__const *) (src))[5], \
+
+693
+ `__ex‹nsiÚ__
+ ((
+__STRING2_COPY_ARR8
+) \
+
+694 { { ((
+__cÚ¡
+ *è(
+¤c
+))[0], ((__const *) (src))[1], \
+
+695 ((
+__cÚ¡
+ *è(
+¤c
+))[2], ((__const *) (src))[3], \
+
+696 ((
+__cÚ¡
+ *è(
+¤c
+))[4], ((__const *) (src))[5], \
+
+697 ((
+__cÚ¡
+ *è(
+¤c
+))[6], '\0' } })
+
+ )
+
+699
+__STRING_INLINE
+ *
+__¡pýy_sm®l
+ (*,
+__STRING2_COPY_ARR2
+,
+
+700
+__STRING2_COPY_ARR3
+,
+
+701
+__STRING2_COPY_ARR4
+,
+
+702
+__STRING2_COPY_ARR5
+,
+
+703
+__STRING2_COPY_ARR6
+,
+
+704
+__STRING2_COPY_ARR7
+,
+
+705
+__STRING2_COPY_ARR8
+,
+size_t
+);
+
+706
+__STRING_INLINE
+ *
+
+707
+ $__¡pýy_sm®l
+ (*
+__de¡
+,
+
+708
+__STRING2_COPY_ARR2
+
+__¤c2
+,
+__STRING2_COPY_ARR3
+
+__¤c3
+,
+
+709
+__STRING2_COPY_ARR4
+
+__¤c4
+,
+__STRING2_COPY_ARR5
+
+__¤c5
+,
+
+710
+__STRING2_COPY_ARR6
+
+__¤c6
+,
+__STRING2_COPY_ARR7
+
+__¤c7
+,
+
+711
+__STRING2_COPY_ARR8
+
+__¤c8
+,
+size_t
+
+__¤þ’
+)
+
+714 
+__c
+;
+
+715
+__STRING2_COPY_ARR2
+
+__sÿ2
+;
+
+716
+__STRING2_COPY_ARR3
+
+__sÿ3
+;
+
+717
+__STRING2_COPY_ARR4
+
+__sÿ4
+;
+
+718
+__STRING2_COPY_ARR5
+
+__sÿ5
+;
+
+719
+__STRING2_COPY_ARR6
+
+__sÿ6
+;
+
+720
+__STRING2_COPY_ARR7
+
+__sÿ7
+;
+
+721
+__STRING2_COPY_ARR8
+
+__sÿ8
+;
+
+722 } *
+__u
+ = (*è
+__de¡
+;
+
+723 (è
+__¤þ’
+)
+
+726
+__u
+->
+__c
+ = '\0';
+
+729
+__ex‹nsiÚ__
+
+__u
+->
+__sÿ2
+ =
+__¤c2
+;
+
+732
+__ex‹nsiÚ__
+
+__u
+->
+__sÿ3
+ =
+__¤c3
+;
+
+735
+__ex‹nsiÚ__
+
+__u
+->
+__sÿ4
+ =
+__¤c4
+;
+
+738
+__ex‹nsiÚ__
+
+__u
+->
+__sÿ5
+ =
+__¤c5
+;
+
+741
+__ex‹nsiÚ__
+
+__u
+->
+__sÿ6
+ =
+__¤c6
+;
+
+744
+__ex‹nsiÚ__
+
+__u
+->
+__sÿ7
+ =
+__¤c7
+;
+
+747
+__ex‹nsiÚ__
+
+__u
+->
+__sÿ8
+ =
+__¤c8
+;
+
+750 
+__de¡
+ +
+__¤þ’
+ - 1;
+
+751
+ }
+}
+
+759 #iâdeà
+_HAVE_STRING_ARCH_¡ºýy
+
+
+760 #ià
+__GNUC_PREREQ
+ (3, 2)
+
+761 
+ #¡ºýy
+(
+de¡
+,
+¤c
+,
+n
+ `__bužtš_¡ºýy
+ (de¡, src,‚)
+
+ )
+
+763 
+ #¡ºýy
+(
+de¡
+,
+¤c
+,
+n
+) \
+
+764 (
+ `__ex‹nsiÚ__
+ (
+ `__bužtš_cÚ¡ªt_p
+ (
+¤c
+è&& __bužtš_cÚ¡ªt_°(
+n
+) \
+
+765 ? (
+ `¡¾’
+ (
+¤c
+è+ 1 >ð((
+size_t
+è(
+n
+)) \
+
+766 ? (*è
+ `memýy
+ (
+de¡
+,
+¤c
+,
+n
+) \
+
+767 :
+ `¡ºýy
+ (
+de¡
+,
+¤c
+,
+n
+)) \
+
+768 :
+ `¡ºýy
+ (
+de¡
+,
+¤c
+,
+n
+)))
+
+ )
+
+774 #iâdeà
+_HAVE_STRING_ARCH_¡ºÿt
+
+
+775 #ifdeà
+_USE_STRING_ARCH_¡rchr
+
+
+776 
+ #¡ºÿt
+(
+de¡
+,
+¤c
+,
+n
+) \
+
+777 (
+ `__ex‹nsiÚ__
+ ({ *
+__de¡
+ = (
+de¡
+); \
+
+778
+ `__bužtš_cÚ¡ªt_p
+ (
+¤c
+è&& __bužtš_cÚ¡ªt_°(
+n
+) \
+
+779 ? (
+ `¡¾’
+ (
+¤c
+è< ((
+size_t
+è(
+n
+)) \
+
+780 ?
+ `¡rÿt
+ (
+__de¡
+,
+¤c
+) \
+
+781 : (*((*è
+ `__mempýy
+ (
+ `¡rchr
+ (
+__de¡
+, '\0'), \
+
+782
+¤c
+,
+n
+)èð'\0',
+__de¡
+)) \
+
+783 :
+ `¡ºÿt
+ (
+de¡
+,
+¤c
+,
+n
+); }))
+
+ )
+
+784 #–ià
+__GNUC_PREREQ
+ (3, 2)
+
+785 
+ #¡ºÿt
+(
+de¡
+,
+¤c
+,
+n
+ `__bužtš_¡ºÿt
+ (de¡, src,‚)
+
+ )
+
+787 
+ #¡ºÿt
+(
+de¡
+,
+¤c
+,
+n
+) \
+
+788 (
+ `__ex‹nsiÚ__
+ (
+ `__bužtš_cÚ¡ªt_p
+ (
+¤c
+è&& __bužtš_cÚ¡ªt_°(
+n
+) \
+
+789 ? (
+ `¡¾’
+ (
+¤c
+è< ((
+size_t
+è(
+n
+)) \
+
+790 ?
+ `¡rÿt
+ (
+de¡
+,
+¤c
+) \
+
+791 :
+ `¡ºÿt
+ (
+de¡
+,
+¤c
+,
+n
+)) \
+
+792 :
+ `¡ºÿt
+ (
+de¡
+,
+¤c
+,
+n
+)))
+
+ )
+
+798 #iâdeà
+_HAVE_STRING_ARCH_¡rcmp
+
+
+799 #ià
+__GNUC_PREREQ
+ (3, 2)
+
+800 
+ #¡rcmp
+(
+s1
+,
+s2
+) \
+
+801
+__ex‹nsiÚ__
+ \
+
+802 ({
+size_t
+
+__s1_Ën
+,
+__s2_Ën
+; \
+
+803 (
+ `__bužtš_cÚ¡ªt_p
+ (
+s1
+è&& __bužtš_cÚ¡ªt_°(
+s2
+) \
+
+804 && (
+__s1_Ën
+ =
+ `¡¾’
+ (
+s1
+),
+__s2_Ën
+ = sŒËÀ(
+s2
+), \
+
+805 (!
+ `__¡ršg2_1b±r_p
+ (
+s1
+è||
+__s1_Ën
+ >= 4) \
+
+806 && (!
+ `__¡ršg2_1b±r_p
+ (
+s2
+è||
+__s2_Ën
+ >= 4)) \
+
+807 ?
+ `__bužtš_¡rcmp
+ (
+s1
+,
+s2
+) \
+
+808 : (
+ `__bužtš_cÚ¡ªt_p
+ (
+s1
+è&&
+ `__¡ršg2_1b±r_p
+ (s1) \
+
+809 && (
+__s1_Ën
+ =
+ `¡¾’
+ (
+s1
+), __s1_len < 4) \
+
+810 ? (
+ `__bužtš_cÚ¡ªt_p
+ (
+s2
+è&&
+ `__¡ršg2_1b±r_p
+ (s2) \
+
+811 ?
+ `__bužtš_¡rcmp
+ (
+s1
+,
+s2
+) \
+
+812 :
+ `__¡rcmp_cg
+ (
+s1
+,
+s2
+,
+__s1_Ën
+)) \
+
+813 : (
+ `__bužtš_cÚ¡ªt_p
+ (
+s2
+è&&
+ `__¡ršg2_1b±r_p
+ (s2) \
+
+814 && (
+__s2_Ën
+ =
+ `¡¾’
+ (
+s2
+), __s2_len < 4) \
+
+815 ? (
+ `__bužtš_cÚ¡ªt_p
+ (
+s1
+è&&
+ `__¡ršg2_1b±r_p
+ (s1) \
+
+816 ?
+ `__bužtš_¡rcmp
+ (
+s1
+,
+s2
+) \
+
+817 :
+ `__¡rcmp_gc
+ (
+s1
+,
+s2
+,
+__s2_Ën
+)) \
+
+818 :
+ `__bužtš_¡rcmp
+ (
+s1
+,
+s2
+)))); })
+
+ )
+
+820 
+ #¡rcmp
+(
+s1
+,
+s2
+) \
+
+821
+__ex‹nsiÚ__
+ \
+
+822 ({
+size_t
+
+__s1_Ën
+,
+__s2_Ën
+; \
+
+823 (
+ `__bužtš_cÚ¡ªt_p
+ (
+s1
+è&& __bužtš_cÚ¡ªt_°(
+s2
+) \
+
+824 && (
+__s1_Ën
+ =
+ `¡¾’
+ (
+s1
+),
+__s2_Ën
+ = sŒËÀ(
+s2
+), \
+
+825 (!
+ `__¡ršg2_1b±r_p
+ (
+s1
+è||
+__s1_Ën
+ >= 4) \
+
+826 && (!
+ `__¡ršg2_1b±r_p
+ (
+s2
+è||
+__s2_Ën
+ >= 4)) \
+
+827 ?
+ `memcmp
+ ((
+__cÚ¡
+ *è(
+s1
+), (__cÚ¡ *è(
+s2
+), \
+
+828 (
+__s1_Ën
+ <
+__s2_Ën
+ ? __s1_len : __s2_len) + 1) \
+
+829 : (
+ `__bužtš_cÚ¡ªt_p
+ (
+s1
+è&&
+ `__¡ršg2_1b±r_p
+ (s1) \
+
+830 && (
+__s1_Ën
+ =
+ `¡¾’
+ (
+s1
+), __s1_len < 4) \
+
+831 ? (
+ `__bužtš_cÚ¡ªt_p
+ (
+s2
+è&&
+ `__¡ršg2_1b±r_p
+ (s2) \
+
+832 ?
+ `__¡rcmp_cc
+ (
+s1
+,
+s2
+,
+__s1_Ën
+) \
+
+833 :
+ `__¡rcmp_cg
+ (
+s1
+,
+s2
+,
+__s1_Ën
+)) \
+
+834 : (
+ `__bužtš_cÚ¡ªt_p
+ (
+s2
+è&&
+ `__¡ršg2_1b±r_p
+ (s2) \
+
+835 && (
+__s2_Ën
+ =
+ `¡¾’
+ (
+s2
+), __s2_len < 4) \
+
+836 ? (
+ `__bužtš_cÚ¡ªt_p
+ (
+s1
+è&&
+ `__¡ršg2_1b±r_p
+ (s1) \
+
+837 ?
+ `__¡rcmp_cc
+ (
+s1
+,
+s2
+,
+__s2_Ën
+) \
+
+838 :
+ `__¡rcmp_gc
+ (
+s1
+,
+s2
+,
+__s2_Ën
+)) \
+
+839 :
+ `¡rcmp
+ (
+s1
+,
+s2
+)))); })
+
+ )
+
+842 
+ #__¡rcmp_cc
+(
+s1
+,
+s2
+,
+l
+) \
+
+843 (
+ `__ex‹nsiÚ__
+ ({ 
+__»suÉ
+ = \
+
+844 (((
+__cÚ¡
+ *è(__cÚ¡ *è(
+s1
+))[0] \
+
+845 - ((
+__cÚ¡
+ *è(__cÚ¡ *)(
+s2
+))[0]);\
+
+846 ià(
+l
+ > 0 &&
+__»suÉ
+ == 0) \
+
+848
+__»suÉ
+ = (((
+__cÚ¡
+ *) \
+
+849 (
+__cÚ¡
+ *è(
+s1
+))[1] \
+
+850 - ((
+__cÚ¡
+ *) \
+
+851 (
+__cÚ¡
+ *è(
+s2
+))[1]); \
+
+852 ià(
+l
+ > 1 &&
+__»suÉ
+ == 0) \
+
+854
+__»suÉ
+ = \
+
+855 (((
+__cÚ¡
+ *) \
+
+856 (
+__cÚ¡
+ *è(
+s1
+))[2] \
+
+857 - ((
+__cÚ¡
+ *) \
+
+858 (
+__cÚ¡
+ *è(
+s2
+))[2]); \
+
+859 ià(
+l
+ > 2 &&
+__»suÉ
+ == 0) \
+
+860
+__»suÉ
+ = \
+
+861 (((
+__cÚ¡
+ *) \
+
+862 (
+__cÚ¡
+ *è(
+s1
+))[3] \
+
+863 - ((
+__cÚ¡
+ *) \
+
+864 (
+__cÚ¡
+ *è(
+s2
+))[3]); \
+
+867
+__»suÉ
+; }))
+
+ )
+
+869 
+ #__¡rcmp_cg
+(
+s1
+,
+s2
+,
+l1
+) \
+
+870 (
+ `__ex‹nsiÚ__
+ ({
+__cÚ¡
+ *
+__s2
+ = \
+
+871 (
+__cÚ¡
+ *è(__cÚ¡ *è(
+s2
+); \
+
+872 
+__»suÉ
+ = \
+
+873 (((
+__cÚ¡
+ *è(__cÚ¡ *è(
+s1
+))[0] \
+
+874 -
+__s2
+[0]); \
+
+875 ià(
+l1
+ > 0 &&
+__»suÉ
+ == 0) \
+
+877
+__»suÉ
+ = (((
+__cÚ¡
+ *) \
+
+878 (
+__cÚ¡
+ *è(
+s1
+))[1] -
+__s2
+[1]); \
+
+879 ià(
+l1
+ > 1 &&
+__»suÉ
+ == 0) \
+
+881
+__»suÉ
+ = (((
+__cÚ¡
+ *) \
+
+882 (
+__cÚ¡
+ *è(
+s1
+))[2] -
+__s2
+[2]);\
+
+883 ià(
+l1
+ > 2 &&
+__»suÉ
+ == 0) \
+
+884
+__»suÉ
+ = (((
+__cÚ¡
+ *) \
+
+885 (
+__cÚ¡
+ *è(
+s1
+))[3] \
+
+886 -
+__s2
+[3]); \
+
+889
+__»suÉ
+; }))
+
+ )
+
+891 
+ #__¡rcmp_gc
+(
+s1
+,
+s2
+,
+l2
+) \
+
+892 (
+ `__ex‹nsiÚ__
+ ({
+__cÚ¡
+ *
+__s1
+ = \
+
+893 (
+__cÚ¡
+ *è(__cÚ¡ *è(
+s1
+); \
+
+894 
+__»suÉ
+ = \
+
+895
+__s1
+[0] - ((
+__cÚ¡
+ *) \
+
+896 (
+__cÚ¡
+ *è(
+s2
+))[0]; \
+
+897 ià(
+l2
+ > 0 &&
+__»suÉ
+ == 0) \
+
+899
+__»suÉ
+ = (
+__s1
+[1] \
+
+900 - ((
+__cÚ¡
+ *) \
+
+901 (
+__cÚ¡
+ *è(
+s2
+))[1]); \
+
+902 ià(
+l2
+ > 1 &&
+__»suÉ
+ == 0) \
+
+904
+__»suÉ
+ = \
+
+905 (
+__s1
+[2] - ((
+__cÚ¡
+ *) \
+
+906 (
+__cÚ¡
+ *è(
+s2
+))[2]); \
+
+907 ià(
+l2
+ > 2 &&
+__»suÉ
+ == 0) \
+
+908
+__»suÉ
+ = \
+
+909 (
+__s1
+[3] \
+
+910 - ((
+__cÚ¡
+ *) \
+
+911 (
+__cÚ¡
+ *è(
+s2
+))[3]); \
+
+914
+__»suÉ
+; }))
+
+ )
+
+919 #iâdeà
+_HAVE_STRING_ARCH_¡ºcmp
+
+
+920 
+ #¡ºcmp
+(
+s1
+,
+s2
+,
+n
+) \
+
+921 (
+ `__ex‹nsiÚ__
+ (
+ `__bužtš_cÚ¡ªt_p
+ (
+n
+) \
+
+922 && ((
+ `__bužtš_cÚ¡ªt_p
+ (
+s1
+) \
+
+923 &&
+ `¡¾’
+ (
+s1
+è< ((
+size_t
+è(
+n
+))) \
+
+924 || (
+ `__bužtš_cÚ¡ªt_p
+ (
+s2
+) \
+
+925 &&
+ `¡¾’
+ (
+s2
+è< ((
+size_t
+è(
+n
+)))) \
+
+926 ?
+ `¡rcmp
+ (
+s1
+,
+s2
+è:
+ `¡ºcmp
+ (s1, s2,
+n
+)))
+
+ )
+
+932 #ià!
+defšed
+
+_HAVE_STRING_ARCH_¡rc¥n
+ || defšed
+_FORCE_INLINES
+
+
+933 #iâdeà
+_HAVE_STRING_ARCH_¡rc¥n
+
+
+934 #ià
+__GNUC_PREREQ
+ (3, 2)
+
+935 
+ #¡rc¥n
+(
+s
+,
+»jeù
+) \
+
+936
+__ex‹nsiÚ__
+ \
+
+937 ({ 
+__r0
+,
+__r1
+,
+__r2
+; \
+
+938 (
+ `__bužtš_cÚ¡ªt_p
+ (
+»jeù
+è&&
+ `__¡ršg2_1b±r_p
+ (reject) \
+
+939 ? ((
+ `__bužtš_cÚ¡ªt_p
+ (
+s
+è&&
+ `__¡ršg2_1b±r_p
+ (s)) \
+
+940 ?
+ `__bužtš_¡rc¥n
+ (
+s
+,
+»jeù
+) \
+
+941 : ((
+__r0
+ = ((
+__cÚ¡
+ *è(
+»jeù
+))[0], __r0 == '\0') \
+
+942 ?
+ `¡¾’
+ (
+s
+) \
+
+943 : ((
+__r1
+ = ((
+__cÚ¡
+ *è(
+»jeù
+))[1], __r1 == '\0') \
+
+944 ?
+ `__¡rc¥n_c1
+ (
+s
+,
+__r0
+) \
+
+945 : ((
+__r2
+ = ((
+__cÚ¡
+ *è(
+»jeù
+))[2], __r2 == '\0') \
+
+946 ?
+ `__¡rc¥n_c2
+ (
+s
+,
+__r0
+,
+__r1
+) \
+
+947 : (((
+__cÚ¡
+ *è(
+»jeù
+))[3] == '\0' \
+
+948 ?
+ `__¡rc¥n_c3
+ (
+s
+,
+__r0
+,
+__r1
+,
+__r2
+) \
+
+949 :
+ `__bužtš_¡rc¥n
+ (
+s
+,
+»jeù
+)))))) \
+
+950 :
+ `__bužtš_¡rc¥n
+ (
+s
+,
+»jeù
+)); })
+
+ )
+
+952 
+ #¡rc¥n
+(
+s
+,
+»jeù
+) \
+
+953
+__ex‹nsiÚ__
+ \
+
+954 ({ 
+__r0
+,
+__r1
+,
+__r2
+; \
+
+955 (
+ `__bužtš_cÚ¡ªt_p
+ (
+»jeù
+è&&
+ `__¡ršg2_1b±r_p
+ (reject) \
+
+956 ? ((
+__r0
+ = ((
+__cÚ¡
+ *è(
+»jeù
+))[0], __r0 == '\0') \
+
+957 ?
+ `¡¾’
+ (
+s
+) \
+
+958 : ((
+__r1
+ = ((
+__cÚ¡
+ *è(
+»jeù
+))[1], __r1 == '\0') \
+
+959 ?
+ `__¡rc¥n_c1
+ (
+s
+,
+__r0
+) \
+
+960 : ((
+__r2
+ = ((
+__cÚ¡
+ *è(
+»jeù
+))[2], __r2 == '\0') \
+
+961 ?
+ `__¡rc¥n_c2
+ (
+s
+,
+__r0
+,
+__r1
+) \
+
+962 : (((
+__cÚ¡
+ *è(
+»jeù
+))[3] == '\0' \
+
+963 ?
+ `__¡rc¥n_c3
+ (
+s
+,
+__r0
+,
+__r1
+,
+__r2
+) \
+
+964 :
+ `¡rc¥n
+ (
+s
+,
+»jeù
+))))) \
+
+965 :
+ `¡rc¥n
+ (
+s
+,
+»jeù
+)); })
+
+ )
+
+969
+__STRING_INLINE
+
+size_t
+
+__¡rc¥n_c1
+ (
+__cÚ¡
+ *
+__s
+, 
+__»jeù
+);
+
+970
+__STRING_INLINE
+
+size_t
+
+
+971
+ $__¡rc¥n_c1
+ (
+__cÚ¡
+ *
+__s
+, 
+__»jeù
+)
+
+973 
+size_t
+
+__»suÉ
+ = 0;
+
+974 
+__s
+[
+__»suÉ
+] !ð'\0' && __s[__»suÉ] !ð
+__»jeù
+)
+
+975 ++
+__»suÉ
+;
+
+976 
+__»suÉ
+;
+
+977
+ }
+}
+
+979
+__STRING_INLINE
+
+size_t
+
+__¡rc¥n_c2
+ (
+__cÚ¡
+ *
+__s
+, 
+__»jeù1
+,
+
+980 
+__»jeù2
+);
+
+981
+__STRING_INLINE
+
+size_t
+
+
+982
+ $__¡rc¥n_c2
+ (
+__cÚ¡
+ *
+__s
+, 
+__»jeù1
+, 
+__»jeù2
+)
+
+984 
+size_t
+
+__»suÉ
+ = 0;
+
+985 
+__s
+[
+__»suÉ
+] !ð'\0' && __s[__»suÉ] !ð
+__»jeù1
+
+
+986 &&
+__s
+[
+__»suÉ
+] !ð
+__»jeù2
+)
+
+987 ++
+__»suÉ
+;
+
+988 
+__»suÉ
+;
+
+989
+ }
+}
+
+991
+__STRING_INLINE
+
+size_t
+
+__¡rc¥n_c3
+ (
+__cÚ¡
+ *
+__s
+, 
+__»jeù1
+,
+
+992 
+__»jeù2
+, 
+__»jeù3
+);
+
+993
+__STRING_INLINE
+
+size_t
+
+
+994
+ $__¡rc¥n_c3
+ (
+__cÚ¡
+ *
+__s
+, 
+__»jeù1
+, 
+__»jeù2
+,
+
+995 
+__»jeù3
+)
+
+997 
+size_t
+
+__»suÉ
+ = 0;
+
+998 
+__s
+[
+__»suÉ
+] !ð'\0' && __s[__»suÉ] !ð
+__»jeù1
+
+
+999 &&
+__s
+[
+__»suÉ
+] !ð
+__»jeù2
+ && __s[__»suÉ] !ð
+__»jeù3
+)
+
+1000 ++
+__»suÉ
+;
+
+1001 
+__»suÉ
+;
+
+1002
+ }
+}
+
+1008 #ià!
+defšed
+
+_HAVE_STRING_ARCH_¡r¥n
+ || defšed
+_FORCE_INLINES
+
+
+1009 #iâdeà
+_HAVE_STRING_ARCH_¡r¥n
+
+
+1010 #ià
+__GNUC_PREREQ
+ (3, 2)
+
+1011 
+ #¡r¥n
+(
+s
+,
+acû±
+) \
+
+1012
+__ex‹nsiÚ__
+ \
+
+1013 ({ 
+__a0
+,
+__a1
+,
+__a2
+; \
+
+1014 (
+ `__bužtš_cÚ¡ªt_p
+ (
+acû±
+è&&
+ `__¡ršg2_1b±r_p
+ (accept) \
+
+1015 ? ((
+ `__bužtš_cÚ¡ªt_p
+ (
+s
+è&&
+ `__¡ršg2_1b±r_p
+ (s)) \
+
+1016 ?
+ `__bužtš_¡r¥n
+ (
+s
+,
+acû±
+) \
+
+1017 : ((
+__a0
+ = ((
+__cÚ¡
+ *è(
+acû±
+))[0], __a0 == '\0') \
+
+1018 ? ((è(
+s
+), 0) \
+
+1019 : ((
+__a1
+ = ((
+__cÚ¡
+ *è(
+acû±
+))[1], __a1 == '\0') \
+
+1020 ?
+ `__¡r¥n_c1
+ (
+s
+,
+__a0
+) \
+
+1021 : ((
+__a2
+ = ((
+__cÚ¡
+ *è(
+acû±
+))[2], __a2 == '\0') \
+
+1022 ?
+ `__¡r¥n_c2
+ (
+s
+,
+__a0
+,
+__a1
+) \
+
+1023 : (((
+__cÚ¡
+ *è(
+acû±
+))[3] == '\0' \
+
+1024 ?
+ `__¡r¥n_c3
+ (
+s
+,
+__a0
+,
+__a1
+,
+__a2
+) \
+
+1025 :
+ `__bužtš_¡r¥n
+ (
+s
+,
+acû±
+)))))) \
+
+1026 :
+ `__bužtš_¡r¥n
+ (
+s
+,
+acû±
+)); })
+
+ )
+
+1028 
+ #¡r¥n
+(
+s
+,
+acû±
+) \
+
+1029
+__ex‹nsiÚ__
+ \
+
+1030 ({ 
+__a0
+,
+__a1
+,
+__a2
+; \
+
+1031 (
+ `__bužtš_cÚ¡ªt_p
+ (
+acû±
+è&&
+ `__¡ršg2_1b±r_p
+ (accept) \
+
+1032 ? ((
+__a0
+ = ((
+__cÚ¡
+ *è(
+acû±
+))[0], __a0 == '\0') \
+
+1033 ? ((è(
+s
+), 0) \
+
+1034 : ((
+__a1
+ = ((
+__cÚ¡
+ *è(
+acû±
+))[1], __a1 == '\0') \
+
+1035 ?
+ `__¡r¥n_c1
+ (
+s
+,
+__a0
+) \
+
+1036 : ((
+__a2
+ = ((
+__cÚ¡
+ *è(
+acû±
+))[2], __a2 == '\0') \
+
+1037 ?
+ `__¡r¥n_c2
+ (
+s
+,
+__a0
+,
+__a1
+) \
+
+1038 : (((
+__cÚ¡
+ *è(
+acû±
+))[3] == '\0' \
+
+1039 ?
+ `__¡r¥n_c3
+ (
+s
+,
+__a0
+,
+__a1
+,
+__a2
+) \
+
+1040 :
+ `¡r¥n
+ (
+s
+,
+acû±
+))))) \
+
+1041 :
+ `¡r¥n
+ (
+s
+,
+acû±
+)); })
+
+ )
+
+1045
+__STRING_INLINE
+
+size_t
+
+__¡r¥n_c1
+ (
+__cÚ¡
+ *
+__s
+, 
+__acû±
+);
+
+1046
+__STRING_INLINE
+
+size_t
+
+
+1047
+ $__¡r¥n_c1
+ (
+__cÚ¡
+ *
+__s
+, 
+__acû±
+)
+
+1049 
+size_t
+
+__»suÉ
+ = 0;
+
+1051 
+__s
+[
+__»suÉ
+] =ð
+__acû±
+)
+
+1052 ++
+__»suÉ
+;
+
+1053 
+__»suÉ
+;
+
+1054
+ }
+}
+
+1056
+__STRING_INLINE
+
+size_t
+
+__¡r¥n_c2
+ (
+__cÚ¡
+ *
+__s
+, 
+__acû±1
+,
+
+1057 
+__acû±2
+);
+
+1058
+__STRING_INLINE
+
+size_t
+
+
+1059
+ $__¡r¥n_c2
+ (
+__cÚ¡
+ *
+__s
+, 
+__acû±1
+, 
+__acû±2
+)
+
+1061 
+size_t
+
+__»suÉ
+ = 0;
+
+1063 
+__s
+[
+__»suÉ
+] =ð
+__acû±1
+ || __s[__»suÉ] =ð
+__acû±2
+)
+
+1064 ++
+__»suÉ
+;
+
+1065 
+__»suÉ
+;
+
+1066
+ }
+}
+
+1068
+__STRING_INLINE
+
+size_t
+
+__¡r¥n_c3
+ (
+__cÚ¡
+ *
+__s
+, 
+__acû±1
+,
+
+1069 
+__acû±2
+, 
+__acû±3
+);
+
+1070
+__STRING_INLINE
+
+size_t
+
+
+1071
+ $__¡r¥n_c3
+ (
+__cÚ¡
+ *
+__s
+, 
+__acû±1
+, 
+__acû±2
+, 
+__acû±3
+)
+
+1073 
+size_t
+
+__»suÉ
+ = 0;
+
+1075 
+__s
+[
+__»suÉ
+] =ð
+__acû±1
+ || __s[__»suÉ] =ð
+__acû±2
+
+
+1076 ||
+__s
+[
+__»suÉ
+] =ð
+__acû±3
+)
+
+1077 ++
+__»suÉ
+;
+
+1078 
+__»suÉ
+;
+
+1079
+ }
+}
+
+1084 #ià!
+defšed
+
+_HAVE_STRING_ARCH_¡½brk
+ || defšed
+_FORCE_INLINES
+
+
+1085 #iâdeà
+_HAVE_STRING_ARCH_¡½brk
+
+
+1086 #ià
+__GNUC_PREREQ
+ (3, 2)
+
+1087 
+ #¡½brk
+(
+s
+,
+acû±
+) \
+
+1088
+__ex‹nsiÚ__
+ \
+
+1089 ({ 
+__a0
+,
+__a1
+,
+__a2
+; \
+
+1090 (
+ `__bužtš_cÚ¡ªt_p
+ (
+acû±
+è&&
+ `__¡ršg2_1b±r_p
+ (accept) \
+
+1091 ? ((
+ `__bužtš_cÚ¡ªt_p
+ (
+s
+è&&
+ `__¡ršg2_1b±r_p
+ (s)) \
+
+1092 ?
+ `__bužtš_¡½brk
+ (
+s
+,
+acû±
+) \
+
+1093 : ((
+__a0
+ = ((
+__cÚ¡
+ *è(
+acû±
+))[0], __a0 == '\0') \
+
+1094 ? ((è(
+s
+), (*è
+NULL
+) \
+
+1095 : ((
+__a1
+ = ((
+__cÚ¡
+ *è(
+acû±
+))[1], __a1 == '\0') \
+
+1096 ?
+ `__bužtš_¡rchr
+ (
+s
+,
+__a0
+) \
+
+1097 : ((
+__a2
+ = ((
+__cÚ¡
+ *è(
+acû±
+))[2], __a2 == '\0') \
+
+1098 ?
+ `__¡½brk_c2
+ (
+s
+,
+__a0
+,
+__a1
+) \
+
+1099 : (((
+__cÚ¡
+ *è(
+acû±
+))[3] == '\0' \
+
+1100 ?
+ `__¡½brk_c3
+ (
+s
+,
+__a0
+,
+__a1
+,
+__a2
+) \
+
+1101 :
+ `__bužtš_¡½brk
+ (
+s
+,
+acû±
+)))))) \
+
+1102 :
+ `__bužtš_¡½brk
+ (
+s
+,
+acû±
+)); })
+
+ )
+
+1104 
+ #¡½brk
+(
+s
+,
+acû±
+) \
+
+1105
+__ex‹nsiÚ__
+ \
+
+1106 ({ 
+__a0
+,
+__a1
+,
+__a2
+; \
+
+1107 (
+ `__bužtš_cÚ¡ªt_p
+ (
+acû±
+è&&
+ `__¡ršg2_1b±r_p
+ (accept) \
+
+1108 ? ((
+__a0
+ = ((
+__cÚ¡
+ *è(
+acû±
+))[0], __a0 == '\0') \
+
+1109 ? ((è(
+s
+), (*è
+NULL
+) \
+
+1110 : ((
+__a1
+ = ((
+__cÚ¡
+ *è(
+acû±
+))[1], __a1 == '\0') \
+
+1111 ?
+ `¡rchr
+ (
+s
+,
+__a0
+) \
+
+1112 : ((
+__a2
+ = ((
+__cÚ¡
+ *è(
+acû±
+))[2], __a2 == '\0') \
+
+1113 ?
+ `__¡½brk_c2
+ (
+s
+,
+__a0
+,
+__a1
+) \
+
+1114 : (((
+__cÚ¡
+ *è(
+acû±
+))[3] == '\0' \
+
+1115 ?
+ `__¡½brk_c3
+ (
+s
+,
+__a0
+,
+__a1
+,
+__a2
+) \
+
+1116 :
+ `¡½brk
+ (
+s
+,
+acû±
+))))) \
+
+1117 :
+ `¡½brk
+ (
+s
+,
+acû±
+)); })
+
+ )
+
+1121
+__STRING_INLINE
+ *
+__¡½brk_c2
+ (
+__cÚ¡
+ *
+__s
+, 
+__acû±1
+,
+
+1122 
+__acû±2
+);
+
+1123
+__STRING_INLINE
+ *
+
+1124
+ $__¡½brk_c2
+ (
+__cÚ¡
+ *
+__s
+, 
+__acû±1
+, 
+__acû±2
+)
+
+1127 *
+__s
+ !ð'\0' && *__ !ð
+__acû±1
+ && *__ !ð
+__acû±2
+)
+
+1128 ++
+__s
+;
+
+1129  *
+__s
+ =ð'\0' ?
+NULL
+ : (*è(
+size_t
+) __s;
+
+1130
+ }
+}
+
+1132
+__STRING_INLINE
+ *
+__¡½brk_c3
+ (
+__cÚ¡
+ *
+__s
+, 
+__acû±1
+,
+
+1133 
+__acû±2
+, 
+__acû±3
+);
+
+1134
+__STRING_INLINE
+ *
+
+1135
+ $__¡½brk_c3
+ (
+__cÚ¡
+ *
+__s
+, 
+__acû±1
+, 
+__acû±2
+,
+
+1136 
+__acû±3
+)
+
+1139 *
+__s
+ !ð'\0' && *__ !ð
+__acû±1
+ && *__ !ð
+__acû±2
+
+
+1140 && *
+__s
+ !ð
+__acû±3
+)
+
+1141 ++
+__s
+;
+
+1142  *
+__s
+ =ð'\0' ?
+NULL
+ : (*è(
+size_t
+) __s;
+
+1143
+ }
+}
+
+1149 #ià!
+defšed
+
+_HAVE_STRING_ARCH_¡r¡r
+ && !
+__GNUC_PREREQ
+ (2, 97)
+
+1150 
+ #¡r¡r
+(
+hay¡ack
+,
+ÃedË
+) \
+
+1151 (
+ `__ex‹nsiÚ__
+ (
+ `__bužtš_cÚ¡ªt_p
+ (
+ÃedË
+è&&
+ `__¡ršg2_1b±r_p
+ (needle) \
+
+1152 ? (((
+__cÚ¡
+ *è(
+ÃedË
+))[0] == '\0' \
+
+1153 ? (*è(
+size_t
+è(
+hay¡ack
+) \
+
+1154 : (((
+__cÚ¡
+ *è(
+ÃedË
+))[1] == '\0' \
+
+1155 ?
+ `¡rchr
+ (
+hay¡ack
+, \
+
+1156 ((
+__cÚ¡
+ *è(
+ÃedË
+))[0]) \
+
+1157 :
+ `¡r¡r
+ (
+hay¡ack
+,
+ÃedË
+))) \
+
+1158 :
+ `¡r¡r
+ (
+hay¡ack
+,
+ÃedË
+)))
+
+ )
+
+1162 #ià!
+defšed
+
+_HAVE_STRING_ARCH_¡¹ok_r
+ || defšed
+_FORCE_INLINES
+
+
+1163 #iâdeà
+_HAVE_STRING_ARCH_¡¹ok_r
+
+
+1164 
+ #__¡¹ok_r
+(
+s
+,
+£p
+,
+Ãx
+) \
+
+1165 (
+ `__ex‹nsiÚ__
+ (
+ `__bužtš_cÚ¡ªt_p
+ (
+£p
+è&&
+ `__¡ršg2_1b±r_p
+ (sep) \
+
+1166 && ((
+__cÚ¡
+ *è(
+£p
+))[0] != '\0' \
+
+1167 && ((
+__cÚ¡
+ *è(
+£p
+))[1] == '\0' \
+
+1168 ?
+ `__¡¹ok_r_1c
+ (
+s
+, ((
+__cÚ¡
+ *è(
+£p
+))[0],
+Ãx
+) \
+
+1169 :
+ `__¡¹ok_r
+ (
+s
+,
+£p
+,
+Ãx
+)))
+
+ )
+
+1172
+__STRING_INLINE
+ *
+__¡¹ok_r_1c
+ (*
+__s
+, 
+__£p
+, **
+__Ãx
+);
+
+1173
+__STRING_INLINE
+ *
+
+1174
+ $__¡¹ok_r_1c
+ (*
+__s
+, 
+__£p
+, **
+__Ãx
+)
+
+1176 *
+__»suÉ
+;
+
+1177 ià(
+__s
+ =ð
+NULL
+)
+
+1178
+__s
+ = *
+__Ãx
+;
+
+1179 *
+__s
+ =ð
+__£p
+)
+
+1180 ++
+__s
+;
+
+1181
+__»suÉ
+ =
+NULL
+;
+
+1182 ià(*
+__s
+ != '\0')
+
+1184
+__»suÉ
+ =
+__s
+++;
+
+1185 *
+__s
+ != '\0')
+
+1186 ià(*
+__s
+++ =ð
+__£p
+)
+
+1188
+__s
+[-1] = '\0';
+
+1192 *
+__Ãx
+ =
+__s
+;
+
+1193 
+__»suÉ
+;
+
+1194
+ }
+}
+
+1195 #ià
+defšed
+
+__USE_POSIX
+ || defšed
+__USE_MISC
+
+
+1196 
+ #¡¹ok_r
+(
+s
+,
+£p
+,
+Ãx
+ `__¡¹ok_r
+ (s, s•,‚ex)
+
+ )
+
+1201 #ià!
+defšed
+
+_HAVE_STRING_ARCH_¡r£p
+ || defšed
+_FORCE_INLINES
+
+
+1202 #iâdeà
+_HAVE_STRING_ARCH_¡r£p
+
+
+1204 *
+__¡r£p_g
+ (**
+__¡ršgp
+,
+__cÚ¡
+ *
+__d–im
+);
+
+1205 
+ #__¡r£p
+(
+s
+,
+»jeù
+) \
+
+1206
+__ex‹nsiÚ__
+ \
+
+1207 ({ 
+__r0
+,
+__r1
+,
+__r2
+; \
+
+1208 (
+ `__bužtš_cÚ¡ªt_p
+ (
+»jeù
+è&&
+ `__¡ršg2_1b±r_p
+ (reject) \
+
+1209 && (
+__r0
+ = ((
+__cÚ¡
+ *è(
+»jeù
+))[0], \
+
+1210 ((
+__cÚ¡
+ *è(
+»jeù
+))[0] != '\0') \
+
+1211 ? ((
+__r1
+ = ((
+__cÚ¡
+ *è(
+»jeù
+))[1], \
+
+1212 ((
+__cÚ¡
+ *è(
+»jeù
+))[1] == '\0') \
+
+1213 ?
+ `__¡r£p_1c
+ (
+s
+,
+__r0
+) \
+
+1214 : ((
+__r2
+ = ((
+__cÚ¡
+ *è(
+»jeù
+))[2], __r2 == '\0') \
+
+1215 ?
+ `__¡r£p_2c
+ (
+s
+,
+__r0
+,
+__r1
+) \
+
+1216 : (((
+__cÚ¡
+ *è(
+»jeù
+))[3] == '\0' \
+
+1217 ?
+ `__¡r£p_3c
+ (
+s
+,
+__r0
+,
+__r1
+,
+__r2
+) \
+
+1218 :
+ `__¡r£p_g
+ (
+s
+,
+»jeù
+)))) \
+
+1219 :
+ `__¡r£p_g
+ (
+s
+,
+»jeù
+)); })
+
+ )
+
+1222
+__STRING_INLINE
+ *
+__¡r£p_1c
+ (**
+__s
+, 
+__»jeù
+);
+
+1223
+__STRING_INLINE
+ *
+
+1224
+ $__¡r£p_1c
+ (**
+__s
+, 
+__»jeù
+)
+
+1226 *
+__»tv®
+ = *
+__s
+;
+
+1227 ià(
+__»tv®
+ !ð
+NULL
+ && (*
+__s
+ =
+ `¡rchr
+ (__»tv®,
+__»jeù
+)) != NULL)
+
+1228 *(*
+__s
+)++ = '\0';
+
+1229 
+__»tv®
+;
+
+1230
+ }
+}
+
+1232
+__STRING_INLINE
+ *
+__¡r£p_2c
+ (**
+__s
+, 
+__»jeù1
+, 
+__»jeù2
+);
+
+1233
+__STRING_INLINE
+ *
+
+1234
+ $__¡r£p_2c
+ (**
+__s
+, 
+__»jeù1
+, 
+__»jeù2
+)
+
+1236 *
+__»tv®
+ = *
+__s
+;
+
+1237 ià(
+__»tv®
+ !ð
+NULL
+)
+
+1239 *
+__ý
+ =
+__»tv®
+;
+
+1242 ià(*
+__ý
+ == '\0')
+
+1244
+__ý
+ =
+NULL
+;
+
+1247 ià(*
+__ý
+ =ð
+__»jeù1
+ || *__ý =ð
+__»jeù2
+)
+
+1249 *
+__ý
+++ = '\0';
+
+1252 ++
+__ý
+;
+
+1254 *
+__s
+ =
+__ý
+;
+
+1256 
+__»tv®
+;
+
+1257
+ }
+}
+
+1259
+__STRING_INLINE
+ *
+__¡r£p_3c
+ (**
+__s
+, 
+__»jeù1
+, 
+__»jeù2
+,
+
+1260 
+__»jeù3
+);
+
+1261
+__STRING_INLINE
+ *
+
+1262
+ $__¡r£p_3c
+ (**
+__s
+, 
+__»jeù1
+, 
+__»jeù2
+, 
+__»jeù3
+)
+
+1264 *
+__»tv®
+ = *
+__s
+;
+
+1265 ià(
+__»tv®
+ !ð
+NULL
+)
+
+1267 *
+__ý
+ =
+__»tv®
+;
+
+1270 ià(*
+__ý
+ == '\0')
+
+1272
+__ý
+ =
+NULL
+;
+
+1275 ià(*
+__ý
+ =ð
+__»jeù1
+ || *__ý =ð
+__»jeù2
+ || *__ý =ð
+__»jeù3
+)
+
+1277 *
+__ý
+++ = '\0';
+
+1280 ++
+__ý
+;
+
+1282 *
+__s
+ =
+__ý
+;
+
+1284 
+__»tv®
+;
+
+1285
+ }
+}
+
+1286 #ifdeà
+__USE_BSD
+
+
+1287 
+ #¡r£p
+(
+s
+,
+»jeù
+ `__¡r£p
+ (s,„ejeù)
+
+ )
+
+1294 #ifdeà
+__USE_MISC
+
+
+1296 #ià!
+defšed
+
+_HAVE_STRING_ARCH_¡rdup
+ || !defšed
+_HAVE_STRING_ARCH_¡ºdup
+
+
+1297 
+ #__Ãed_m®loc_ªd_ÿÎoc
+
+
+ )
+
+1298 
+ ~<¡dlib.h
+>
+
+1301 #iâdeà
+_HAVE_STRING_ARCH_¡rdup
+
+
+1303 *
+ $__¡rdup
+ (
+__cÚ¡
+ *
+__¡ršg
+__THROW
+
+__©Œibu‹_m®loc__
+;
+
+1304 
+ #__¡rdup
+(
+s
+) \
+
+1305 (
+ `__ex‹nsiÚ__
+ (
+ `__bužtš_cÚ¡ªt_p
+ (
+s
+è&&
+ `__¡ršg2_1b±r_p
+ (s) \
+
+1306 ? (((
+__cÚ¡
+ *è(
+s
+))[0] == '\0' \
+
+1307 ? (*è
+ `ÿÎoc
+ ((
+size_t
+) 1, (size_t) 1) \
+
+1308 : ({
+size_t
+
+__Ën
+ =
+ `¡¾’
+ (
+s
+) + 1; \
+
+1309 *
+__»tv®
+ = (*è
+ `m®loc
+ (
+__Ën
+); \
+
+1310 ià(
+__»tv®
+ !ð
+NULL
+) \
+
+1311
+__»tv®
+ = (*è
+ `memýy
+ (__»tv®,
+s
+,
+__Ën
+); \
+
+1312
+__»tv®
+;
+ }
+})) \
+
+1313 :
+ `__¡rdup
+ (
+s
+)))
+
+ )
+
+1315 #ià
+defšed
+
+__USE_SVID
+ || defšed
+__USE_BSD
+ || defšed
+__USE_XOPEN_EXTENDED
+
+
+1316 
+ #¡rdup
+(
+s
+ `__¡rdup
+ (s)
+
+ )
+
+1320 #iâdeà
+_HAVE_STRING_ARCH_¡ºdup
+
+
+1322 *
+ $__¡ºdup
+ (
+__cÚ¡
+ *
+__¡ršg
+,
+size_t
+
+__n
+)
+
+1323
+__THROW
+
+__©Œibu‹_m®loc__
+;
+
+1324 
+ #__¡ºdup
+(
+s
+,
+n
+) \
+
+1325 (
+ `__ex‹nsiÚ__
+ (
+ `__bužtš_cÚ¡ªt_p
+ (
+s
+è&&
+ `__¡ršg2_1b±r_p
+ (s) \
+
+1326 ? (((
+__cÚ¡
+ *è(
+s
+))[0] == '\0' \
+
+1327 ? (*è
+ `ÿÎoc
+ ((
+size_t
+) 1, (size_t) 1) \
+
+1328 : ({
+size_t
+
+__Ën
+ =
+ `¡¾’
+ (
+s
+) + 1; \
+
+1329
+size_t
+
+__n
+ = (
+n
+); \
+
+1330 *
+__»tv®
+; \
+
+1331 ià(
+__n
+ <
+__Ën
+) \
+
+1332
+__Ën
+ =
+__n
+ + 1; \
+
+1333
+__»tv®
+ = (*è
+ `m®loc
+ (
+__Ën
+); \
+
+1334 ià(
+__»tv®
+ !ð
+NULL
+) \
+
+1336
+__»tv®
+[
+__Ën
+ - 1] = '\0'; \
+
+1337
+__»tv®
+ = (*è
+ `memýy
+ (__»tv®,
+s
+, \
+
+1338
+__Ën
+ - 1); \
+
+1340
+__»tv®
+;
+ }
+})) \
+
+1341 :
+ `__¡ºdup
+ (
+s
+,
+n
+)))
+
+ )
+
+1343 #ifdeà
+__USE_GNU
+
+
+1344 
+ #¡ºdup
+(
+s
+,
+n
+ `__¡ºdup
+ (s,‚)
+
+ )
+
+1350 #iâdeà
+_FORCE_INLINES
+
+
+1351 #undeà
+__STRING_INLINE
+
+
+ @/usr/include/bits/string3.h
+
+19 #iâdeà
+_STRING_H
+
+
+23
+__w¬ndeþ
+ (
+__w¬n_mem£t_z”o_Ën
+,
+
+26 #iâdeà
+__ýlu¥lus
+
+
+30 #undeà
+memýy
+
+
+31 #undeà
+memmove
+
+
+32 #undeà
+mem£t
+
+
+33 #undeà
+¡rÿt
+
+
+34 #undeà
+¡rýy
+
+
+35 #undeà
+¡ºÿt
+
+
+36 #undeà
+¡ºýy
+
+
+37 #ifdeà
+__USE_GNU
+
+
+38 #undeà
+mempýy
+
+
+39 #undeà
+¡pýy
+
+
+41 #ifdeà
+__USE_BSD
+
+
+42 #undeà
+bcÝy
+
+
+43 #undeà
+bz”o
+
+
+48
+__ex‹º_®ways_šlše
+ *
+
+49
+__NTH
+ (
+ $memýy
+ (*
+__»¡riù
+
+__de¡
+,
+__cÚ¡
+ *__»¡riù
+__¤c
+,
+
+50
+size_t
+
+__Ën
+))
+
+52 
+ `__bužtš___memýy_chk
+ (
+__de¡
+,
+__¤c
+,
+__Ën
+,
+ `__bos0
+ (__dest));
+
+53
+ }
+}
+
+55
+__ex‹º_®ways_šlše
+ *
+
+56
+__NTH
+ (
+ $memmove
+ (*
+__»¡riù
+
+__de¡
+,
+__cÚ¡
+ *__»¡riù
+__¤c
+,
+
+57
+size_t
+
+__Ën
+))
+
+59 
+ `__bužtš___memmove_chk
+ (
+__de¡
+,
+__¤c
+,
+__Ën
+,
+ `__bos0
+ (__dest));
+
+60
+ }
+}
+
+62 #ifdeà
+__USE_GNU
+
+
+63
+__ex‹º_®ways_šlše
+ *
+
+64
+__NTH
+ (
+ $mempýy
+ (*
+__»¡riù
+
+__de¡
+,
+__cÚ¡
+ *__»¡riù
+__¤c
+,
+
+65
+size_t
+
+__Ën
+))
+
+67 
+ `__bužtš___mempýy_chk
+ (
+__de¡
+,
+__¤c
+,
+__Ën
+,
+ `__bos0
+ (__dest));
+
+68
+ }
+}
+
+77
+__ex‹º_®ways_šlše
+ *
+
+78
+__NTH
+ (
+ $mem£t
+ (*
+__de¡
+, 
+__ch
+,
+size_t
+
+__Ën
+))
+
+80 ià(
+ `__bužtš_cÚ¡ªt_p
+ (
+__Ën
+) && __len == 0
+
+81 && (!
+ `__bužtš_cÚ¡ªt_p
+ (
+__ch
+) || __ch != 0))
+
+83
+ `__w¬n_mem£t_z”o_Ën
+ ();
+
+84 
+__de¡
+;
+
+86 
+ `__bužtš___mem£t_chk
+ (
+__de¡
+,
+__ch
+,
+__Ën
+,
+ `__bos0
+ (__dest));
+
+87
+ }
+}
+
+89 #ifdeà
+__USE_BSD
+
+
+90
+__ex‹º_®ways_šlše
+ 
+
+91
+__NTH
+ (
+ $bcÝy
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__¤c
+, *__»¡riù
+__de¡
+,
+
+92
+size_t
+
+__Ën
+))
+
+94 (è
+ `__bužtš___memmove_chk
+ (
+__de¡
+,
+__¤c
+,
+__Ën
+,
+ `__bos0
+ (__dest));
+
+95
+ }
+}
+
+97
+__ex‹º_®ways_šlše
+ 
+
+98
+__NTH
+ (
+ $bz”o
+ (*
+__de¡
+,
+size_t
+
+__Ën
+))
+
+100 (è
+ `__bužtš___mem£t_chk
+ (
+__de¡
+, '\0',
+__Ën
+,
+ `__bos0
+ (__dest));
+
+101
+ }
+}
+
+104
+__ex‹º_®ways_šlše
+ *
+
+105
+__NTH
+ (
+ $¡rýy
+ (*
+__»¡riù
+
+__de¡
+,
+__cÚ¡
+ *__»¡riù
+__¤c
+))
+
+107 
+ `__bužtš___¡rýy_chk
+ (
+__de¡
+,
+__¤c
+,
+ `__bos
+ (__dest));
+
+108
+ }
+}
+
+110 #ifdeà
+__USE_GNU
+
+
+111
+__ex‹º_®ways_šlše
+ *
+
+112
+__NTH
+ (
+ $¡pýy
+ (*
+__»¡riù
+
+__de¡
+,
+__cÚ¡
+ *__»¡riù
+__¤c
+))
+
+114 
+ `__bužtš___¡pýy_chk
+ (
+__de¡
+,
+__¤c
+,
+ `__bos
+ (__dest));
+
+115
+ }
+}
+
+119
+__ex‹º_®ways_šlše
+ *
+
+120
+__NTH
+ (
+ $¡ºýy
+ (*
+__»¡riù
+
+__de¡
+,
+__cÚ¡
+ *__»¡riù
+__¤c
+,
+
+121
+size_t
+
+__Ën
+))
+
+123 
+ `__bužtš___¡ºýy_chk
+ (
+__de¡
+,
+__¤c
+,
+__Ën
+,
+ `__bos
+ (__dest));
+
+124
+ }
+}
+
+127 *
+ $__¡²ýy_chk
+ (*
+__de¡
+,
+__cÚ¡
+ *
+__¤c
+,
+size_t
+
+__n
+,
+
+128
+size_t
+
+__de¡Ën
+__THROW
+;
+
+129 *
+ `__REDIRECT_NTH
+ (
+__¡²ýy_®Ÿs
+, (*
+__de¡
+,
+
+130
+__cÚ¡
+ *
+__¤c
+,
+
+131
+size_t
+
+__n
+),
+¡²ýy
+);
+
+133
+__ex‹º_®ways_šlše
+ *
+
+134
+ `__NTH
+ (
+ $¡²ýy
+ (*
+__de¡
+,
+__cÚ¡
+ *
+__¤c
+,
+size_t
+
+__n
+))
+
+136 ià(
+ `__bos
+ (
+__de¡
+è!ð(
+size_t
+) -1
+
+137 && (!
+ `__bužtš_cÚ¡ªt_p
+ (
+__n
+è|| __À<ð
+ `__bos
+ (
+__de¡
+)))
+
+138 
+ `__¡²ýy_chk
+ (
+__de¡
+,
+__¤c
+,
+__n
+,
+ `__bos
+ (__dest));
+
+139 
+ `__¡²ýy_®Ÿs
+ (
+__de¡
+,
+__¤c
+,
+__n
+);
+
+140
+ }
+}
+
+143
+__ex‹º_®ways_šlše
+ *
+
+144
+__NTH
+ (
+ $¡rÿt
+ (*
+__»¡riù
+
+__de¡
+,
+__cÚ¡
+ *__»¡riù
+__¤c
+))
+
+146 
+ `__bužtš___¡rÿt_chk
+ (
+__de¡
+,
+__¤c
+,
+ `__bos
+ (__dest));
+
+147
+ }
+}
+
+150
+__ex‹º_®ways_šlše
+ *
+
+151
+__NTH
+ (
+ $¡ºÿt
+ (*
+__»¡riù
+
+__de¡
+,
+__cÚ¡
+ *__»¡riù
+__¤c
+,
+
+152
+size_t
+
+__Ën
+))
+
+154 
+ `__bužtš___¡ºÿt_chk
+ (
+__de¡
+,
+__¤c
+,
+__Ën
+,
+ `__bos
+ (__dest));
+
+155
+ }
+}
+
+ @/usr/include/bits/sys_errlist.h
+
+20 #iâdeà
+_STDIO_H
+
+
+26 #ifdeà
+__USE_BSD
+
+
+27 
+sys_ü
+;
+
+28
+__cÚ¡
+ *__cÚ¡
+sys_”¾i¡
+[];
+
+30 #ifdeà
+__USE_GNU
+
+
+31 
+_sys_ü
+;
+
+32
+__cÚ¡
+ *__cÚ¡
+_sys_”¾i¡
+[];
+
+ @/usr/include/bits/types.h
+
+24 #iâdef
+_BITS_TYPES_H
+
+
+25 
+ #_BITS_TYPES_H
+ 1
+
+ )
+
+27 
+ ~<ã©u»s.h
+>
+
+28 
+ ~<b™s/wÜdsize.h
+>
+
+31 
+ t__u_ch¬
+;
+
+32 
+ t__u_shÜt
+;
+
+33 
+ t__u_št
+;
+
+34 
+ t__u_lÚg
+;
+
+37 sigÃd 
+ t__št8_t
+;
+
+38 
+ t__ušt8_t
+;
+
+39 sigÃd 
+ t__št16_t
+;
+
+40 
+ t__ušt16_t
+;
+
+41 sigÃd 
+ t__št32_t
+;
+
+42 
+ t__ušt32_t
+;
+
+43 #ià
+__WORDSIZE
+ == 64
+
+44 sigÃd 
+ t__št64_t
+;
+
+45 
+ t__ušt64_t
+;
+
+46 #–ià
+defšed
+
+__GLIBC_HAVE_LONG_LONG
+
+
+47
+__ex‹nsiÚ__
+ sigÃd 
+ t__št64_t
+;
+
+48
+__ex‹nsiÚ__
+ 
+ t__ušt64_t
+;
+
+52 #ià
+__WORDSIZE
+ == 64
+
+53 
+ t__quad_t
+;
+
+54 
+ t__u_quad_t
+;
+
+55 #–ià
+defšed
+
+__GLIBC_HAVE_LONG_LONG
+
+
+56
+__ex‹nsiÚ__
+ 
+ t__quad_t
+;
+
+57
+__ex‹nsiÚ__
+ 
+ t__u_quad_t
+;
+
+61 
+ m__v®
+[2];
+
+62 }
+ t__quad_t
+;
+
+65
+__u_lÚg
+
+ m__v®
+[2];
+
+66 }
+ t__u_quad_t
+;
+
+99 
+ #__S16_TYPE
+ 
+
+ )
+
+100 
+ #__U16_TYPE
+ 
+
+ )
+
+101 
+ #__S32_TYPE
+ 
+
+ )
+
+102 
+ #__U32_TYPE
+ 
+
+ )
+
+103 
+ #__SLONGWORD_TYPE
+ 
+
+ )
+
+104 
+ #__ULONGWORD_TYPE
+ 
+
+ )
+
+105 #ià
+__WORDSIZE
+ == 32
+
+106 
+ #__SQUAD_TYPE
+
+__quad_t
+
+
+ )
+
+107 
+ #__UQUAD_TYPE
+
+__u_quad_t
+
+
+ )
+
+108 
+ #__SWORD_TYPE
+ 
+
+ )
+
+109 
+ #__UWORD_TYPE
+ 
+
+ )
+
+110 
+ #__SLONG32_TYPE
+ 
+
+ )
+
+111 
+ #__ULONG32_TYPE
+ 
+
+ )
+
+112 
+ #__S64_TYPE
+
+__quad_t
+
+
+ )
+
+113 
+ #__U64_TYPE
+
+__u_quad_t
+
+
+ )
+
+116 
+ #__STD_TYPE
+
+__ex‹nsiÚ__
+ 
+
+ )
+
+117 #–ià
+__WORDSIZE
+ == 64
+
+118 
+ t__SQUAD_TYPE
+ 
+
+ )
+
+119 
+ t__UQUAD_TYPE
+ 
+
+ )
+
+120 
+ t__SWORD_TYPE
+ 
+
+ )
+
+121 
+ t__UWORD_TYPE
+ 
+
+ )
+
+122 
+ t__SLONG32_TYPE
+ 
+
+ )
+
+123 
+ t__ULONG32_TYPE
+ 
+
+ )
+
+124 
+ t__S64_TYPE
+ 
+
+ )
+
+125 
+ t__U64_TYPE
+ 
+
+ )
+
+127 
+ t__STD_TYPE
+ 
+
+ )
+
+131 
+ ~<b™s/ty³sizes.h
+>
+
+134
+__STD_TYPE
+
+ t__DEV_T_TYPE
+
+ t__dev_t
+;
+
+135
+__STD_TYPE
+
+__UID_T_TYPE
+
+ g__uid_t
+;
+
+136
+__STD_TYPE
+
+__GID_T_TYPE
+
+ g__gid_t
+;
+
+137
+__STD_TYPE
+
+__INO_T_TYPE
+
+ g__šo_t
+;
+
+138
+__STD_TYPE
+
+__INO64_T_TYPE
+
+ g__šo64_t
+;
+
+139
+__STD_TYPE
+
+__MODE_T_TYPE
+
+ g__mode_t
+;
+
+140
+__STD_TYPE
+
+__NLINK_T_TYPE
+
+ g__Æšk_t
+;
+
+141
+__STD_TYPE
+
+__OFF_T_TYPE
+
+ g__off_t
+;
+
+142
+__STD_TYPE
+
+__OFF64_T_TYPE
+
+ g__off64_t
+;
+
+143
+__STD_TYPE
+
+__PID_T_TYPE
+
+ g__pid_t
+;
+
+144
+__STD_TYPE
+
+__FSID_T_TYPE
+
+ g__fsid_t
+;
+
+145
+__STD_TYPE
+
+__CLOCK_T_TYPE
+
+ g__þock_t
+;
+
+146
+__STD_TYPE
+
+__RLIM_T_TYPE
+
+ g__¾im_t
+;
+
+147
+__STD_TYPE
+
+__RLIM64_T_TYPE
+
+ g__¾im64_t
+;
+
+148
+__STD_TYPE
+
+__ID_T_TYPE
+
+ g__id_t
+;
+
+149
+__STD_TYPE
+
+__TIME_T_TYPE
+
+ g__time_t
+;
+
+150
+__STD_TYPE
+
+__USECONDS_T_TYPE
+
+ g__u£cÚds_t
+;
+
+151
+__STD_TYPE
+
+__SUSECONDS_T_TYPE
+
+ g__su£cÚds_t
+;
+
+153
+__STD_TYPE
+
+__DADDR_T_TYPE
+
+ g__daddr_t
+;
+
+154
+__STD_TYPE
+
+__SWBLK_T_TYPE
+
+ g__swblk_t
+;
+
+155
+__STD_TYPE
+
+__KEY_T_TYPE
+
+ g__key_t
+;
+
+158
+__STD_TYPE
+
+__CLOCKID_T_TYPE
+
+ g__þockid_t
+;
+
+161
+__STD_TYPE
+
+__TIMER_T_TYPE
+
+ g__tim”_t
+;
+
+164
+__STD_TYPE
+
+__BLKSIZE_T_TYPE
+
+ g__blksize_t
+;
+
+169
+__STD_TYPE
+
+__BLKCNT_T_TYPE
+
+ g__blkút_t
+;
+
+170
+__STD_TYPE
+
+__BLKCNT64_T_TYPE
+
+ g__blkút64_t
+;
+
+173
+__STD_TYPE
+
+__FSBLKCNT_T_TYPE
+
+ g__fsblkút_t
+;
+
+174
+__STD_TYPE
+
+__FSBLKCNT64_T_TYPE
+
+ g__fsblkút64_t
+;
+
+177
+__STD_TYPE
+
+__FSFILCNT_T_TYPE
+
+ g__fsfžút_t
+;
+
+178
+__STD_TYPE
+
+__FSFILCNT64_T_TYPE
+
+ g__fsfžút64_t
+;
+
+180
+__STD_TYPE
+
+__SSIZE_T_TYPE
+
+ g__ssize_t
+;
+
+184 
+__off64_t
+
+ t__loff_t
+;
+
+185 
+__quad_t
+ *
+ t__qaddr_t
+;
+
+186 *
+ t__ÿddr_t
+;
+
+189
+__STD_TYPE
+
+__SWORD_TYPE
+
+ g__šŒ_t
+;
+
+192
+__STD_TYPE
+
+__U32_TYPE
+
+ g__sockËn_t
+;
+
+195 #undeà
+__STD_TYPE
+
+
+ @/usr/include/features.h
+
+19 #iâdef
+_FEATURES_H
+
+
+20 
+ #_FEATURES_H
+ 1
+
+ )
+
+95 #undeà
+__USE_ISOC99
+
+
+96 #undeà
+__USE_ISOC95
+
+
+97 #undeà
+__USE_POSIX
+
+
+98 #undeà
+__USE_POSIX2
+
+
+99 #undeà
+__USE_POSIX199309
+
+
+100 #undeà
+__USE_POSIX199506
+
+
+101 #undeà
+__USE_XOPEN
+
+
+102 #undeà
+__USE_XOPEN_EXTENDED
+
+
+103 #undeà
+__USE_UNIX98
+
+
+104 #undeà
+__USE_XOPEN2K
+
+
+105 #undeà
+__USE_XOPEN2K8
+
+
+106 #undeà
+__USE_LARGEFILE
+
+
+107 #undeà
+__USE_LARGEFILE64
+
+
+108 #undeà
+__USE_FILE_OFFSET64
+
+
+109 #undeà
+__USE_BSD
+
+
+110 #undeà
+__USE_SVID
+
+
+111 #undeà
+__USE_MISC
+
+
+112 #undeà
+__USE_ATFILE
+
+
+113 #undeà
+__USE_GNU
+
+
+114 #undeà
+__USE_REENTRANT
+
+
+115 #undeà
+__USE_FORTIFY_LEVEL
+
+
+116 #undeà
+__FAVOR_BSD
+
+
+117 #undeà
+__KERNEL_STRICT_NAMES
+
+
+121 #iâdeà
+_LOOSE_KERNEL_NAMES
+
+
+122 
+ #__KERNEL_STRICT_NAMES
+
+
+ )
+
+126 
+ #__USE_ANSI
+ 1
+
+ )
+
+135 #ià
+defšed
+
+__GNUC__
+ && defšed
+__GNUC_MINOR__
+
+
+136 
+ #__GNUC_PREREQ
+(
+maj
+,
+mš
+) \
+
+137 ((
+__GNUC__
+ << 16è+
+__GNUC_MINOR__
+ >ð((
+maj
+è<< 16è+ (
+mš
+))
+
+ )
+
+139 
+ #__GNUC_PREREQ
+(
+maj
+,
+mš
+è0
+
+ )
+
+144 #ià
+defšed
+
+_BSD_SOURCE
+ && \
+
+145 !(
+defšed
+
+ g_POSIX_SOURCE
+ || defšed
+ g_POSIX_C_SOURCE
+ || \
+
+146
+defšed
+
+ g_XOPEN_SOURCE
+ || defšed
+ g_XOPEN_SOURCE_EXTENDED
+ || \
+
+147
+defšed
+
+ g_GNU_SOURCE
+ || defšed
+ g_SVID_SOURCE
+)
+
+148 
+ #__FAVOR_BSD
+ 1
+
+ )
+
+152 #ifdeà
+_GNU_SOURCE
+
+
+153 #undeà
+_ISOC99_SOURCE
+
+
+154 
+ #_ISOC99_SOURCE
+ 1
+
+ )
+
+155 #undeà
+_POSIX_SOURCE
+
+
+156 
+ #_POSIX_SOURCE
+ 1
+
+ )
+
+157 #undeà
+_POSIX_C_SOURCE
+
+
+158 
+ #_POSIX_C_SOURCE
+ 200809L
+
+ )
+
+159 #undeà
+_XOPEN_SOURCE
+
+
+160 
+ #_XOPEN_SOURCE
+ 700
+
+ )
+
+161 #undeà
+_XOPEN_SOURCE_EXTENDED
+
+
+162 
+ #_XOPEN_SOURCE_EXTENDED
+ 1
+
+ )
+
+163 #undeà
+_LARGEFILE64_SOURCE
+
+
+164 
+ #_LARGEFILE64_SOURCE
+ 1
+
+ )
+
+165 #undeà
+_BSD_SOURCE
+
+
+166 
+ #_BSD_SOURCE
+ 1
+
+ )
+
+167 #undeà
+_SVID_SOURCE
+
+
+168 
+ #_SVID_SOURCE
+ 1
+
+ )
+
+169 #undeà
+_ATFILE_SOURCE
+
+
+170 
+ #_ATFILE_SOURCE
+ 1
+
+ )
+
+175 #ià(!
+defšed
+
+__STRICT_ANSI__
+ && !defšed
+_ISOC99_SOURCE
+ && \
+
+176 !
+defšed
+
+ g_POSIX_SOURCE
+ && !defšed
+ g_POSIX_C_SOURCE
+ && \
+
+177 !
+defšed
+
+ g_XOPEN_SOURCE
+ && !defšed
+ g_XOPEN_SOURCE_EXTENDED
+ && \
+
+178 !
+defšed
+
+ g_BSD_SOURCE
+ && !defšed
+ g_SVID_SOURCE
+)
+
+179 
+ #_BSD_SOURCE
+ 1
+
+ )
+
+180 
+ #_SVID_SOURCE
+ 1
+
+ )
+
+187 #ià(
+defšed
+
+_ISOC99_SOURCE
+ || defšed
+_ISOC9X_SOURCE
+ \
+
+188 || (
+defšed
+
+ g__STDC_VERSION__
+ && __STDC_VERSION__ >= 199901L))
+
+189 
+ #__USE_ISOC99
+ 1
+
+ )
+
+193 #ià(
+defšed
+
+_ISOC99_SOURCE
+ || defšed
+_ISOC9X_SOURCE
+ \
+
+194 || (
+defšed
+
+__STDC_VERSION__
+ && __STDC_VERSION__ >= 199409L))
+
+195 
+ #__USE_ISOC95
+ 1
+
+ )
+
+200 #ià((!
+defšed
+
+__STRICT_ANSI__
+ || (
+_XOPEN_SOURCE
+ - 0) >= 500) && \
+
+201 !
+defšed
+
+_POSIX_SOURCE
+ && !defšed
+_POSIX_C_SOURCE
+)
+
+202 
+ #_POSIX_SOURCE
+ 1
+
+ )
+
+203 #ià
+defšed
+
+_XOPEN_SOURCE
+ && (_XOPEN_SOURCE - 0) < 500
+
+204 
+ #_POSIX_C_SOURCE
+ 2
+
+ )
+
+205 #–ià
+defšed
+
+_XOPEN_SOURCE
+ && (_XOPEN_SOURCE - 0) < 600
+
+206 
+ #_POSIX_C_SOURCE
+ 199506L
+
+ )
+
+207 #–ià
+defšed
+
+_XOPEN_SOURCE
+ && (_XOPEN_SOURCE - 0) < 700
+
+208 
+ #_POSIX_C_SOURCE
+ 200112L
+
+ )
+
+210 
+ #_POSIX_C_SOURCE
+ 200809L
+
+ )
+
+212 
+ #__USE_POSIX_IMPLICITLY
+ 1
+
+ )
+
+215 #ià
+defšed
+
+_POSIX_SOURCE
+ ||
+_POSIX_C_SOURCE
+ >ð1 || defšed
+_XOPEN_SOURCE
+
+
+216 
+ #__USE_POSIX
+ 1
+
+ )
+
+219 #ià
+defšed
+
+_POSIX_C_SOURCE
+ && _POSIX_C_SOURCE >ð2 || defšed
+_XOPEN_SOURCE
+
+
+220 
+ #__USE_POSIX2
+ 1
+
+ )
+
+223 #ià(
+_POSIX_C_SOURCE
+ - 0) >= 199309L
+
+224 
+ #__USE_POSIX199309
+ 1
+
+ )
+
+227 #ià(
+_POSIX_C_SOURCE
+ - 0) >= 199506L
+
+228 
+ #__USE_POSIX199506
+ 1
+
+ )
+
+231 #ià(
+_POSIX_C_SOURCE
+ - 0) >= 200112L
+
+232 
+ #__USE_XOPEN2K
+ 1
+
+ )
+
+233 #undeà
+__USE_ISOC99
+
+
+234 
+ #__USE_ISOC99
+ 1
+
+ )
+
+237 #ià(
+_POSIX_C_SOURCE
+ - 0) >= 200809L
+
+238 
+ #__USE_XOPEN2K8
+ 1
+
+ )
+
+239 #undeà
+_ATFILE_SOURCE
+
+
+240 
+ #_ATFILE_SOURCE
+ 1
+
+ )
+
+243 #ifdef
+_XOPEN_SOURCE
+
+
+244 
+ #__USE_XOPEN
+ 1
+
+ )
+
+245 #ià(
+_XOPEN_SOURCE
+ - 0) >= 500
+
+246 
+ #__USE_XOPEN_EXTENDED
+ 1
+
+ )
+
+247 
+ #__USE_UNIX98
+ 1
+
+ )
+
+248 #undeà
+_LARGEFILE_SOURCE
+
+
+249 
+ #_LARGEFILE_SOURCE
+ 1
+
+ )
+
+250 #ià(
+_XOPEN_SOURCE
+ - 0) >= 600
+
+251 #ià(
+_XOPEN_SOURCE
+ - 0) >= 700
+
+252 
+ #__USE_XOPEN2K8
+ 1
+
+ )
+
+254 
+ #__USE_XOPEN2K
+ 1
+
+ )
+
+255 #undeà
+__USE_ISOC99
+
+
+256 
+ #__USE_ISOC99
+ 1
+
+ )
+
+259 #ifdeà
+_XOPEN_SOURCE_EXTENDED
+
+
+260 
+ #__USE_XOPEN_EXTENDED
+ 1
+
+ )
+
+265 #ifdeà
+_LARGEFILE_SOURCE
+
+
+266 
+ #__USE_LARGEFILE
+ 1
+
+ )
+
+269 #ifdeà
+_LARGEFILE64_SOURCE
+
+
+270 
+ #__USE_LARGEFILE64
+ 1
+
+ )
+
+273 #ià
+defšed
+
+_FILE_OFFSET_BITS
+ && _FILE_OFFSET_BITS == 64
+
+274 
+ #__USE_FILE_OFFSET64
+ 1
+
+ )
+
+277 #ià
+defšed
+
+_BSD_SOURCE
+ || defšed
+_SVID_SOURCE
+
+
+278 
+ #__USE_MISC
+ 1
+
+ )
+
+281 #ifdef
+_BSD_SOURCE
+
+
+282 
+ #__USE_BSD
+ 1
+
+ )
+
+285 #ifdef
+_SVID_SOURCE
+
+
+286 
+ #__USE_SVID
+ 1
+
+ )
+
+289 #ifdef
+_ATFILE_SOURCE
+
+
+290 
+ #__USE_ATFILE
+ 1
+
+ )
+
+293 #ifdef
+_GNU_SOURCE
+
+
+294 
+ #__USE_GNU
+ 1
+
+ )
+
+297 #ià
+defšed
+
+_REENTRANT
+ || defšed
+_THREAD_SAFE
+
+
+298 
+ #__USE_REENTRANT
+ 1
+
+ )
+
+301 #ià
+defšed
+
+_FORTIFY_SOURCE
+ && _FORTIFY_SOURCE > 0 \
+
+302 &&
+__GNUC_PREREQ
+ (4, 1è&&
+defšed
+
+ g__OPTIMIZE__
+ && __OPTIMIZE__ > 0
+
+303 #ià
+_FORTIFY_SOURCE
+ > 1
+
+304 
+ #__USE_FORTIFY_LEVEL
+ 2
+
+ )
+
+306 
+ #__USE_FORTIFY_LEVEL
+ 1
+
+ )
+
+309 
+ #__USE_FORTIFY_LEVEL
+ 0
+
+ )
+
+313 
+ ~<b™s/´edefs.h
+>
+
+316 
+ #__STDC_ISO_10646__
+ 200009L
+
+ )
+
+324 #undeà
+__GNU_LIBRARY__
+
+
+325 
+ #__GNU_LIBRARY__
+ 6
+
+ )
+
+329 
+ #__GLIBC__
+ 2
+
+ )
+
+330 
+ #__GLIBC_MINOR__
+ 11
+
+ )
+
+332 
+ #__GLIBC_PREREQ
+(
+maj
+,
+mš
+) \
+
+333 ((
+__GLIBC__
+ << 16è+
+__GLIBC_MINOR__
+ >ð((
+maj
+è<< 16è+ (
+mš
+))
+
+ )
+
+336 #ià
+defšed
+
+__GNUC__
+ \
+
+337 || (
+defšed
+
+ g__PGI
+ && defšed
+ g__i386__
+ ) \
+
+338 || (
+defšed
+
+ g__INTEL_COMPILER
+ && (defšed
+ g__i386__
+ || defšed
+ g__Ÿ64__
+)) \
+
+339 || (
+defšed
+
+ g__STDC_VERSION__
+ && __STDC_VERSION__ >= 199901L)
+
+340 
+ #__GLIBC_HAVE_LONG_LONG
+ 1
+
+ )
+
+344 #iâdeà
+__ASSEMBLER__
+
+
+345 #iâdeà
+_SYS_CDEFS_H
+
+
+346 
+ ~<sys/cdefs.h
+>
+
+351 #ià
+defšed
+
+__USE_FILE_OFFSET64
+ && !defšed
+__REDIRECT
+
+
+352 
+ #__USE_LARGEFILE
+ 1
+
+ )
+
+353 
+ #__USE_LARGEFILE64
+ 1
+
+ )
+
+359 #ià
+__GNUC_PREREQ
+ (2, 7è&&
+defšed
+
+__OPTIMIZE__
+ \
+
+360 && !
+defšed
+
+ g__OPTIMIZE_SIZE__
+ && !defšed
+ g__NO_INLINE__
+ \
+
+361 &&
+defšed
+
+ g__ex‹º_šlše
+
+
+362 
+ #__USE_EXTERN_INLINES
+ 1
+
+ )
+
+367 #ià
+__GNUC_PREREQ
+ (2, 7è&&
+defšed
+
+__OPTIMIZE__
+ \
+
+368 && (
+defšed
+
+ g_LIBC
+ || !defšed
+ g__OPTIMIZE_SIZE__
+è&& !defšed
+ g__NO_INLINE__
+ \
+
+369 &&
+defšed
+
+ g__ex‹º_šlše
+
+
+370 
+ #__USE_EXTERN_INLINES_IN_LIBC
+ 1
+
+ )
+
+378 
+ ~<gnu/¡ubs.h
+>
+
+ @/usr/include/getopt.h
+
+21 #iâdeà
+_GETOPT_H
+
+
+23 #iâdeà
+__Ãed_g‘Ýt
+
+
+24 
+ #_GETOPT_H
+ 1
+
+ )
+
+34 #ià!
+defšed
+
+__GNU_LIBRARY__
+
+
+35 
+ ~<ùy³.h
+>
+
+38 #iâdeà
+__THROW
+
+
+39 #iâdeà
+__GNUC_PREREQ
+
+
+40 
+ #__GNUC_PREREQ
+(
+maj
+,
+mš
+è(0)
+
+ )
+
+42 #ià
+defšed
+
+__ýlu¥lus
+ &&
+__GNUC_PREREQ
+ (2,8)
+
+43 
+ #__THROW
+
+ `throw
+ ()
+
+ )
+
+45 
+ #__THROW
+
+
+ )
+
+49 #ifdef
+__ýlu¥lus
+
+
+59 *
+Ýrg
+;
+
+73 
+Ýtšd
+;
+
+78 
+Ý‹¼
+;
+
+82 
+ÝtÝt
+;
+
+84 #iâdeà
+__Ãed_g‘Ýt
+
+
+106 
+ sÝtiÚ
+
+
+108 cÚ¡ *
+ gÇme
+;
+
+111 
+ ghas_¬g
+;
+
+112 *
+ gæag
+;
+
+113 
+ gv®
+;
+
+118 
+ #no_¬gum’t
+ 0
+
+ )
+
+119 
+ #»quœed_¬gum’t
+ 1
+
+ )
+
+120 
+ #ÝtiÚ®_¬gum’t
+ 2
+
+ )
+
+148 #ifdeà
+__GNU_LIBRARY__
+
+
+152 
+g‘Ýt
+ (
+___¬gc
+, *cÚ¡ *
+___¬gv
+, cÚ¡ *
+__shÜtÝts
+)
+
+153
+__THROW
+;
+
+155 #ià
+defšed
+
+__Ãed_g‘Ýt
+ && defšed
+__USE_POSIX2
+ \
+
+156 && !
+defšed
+
+ g__USE_POSIX_IMPLICITLY
+ && !defšed
+ g__USE_GNU
+
+
+160 #ifdeà
+__REDIRECT
+
+
+161 
+__REDIRECT
+ (
+g‘Ýt
+, (
+___¬gc
+, *cÚ¡ *
+___¬gv
+,
+
+162 cÚ¡ *
+__shÜtÝts
+),
+
+163
+__posix_g‘Ýt
+__THROW
+;
+
+165 
+__posix_g‘Ýt
+ (
+___¬gc
+, *cÚ¡ *
+___¬gv
+,
+
+166 cÚ¡ *
+__shÜtÝts
+__THROW
+;
+
+167 
+ #g‘Ýt
+
+__posix_g‘Ýt
+
+
+ )
+
+171 
+g‘Ýt
+ ();
+
+174 #iâdeà
+__Ãed_g‘Ýt
+
+
+175 
+g‘Ýt_lÚg
+ (
+___¬gc
+, *cÚ¡ *
+___¬gv
+,
+
+176 cÚ¡ *
+__shÜtÝts
+,
+
+177 cÚ¡ 
+ÝtiÚ
+ *
+__lÚgÝts
+, *
+__lÚgšd
+)
+
+178
+__THROW
+;
+
+179 
+g‘Ýt_lÚg_Úly
+ (
+___¬gc
+, *cÚ¡ *
+___¬gv
+,
+
+180 cÚ¡ *
+__shÜtÝts
+,
+
+181 cÚ¡ 
+ÝtiÚ
+ *
+__lÚgÝts
+, *
+__lÚgšd
+)
+
+182
+__THROW
+;
+
+186 #ifdef
+__ýlu¥lus
+
+
+191 #undeà
+__Ãed_g‘Ýt
+
+
+ @/usr/include/libio.h
+
+29 #iâdeà
+_IO_STDIO_H
+
+
+30 
+ #_IO_STDIO_H
+
+
+ )
+
+32 
+ ~<_G_cÚfig.h
+>
+
+34 
+ #_IO_pos_t
+
+_G_åos_t
+
+
+ )
+
+35 
+ #_IO_åos_t
+
+_G_åos_t
+
+
+ )
+
+36 
+ #_IO_åos64_t
+
+_G_åos64_t
+
+
+ )
+
+37 
+ #_IO_size_t
+
+_G_size_t
+
+
+ )
+
+38 
+ #_IO_ssize_t
+
+_G_ssize_t
+
+
+ )
+
+39 
+ #_IO_off_t
+
+_G_off_t
+
+
+ )
+
+40 
+ #_IO_off64_t
+
+_G_off64_t
+
+
+ )
+
+41 
+ #_IO_pid_t
+
+_G_pid_t
+
+
+ )
+
+42 
+ #_IO_uid_t
+
+_G_uid_t
+
+
+ )
+
+43 
+ #_IO_icÚv_t
+
+_G_icÚv_t
+
+
+ )
+
+44 
+ #_IO_HAVE_SYS_WAIT
+
+_G_HAVE_SYS_WAIT
+
+
+ )
+
+45 
+ #_IO_HAVE_ST_BLKSIZE
+
+_G_HAVE_ST_BLKSIZE
+
+
+ )
+
+46 
+ #_IO_BUFSIZ
+
+_G_BUFSIZ
+
+
+ )
+
+47 
+ #_IO_va_li¡
+
+_G_va_li¡
+
+
+ )
+
+48 
+ #_IO_wšt_t
+
+_G_wšt_t
+
+
+ )
+
+50 #ifdeà
+_G_NEED_STDARG_H
+
+
+52 
+ #__Ãed___va_li¡
+
+
+ )
+
+53 
+ ~<¡d¬g.h
+>
+
+54 #ifdeà
+__GNUC_VA_LIST
+
+
+55 #undeà
+_IO_va_li¡
+
+
+56 
+ #_IO_va_li¡
+
+__gnuc_va_li¡
+
+
+ )
+
+60 #iâdeà
+__P
+
+
+61 #ià
+_G_HAVE_SYS_CDEFS
+
+
+62 
+ ~<sys/cdefs.h
+>
+
+64 #ifdeà
+__STDC__
+
+
+65 
+ #__P
+(
+p
+ )
+p
+
+66 
+ #__PMT
+(
+p
+ )
+p
+
+68 
+ #__P
+(
+p
+è()
+
+ )
+
+69 
+ #__PMT
+(
+p
+è()
+
+ )
+
+75 #iâdeà
+_PARAMS
+
+
+76 
+ #_PARAMS
+(
+´Ùos
+ `__P
+ÕrÙos)
+
+ )
+
+79 #iâdeà
+__STDC__
+
+
+81 cÚ¡
+
+ )
+
+84 
+ #_IO_UNIFIED_JUMPTABLES
+ 1
+
+ )
+
+85 #iâdeà
+_G_HAVE_PRINTF_FP
+
+
+86 
+ #_IO_USE_DTOA
+ 1
+
+ )
+
+89 #iâdeà
+EOF
+
+
+90 
+ #EOF
+ (-1)
+
+ )
+
+92 #iâdeà
+NULL
+
+
+93 #ià
+defšed
+
+__GNUG__
+ && \
+
+94 (
+ g__GNUC__
+ > 2 || (__GNUC__ =ð2 &&
+__GNUC_MINOR__
+ >= 8))
+
+95 
+ #NULL
+ (
+__nuÎ
+)
+
+ )
+
+97 #ià!
+defšed
+(
+__ýlu¥lus
+)
+
+98 
+ #NULL
+ ((*)0)
+
+ )
+
+100 
+ #NULL
+ (0)
+
+ )
+
+105 
+ #_IOS_INPUT
+ 1
+
+ )
+
+106 
+ #_IOS_OUTPUT
+ 2
+
+ )
+
+107 
+ #_IOS_ATEND
+ 4
+
+ )
+
+108 
+ #_IOS_APPEND
+ 8
+
+ )
+
+109 
+ #_IOS_TRUNC
+ 16
+
+ )
+
+110 
+ #_IOS_NOCREATE
+ 32
+
+ )
+
+111 
+ #_IOS_NOREPLACE
+ 64
+
+ )
+
+112 
+ #_IOS_BIN
+ 128
+
+ )
+
+120 
+ #_IO_MAGIC
+ 0xFBAD0000
+
+ )
+
+121 
+ #_OLD_STDIO_MAGIC
+ 0xFABC0000
+
+ )
+
+122 
+ #_IO_MAGIC_MASK
+ 0xFFFF0000
+
+ )
+
+123 
+ #_IO_USER_BUF
+ 1
+
+ )
+
+124 
+ #_IO_UNBUFFERED
+ 2
+
+ )
+
+125 
+ #_IO_NO_READS
+ 4
+
+ )
+
+126 
+ #_IO_NO_WRITES
+ 8
+
+ )
+
+127 
+ #_IO_EOF_SEEN
+ 0x10
+
+ )
+
+128 
+ #_IO_ERR_SEEN
+ 0x20
+
+ )
+
+129 
+ #_IO_DELETE_DONT_CLOSE
+ 0x40
+
+ )
+
+130 
+ #_IO_LINKED
+ 0x80
+
+ )
+
+131 
+ #_IO_IN_BACKUP
+ 0x100
+
+ )
+
+132 
+ #_IO_LINE_BUF
+ 0x200
+
+ )
+
+133 
+ #_IO_TIED_PUT_GET
+ 0x400
+
+ )
+
+134 
+ #_IO_CURRENTLY_PUTTING
+ 0x800
+
+ )
+
+135 
+ #_IO_IS_APPENDING
+ 0x1000
+
+ )
+
+136 
+ #_IO_IS_FILEBUF
+ 0x2000
+
+ )
+
+137 
+ #_IO_BAD_SEEN
+ 0x4000
+
+ )
+
+138 
+ #_IO_USER_LOCK
+ 0x8000
+
+ )
+
+140 
+ #_IO_FLAGS2_MMAP
+ 1
+
+ )
+
+141 
+ #_IO_FLAGS2_NOTCANCEL
+ 2
+
+ )
+
+142 #ifdeà
+_LIBC
+
+
+143 
+ #_IO_FLAGS2_FORTIFY
+ 4
+
+ )
+
+145 
+ #_IO_FLAGS2_USER_WBUF
+ 8
+
+ )
+
+146 #ifdeà
+_LIBC
+
+
+147 
+ #_IO_FLAGS2_SCANF_STD
+ 16
+
+ )
+
+151 
+ #_IO_SKIPWS
+ 01
+
+ )
+
+152 
+ #_IO_LEFT
+ 02
+
+ )
+
+153 
+ #_IO_RIGHT
+ 04
+
+ )
+
+154 
+ #_IO_INTERNAL
+ 010
+
+ )
+
+155 
+ #_IO_DEC
+ 020
+
+ )
+
+156 
+ #_IO_OCT
+ 040
+
+ )
+
+157 
+ #_IO_HEX
+ 0100
+
+ )
+
+158 
+ #_IO_SHOWBASE
+ 0200
+
+ )
+
+159 
+ #_IO_SHOWPOINT
+ 0400
+
+ )
+
+160 
+ #_IO_UPPERCASE
+ 01000
+
+ )
+
+161 
+ #_IO_SHOWPOS
+ 02000
+
+ )
+
+162 
+ #_IO_SCIENTIFIC
+ 04000
+
+ )
+
+163 
+ #_IO_FIXED
+ 010000
+
+ )
+
+164 
+ #_IO_UNITBUF
+ 020000
+
+ )
+
+165 
+ #_IO_STDIO
+ 040000
+
+ )
+
+166 
+ #_IO_DONT_CLOSE
+ 0100000
+
+ )
+
+167 
+ #_IO_BOOLALPHA
+ 0200000
+
+ )
+
+170 
+_IO_jump_t
+; 
+ g_IO_FILE
+;
+
+173 #ifdeà
+_IO_MTSAFE_IO
+
+
+174 #ià
+defšed
+
+__GLIBC__
+ && __GLIBC__ >= 2
+
+175 
+ ~<b™s/¡dio-lock.h
+>
+
+180 
+ t_IO_lock_t
+;
+
+186 
+ s_IO_m¬k”
+ {
+
+187 
+_IO_m¬k”
+ *
+ m_Ãxt
+;
+
+188 
+_IO_FILE
+ *
+ m_sbuf
+;
+
+192 
+ m_pos
+;
+
+194 
+£t_¡»ampos
+(
+¡»ampos
+
+è{
+ m_¥os
+ = sp; }
+
+195 
+£t_off£t
+(
+off£t
+è{
+ m_pos
+ = off£t;
+ m_¥os
+ = (
+¡»ampos
+)(-2); }
+
+196
+ mpublic
+:
+
+197
+¡»amm¬k”
+(
+¡»ambuf
+ *
+sb
+);
+
+198 ~
+¡»amm¬k”
+();
+
+199 
+§všg
+(è{ 
+ m_¥os
+ == -2; }
+
+200 
+d–
+(
+¡»amm¬k”
+&);
+
+201 
+d–
+();
+
+206
+ e__codecvt_»suÉ
+
+
+208
+ m__codecvt_ok
+,
+
+209
+ m__codecvt_·¹Ÿl
+,
+
+210
+ m__codecvt_”rÜ
+,
+
+211
+ m__codecvt_nocÚv
+
+
+214 #ià
+defšed
+
+_LIBC
+ || defšed
+_GLIBCPP_USE_WCHAR_T
+
+
+217 
+ s_IO_codecvt
+
+
+219 (*
+ m__codecvt_de¡r
+è(
+ m_IO_codecvt
+ *);
+
+220
+__codecvt_»suÉ
+ (*
+__codecvt_do_out
+è(
+ m_IO_codecvt
+ *,
+
+221
+ m__mb¡©e_t
+ *,
+
+222 cÚ¡
+ mwch¬_t
+ *,
+
+223 cÚ¡
+ mwch¬_t
+ *,
+
+224 cÚ¡
+ mwch¬_t
+ **, *,
+
+226
+__codecvt_»suÉ
+ (*
+__codecvt_do_unshiá
+è(
+ m_IO_codecvt
+ *,
+
+227
+ m__mb¡©e_t
+ *, *,
+
+229
+__codecvt_»suÉ
+ (*
+__codecvt_do_š
+è(
+ m_IO_codecvt
+ *,
+
+230
+ m__mb¡©e_t
+ *,
+
+232 cÚ¡ **,
+ mwch¬_t
+ *,
+
+233
+ mwch¬_t
+ *, wchar_t **);
+
+234 (*
+ m__codecvt_do_’codšg
+è(
+ m_IO_codecvt
+ *);
+
+235 (*
+ m__codecvt_do_®ways_nocÚv
+è(
+ m_IO_codecvt
+ *);
+
+236 (*
+ m__codecvt_do_Ëngth
+è(
+ m_IO_codecvt
+ *,
+ m__mb¡©e_t
+ *,
+
+237 cÚ¡ *, cÚ¡ *,
+ m_IO_size_t
+);
+
+238 (*
+ m__codecvt_do_max_Ëngth
+è(
+ m_IO_codecvt
+ *);
+
+240
+_IO_icÚv_t
+
+ m__cd_š
+;
+
+241
+_IO_icÚv_t
+
+ m__cd_out
+;
+
+245 
+ s_IO_wide_d©a
+
+
+247
+wch¬_t
+ *
+ m_IO_»ad_±r
+;
+
+248
+wch¬_t
+ *
+ m_IO_»ad_’d
+;
+
+249
+wch¬_t
+ *
+ m_IO_»ad_ba£
+;
+
+250
+wch¬_t
+ *
+ m_IO_wr™e_ba£
+;
+
+251
+wch¬_t
+ *
+ m_IO_wr™e_±r
+;
+
+252
+wch¬_t
+ *
+ m_IO_wr™e_’d
+;
+
+253
+wch¬_t
+ *
+ m_IO_buf_ba£
+;
+
+254
+wch¬_t
+ *
+ m_IO_buf_’d
+;
+
+256
+wch¬_t
+ *
+ m_IO_§ve_ba£
+;
+
+257
+wch¬_t
+ *
+ m_IO_backup_ba£
+;
+
+259
+wch¬_t
+ *
+ m_IO_§ve_’d
+;
+
+261
+__mb¡©e_t
+
+ m_IO_¡©e
+;
+
+262
+__mb¡©e_t
+
+ m_IO_Ï¡_¡©e
+;
+
+263 
+_IO_codecvt
+
+ m_codecvt
+;
+
+265
+wch¬_t
+
+ m_shÜtbuf
+[1];
+
+267 cÚ¡ 
+_IO_jump_t
+ *
+ m_wide_vbË
+;
+
+271 
+ s_IO_FILE
+ {
+
+272 
+ m_æags
+;
+
+273 
+ #_IO_fže_æags
+
+_æags
+
+
+ )
+
+277 *
+ m_IO_»ad_±r
+;
+
+278 *
+ m_IO_»ad_’d
+;
+
+279 *
+ m_IO_»ad_ba£
+;
+
+280 *
+ m_IO_wr™e_ba£
+;
+
+281 *
+ m_IO_wr™e_±r
+;
+
+282 *
+ m_IO_wr™e_’d
+;
+
+283 *
+ m_IO_buf_ba£
+;
+
+284 *
+ m_IO_buf_’d
+;
+
+286 *
+ m_IO_§ve_ba£
+;
+
+287 *
+ m_IO_backup_ba£
+;
+
+288 *
+ m_IO_§ve_’d
+;
+
+290 
+_IO_m¬k”
+ *
+ m_m¬k”s
+;
+
+292 
+_IO_FILE
+ *
+ m_chaš
+;
+
+294 
+ m_fž’o
+;
+
+296 
+ m_blksize
+;
+
+298 
+ m_æags2
+;
+
+300
+_IO_off_t
+
+ m_Þd_off£t
+;
+
+302 
+ #__HAVE_COLUMN
+
+
+ )
+
+304 
+ m_cur_cÞumn
+;
+
+305 sigÃd 
+ m_vbË_off£t
+;
+
+306 
+ m_shÜtbuf
+[1];
+
+310
+_IO_lock_t
+ *
+ m_lock
+;
+
+311 #ifdeà
+_IO_USE_OLD_IO_FILE
+
+
+314 
+ s_IO_FILE_com¶‘e
+
+
+316 
+_IO_FILE
+
+ m_fže
+;
+
+318 #ià
+defšed
+
+_G_IO_IO_FILE_VERSION
+ && _G_IO_IO_FILE_VERSION == 0x20001
+
+319
+_IO_off64_t
+
+ m_off£t
+;
+
+320 #ià
+defšed
+
+_LIBC
+ || defšed
+_GLIBCPP_USE_WCHAR_T
+
+
+322 
+_IO_codecvt
+ *
+ m_codecvt
+;
+
+323 
+_IO_wide_d©a
+ *
+ m_wide_d©a
+;
+
+324 
+_IO_FILE
+ *
+ m_ä“»s_li¡
+;
+
+325 *
+ m_ä“»s_buf
+;
+
+326
+size_t
+
+ m_ä“»s_size
+;
+
+328 *
+ m__·d1
+;
+
+329 *
+ m__·d2
+;
+
+330 *
+ m__·d3
+;
+
+331 *
+ m__·d4
+;
+
+332
+size_t
+
+ m__·d5
+;
+
+334 
+ m_mode
+;
+
+336 
+ m_unu£d2
+[15 *  (è- 4 *  (*è-  (
+size_t
+)];
+
+340 #iâdeà
+__ýlu¥lus
+
+
+341 
+_IO_FILE
+
+ t_IO_FILE
+;
+
+344 
+ g_IO_FILE_¶us
+;
+
+346 
+_IO_FILE_¶us
+
+_IO_2_1_¡dš_
+;
+
+347 
+_IO_FILE_¶us
+
+_IO_2_1_¡dout_
+;
+
+348 
+_IO_FILE_¶us
+
+_IO_2_1_¡d”r_
+;
+
+349 #iâdeà
+_LIBC
+
+
+350 
+ #_IO_¡dš
+ ((
+_IO_FILE
+*)(&
+_IO_2_1_¡dš_
+))
+
+ )
+
+351 
+ #_IO_¡dout
+ ((
+_IO_FILE
+*)(&
+_IO_2_1_¡dout_
+))
+
+ )
+
+352 
+ #_IO_¡d”r
+ ((
+_IO_FILE
+*)(&
+_IO_2_1_¡d”r_
+))
+
+ )
+
+354
+_IO_FILE
+ *
+_IO_¡dš
+
+©Œibu‹_hidd’
+;
+
+355
+_IO_FILE
+ *
+_IO_¡dout
+
+©Œibu‹_hidd’
+;
+
+356
+_IO_FILE
+ *
+_IO_¡d”r
+
+©Œibu‹_hidd’
+;
+
+364 
+__ssize_t
+
+ t__io_»ad_â
+ (*
+ t__cook›
+, *
+ t__buf
+,
+ tsize_t
+
+ t__nby‹s
+);
+
+372 
+__ssize_t
+
+ t__io_wr™e_â
+ (*
+ t__cook›
+,
+ t__cÚ¡
+ *
+ t__buf
+,
+
+373
+ tsize_t
+
+ t__n
+);
+
+381 
+ t__io_£ek_â
+ (*
+ t__cook›
+,
+ t_IO_off64_t
+ *
+ t__pos
+, 
+ t__w
+);
+
+384 
+ t__io_þo£_â
+ (*
+ t__cook›
+);
+
+387 #ifdeà
+_GNU_SOURCE
+
+
+389 
+__io_»ad_â
+
+ tcook›_»ad_funùiÚ_t
+;
+
+390 
+__io_wr™e_â
+
+ tcook›_wr™e_funùiÚ_t
+;
+
+391 
+__io_£ek_â
+
+ tcook›_£ek_funùiÚ_t
+;
+
+392 
+__io_þo£_â
+
+ tcook›_þo£_funùiÚ_t
+;
+
+397
+__io_»ad_â
+ *
+ m»ad
+;
+
+398
+__io_wr™e_â
+ *
+ mwr™e
+;
+
+399
+__io_£ek_â
+ *
+ m£ek
+;
+
+400
+__io_þo£_â
+ *
+ mþo£
+;
+
+401 }
+ t_IO_cook›_io_funùiÚs_t
+;
+
+402 
+_IO_cook›_io_funùiÚs_t
+
+ tcook›_io_funùiÚs_t
+;
+
+404 
+ g_IO_cook›_fže
+;
+
+407 
+_IO_cook›_š™
+ (
+_IO_cook›_fže
+ *
+__cfže
+, 
+__»ad_wr™e
+,
+
+408 *
+__cook›
+,
+_IO_cook›_io_funùiÚs_t
+
+__âs
+);
+
+412 #ifdeà
+__ýlu¥lus
+
+
+416 
+__undӾow
+ (
+_IO_FILE
+ *);
+
+417 
+__uæow
+ (
+_IO_FILE
+ *);
+
+418 
+__ovӾow
+ (
+_IO_FILE
+ *, );
+
+419 #ià
+defšed
+
+_LIBC
+ || defšed
+_GLIBCPP_USE_WCHAR_T
+
+
+420
+_IO_wšt_t
+
+__wundӾow
+ (
+_IO_FILE
+ *);
+
+421
+_IO_wšt_t
+
+__wuæow
+ (
+_IO_FILE
+ *);
+
+422
+_IO_wšt_t
+
+__wovӾow
+ (
+_IO_FILE
+ *, _IO_wint_t);
+
+425 #ià
+__GNUC__
+ >= 3
+
+426 
+ #_IO_BE
+(
+ex´
+,
+»s
+ `__bužtš_ex³ù
+ (Óx´),„es)
+
+ )
+
+428 
+ #_IO_BE
+(
+ex´
+,
+»s
+èÓx´)
+
+ )
+
+431 
+ #_IO_g‘c_uÆocked
+(
+_å
+) \
+
+432 (
+ `_IO_BE
+ ((
+_å
+)->
+_IO_»ad_±r
+ >ð(_å)->
+_IO_»ad_’d
+, 0) \
+
+433 ?
+ `__uæow
+ (
+_å
+è: *(*è(_å)->
+_IO_»ad_±r
+++)
+
+ )
+
+434 
+ #_IO_³ekc_uÆocked
+(
+_å
+) \
+
+435 (
+ `_IO_BE
+ ((
+_å
+)->
+_IO_»ad_±r
+ >ð(_å)->
+_IO_»ad_’d
+, 0) \
+
+436 &&
+ `__undӾow
+ (
+_å
+è=ð
+EOF
+ ? EOF \
+
+437 : *(*è(
+_å
+)->
+_IO_»ad_±r
+)
+
+ )
+
+438 
+ #_IO_putc_uÆocked
+(
+_ch
+,
+_å
+) \
+
+439 (
+ `_IO_BE
+ ((
+_å
+)->
+_IO_wr™e_±r
+ >ð(_å)->
+_IO_wr™e_’d
+, 0) \
+
+440 ?
+ `__ovӾow
+ (
+_å
+, (è(
+_ch
+)) \
+
+441 : (è(*(
+_å
+)->
+_IO_wr™e_±r
+++ = (
+_ch
+)))
+
+ )
+
+443 #ià
+defšed
+
+_LIBC
+ || defšed
+_GLIBCPP_USE_WCHAR_T
+
+
+444 
+ #_IO_g‘wc_uÆocked
+(
+_å
+) \
+
+445 (
+ `_IO_BE
+ ((
+_å
+)->
+_wide_d©a
+ =ð
+NULL
+ \
+
+446 || ((
+_å
+)->
+_wide_d©a
+->
+_IO_»ad_±r
+ \
+
+447 >ð(
+_å
+)->
+_wide_d©a
+->
+_IO_»ad_’d
+), 0) \
+
+448 ?
+ `__wuæow
+ (
+_å
+è: (
+_IO_wšt_t
+è*(_å)->
+_wide_d©a
+->
+_IO_»ad_±r
+++)
+
+ )
+
+449 
+ #_IO_putwc_uÆocked
+(
+_wch
+,
+_å
+) \
+
+450 (
+ `_IO_BE
+ ((
+_å
+)->
+_wide_d©a
+ =ð
+NULL
+ \
+
+451 || ((
+_å
+)->
+_wide_d©a
+->
+_IO_wr™e_±r
+ \
+
+452 >ð(
+_å
+)->
+_wide_d©a
+->
+_IO_wr™e_’d
+), 0) \
+
+453 ?
+ `__wovӾow
+ (
+_å
+,
+_wch
+) \
+
+454 : (
+_IO_wšt_t
+è(*(
+_å
+)->
+_wide_d©a
+->
+_IO_wr™e_±r
+++ = (
+_wch
+)))
+
+ )
+
+457 
+ #_IO_ãof_uÆocked
+(
+__å
+è(((__å)->
+_æags
+ &
+_IO_EOF_SEEN
+è!ð0)
+
+ )
+
+458 
+ #_IO_ã¼Ü_uÆocked
+(
+__å
+è(((__å)->
+_æags
+ &
+_IO_ERR_SEEN
+è!ð0)
+
+ )
+
+460 
+_IO_g‘c
+ (
+_IO_FILE
+ *
+__å
+);
+
+461 
+_IO_putc
+ (
+__c
+,
+_IO_FILE
+ *
+__å
+);
+
+462 
+_IO_ãof
+ (
+_IO_FILE
+ *
+__å
+__THROW
+;
+
+463 
+_IO_ã¼Ü
+ (
+_IO_FILE
+ *
+__å
+__THROW
+;
+
+465 
+_IO_³ekc_locked
+ (
+_IO_FILE
+ *
+__å
+);
+
+468 
+ #_IO_PENDING_OUTPUT_COUNT
+(
+_å
+) \
+
+469 ((
+_å
+)->
+_IO_wr™e_±r
+ - (_å)->
+_IO_wr™e_ba£
+)
+
+ )
+
+471 
+_IO_æockfže
+ (
+_IO_FILE
+ *è
+__THROW
+;
+
+472 
+_IO_fuÆockfže
+ (
+_IO_FILE
+ *è
+__THROW
+;
+
+473 
+_IO_árylockfže
+ (
+_IO_FILE
+ *è
+__THROW
+;
+
+475 #ifdeà
+_IO_MTSAFE_IO
+
+
+476 
+ #_IO_³ekc
+(
+_å
+ `_IO_³ekc_locked
+ (_å)
+
+ )
+
+477 
+ #_IO_æockfže
+(
+_å
+) \
+
+478 ià(((
+_å
+)->
+_æags
+ &
+_IO_USER_LOCK
+è=ð0è
+ `_IO_æockfže
+ (_å)
+
+ )
+
+479 
+ #_IO_fuÆockfže
+(
+_å
+) \
+
+480 ià(((
+_å
+)->
+_æags
+ &
+_IO_USER_LOCK
+è=ð0è
+ `_IO_fuÆockfže
+ (_å)
+
+ )
+
+482 
+ #_IO_³ekc
+(
+_å
+ `_IO_³ekc_uÆocked
+ (_å)
+
+ )
+
+483 
+ #_IO_æockfže
+(
+_å
+
+ )
+
+484 
+ #_IO_fuÆockfže
+(
+_å
+
+ )
+
+485 
+ #_IO_árylockfže
+(
+_å
+
+ )
+
+486 
+ #_IO_þ—nup_»giÚ_¡¬t
+(
+_fù
+,
+_å
+
+ )
+
+487 
+ #_IO_þ—nup_»giÚ_’d
+(
+_Do™
+
+ )
+
+490 
+_IO_vfsÿnf
+ (
+_IO_FILE
+ *
+__»¡riù
+, const * __restrict,
+
+491
+_IO_va_li¡
+, *
+__»¡riù
+);
+
+492 
+_IO_vårštf
+ (
+_IO_FILE
+ *
+__»¡riù
+, const *__restrict,
+
+493
+_IO_va_li¡
+);
+
+494
+_IO_ssize_t
+
+_IO_·dn
+ (
+_IO_FILE
+ *, , _IO_ssize_t);
+
+495
+_IO_size_t
+
+_IO_sg‘n
+ (
+_IO_FILE
+ *, *, _IO_size_t);
+
+497
+_IO_off64_t
+
+_IO_£ekoff
+ (
+_IO_FILE
+ *, _IO_off64_t, , );
+
+498
+_IO_off64_t
+
+_IO_£ekpos
+ (
+_IO_FILE
+ *, _IO_off64_t, );
+
+500 
+_IO_ä“_backup_¬—
+ (
+_IO_FILE
+ *è
+__THROW
+;
+
+502 #ià
+defšed
+
+_LIBC
+ || defšed
+_GLIBCPP_USE_WCHAR_T
+
+
+503
+_IO_wšt_t
+
+_IO_g‘wc
+ (
+_IO_FILE
+ *
+__å
+);
+
+504
+_IO_wšt_t
+
+_IO_putwc
+ (
+wch¬_t
+
+__wc
+,
+_IO_FILE
+ *
+__å
+);
+
+505 
+_IO_fwide
+ (
+_IO_FILE
+ *
+__å
+, 
+__mode
+__THROW
+;
+
+506 #ià
+__GNUC__
+ >= 2
+
+509 #ià
+defšed
+
+_LIBC
+ && defšed
+SHARED
+
+
+510 
+ ~<shlib-com·t.h
+>
+
+511 #ià
+SHLIB_COMPAT
+ (
+libc
+,
+GLIBC_2_0
+,
+GLIBC_2_1
+)
+
+512 
+ #_IO_fwide_maybe_šcom·tibË
+ \
+
+513 (
+ `__bužtš_ex³ù
+ (&
+_IO_¡dš_u£d
+ =ð
+NULL
+, 0))
+
+ )
+
+514 cÚ¡ 
+_IO_¡dš_u£d
+;
+
+515
+w—k_ex‹º
+ (
+_IO_¡dš_u£d
+);
+
+518 #iâdeà
+_IO_fwide_maybe_šcom·tibË
+
+
+519 
+ #_IO_fwide_maybe_šcom·tibË
+ (0)
+
+ )
+
+523 
+ #_IO_fwide
+(
+__å
+,
+__mode
+) \
+
+524 ({ 
+__»suÉ
+ = (
+__mode
+); \
+
+525 ià(
+__»suÉ
+ < 0 && !
+_IO_fwide_maybe_šcom·tibË
+) \
+
+527 ià((
+__å
+)->
+_mode
+ == 0) \
+
+529 (
+__å
+)->
+_mode
+ = -1; \
+
+530
+__»suÉ
+ = (
+__å
+)->
+_mode
+; \
+
+532 ià(
+ `__bužtš_cÚ¡ªt_p
+ (
+__mode
+) && (__mode) == 0) \
+
+533
+__»suÉ
+ =
+_IO_fwide_maybe_šcom·tibË
+ ? -1 : (
+__å
+)->
+_mode
+; \
+
+535
+__»suÉ
+ =
+ `_IO_fwide
+ (
+__å
+, __result); \
+
+536
+__»suÉ
+; })
+
+ )
+
+539 
+_IO_vfwsÿnf
+ (
+_IO_FILE
+ *
+__»¡riù
+, cÚ¡
+wch¬_t
+ * __restrict,
+
+540
+_IO_va_li¡
+, *
+__»¡riù
+);
+
+541 
+_IO_vfw´štf
+ (
+_IO_FILE
+ *
+__»¡riù
+, cÚ¡
+wch¬_t
+ *__restrict,
+
+542
+_IO_va_li¡
+);
+
+543
+_IO_ssize_t
+
+_IO_w·dn
+ (
+_IO_FILE
+ *,
+wšt_t
+, _IO_ssize_t);
+
+544 
+_IO_ä“_wbackup_¬—
+ (
+_IO_FILE
+ *è
+__THROW
+;
+
+547 #ifdeà
+__LDBL_COMPAT
+
+
+548 
+ ~<b™s/libio-ldbl.h
+>
+
+551 #ifdeà
+__ýlu¥lus
+
+
+ @/usr/include/xlocale.h
+
+21 #iâdeà
+_XLOCALE_H
+
+
+22 
+ #_XLOCALE_H
+ 1
+
+ )
+
+28 
+ s__loÿË_¡ruù
+
+
+31 
+loÿË_d©a
+ *
+ m__loÿËs
+[13];
+
+34 cÚ¡ *
+ m__ùy³_b
+;
+
+35 cÚ¡ *
+ m__ùy³_tÞow”
+;
+
+36 cÚ¡ *
+ m__ùy³_touµ”
+;
+
+39 cÚ¡ *
+ m__Çmes
+[13];
+
+40 } *
+ t__loÿË_t
+;
+
+43 
+__loÿË_t
+
+ tloÿË_t
+;
+
+ @/usr/include/_G_config.h
+
+4 #iâdeà
+_G_cÚfig_h
+
+
+5 
+ #_G_cÚfig_h
+ 1
+
+ )
+
+9 
+ ~<b™s/ty³s.h
+>
+
+10 
+ #__Ãed_size_t
+
+
+ )
+
+11 #ià
+defšed
+
+_LIBC
+ || defšed
+_GLIBCPP_USE_WCHAR_T
+
+
+12 
+ #__Ãed_wch¬_t
+
+
+ )
+
+14 
+ #__Ãed_NULL
+
+
+ )
+
+15 
+ ~<¡ddef.h
+>
+
+16 
+ #__Ãed_mb¡©e_t
+
+
+ )
+
+17 #ià
+defšed
+
+_LIBC
+ || defšed
+_GLIBCPP_USE_WCHAR_T
+
+
+18 
+ #__Ãed_wšt_t
+
+
+ )
+
+20 
+ ~<wch¬.h
+>
+
+21 
+ #_G_size_t
+
+size_t
+
+
+ )
+
+24
+__off_t
+
+ m__pos
+;
+
+25
+__mb¡©e_t
+
+ m__¡©e
+;
+
+26 }
+ t_G_åos_t
+;
+
+29
+__off64_t
+
+ m__pos
+;
+
+30
+__mb¡©e_t
+
+ m__¡©e
+;
+
+31 }
+ t_G_åos64_t
+;
+
+32 
+ #_G_ssize_t
+
+__ssize_t
+
+
+ )
+
+33 
+ #_G_off_t
+
+__off_t
+
+
+ )
+
+34 
+ #_G_off64_t
+
+__off64_t
+
+
+ )
+
+35 
+ #_G_pid_t
+
+__pid_t
+
+
+ )
+
+36 
+ #_G_uid_t
+
+__uid_t
+
+
+ )
+
+37 
+ #_G_wch¬_t
+
+wch¬_t
+
+
+ )
+
+38 
+ #_G_wšt_t
+
+wšt_t
+
+
+ )
+
+39 
+ #_G_¡©64
+
+¡©64
+
+
+ )
+
+40 #ià
+defšed
+
+_LIBC
+ || defšed
+_GLIBCPP_USE_WCHAR_T
+
+
+41 
+ ~<gcÚv.h
+>
+
+44 
+__gcÚv_šfo
+
+ m__cd
+;
+
+47 
+__gcÚv_šfo
+
+ m__cd
+;
+
+48 
+__gcÚv_¡•_d©a
+
+ m__d©a
+;
+
+49 }
+ m__combšed
+;
+
+50 }
+ t_G_icÚv_t
+;
+
+53 
+ t_G_št16_t
+
+ t__©Œibu‹__
+ ((
+ t__mode__
+ (
+ t__HI__
+)));
+
+54 
+ t_G_št32_t
+
+ t__©Œibu‹__
+ ((
+ t__mode__
+ (
+ t__SI__
+)));
+
+55 
+ t_G_ušt16_t
+
+ t__©Œibu‹__
+ ((
+ t__mode__
+ (
+ t__HI__
+)));
+
+56 
+ t_G_ušt32_t
+
+ t__©Œibu‹__
+ ((
+ t__mode__
+ (
+ t__SI__
+)));
+
+58 
+ #_G_HAVE_BOOL
+ 1
+
+ )
+
+62 
+ #_G_HAVE_ATEXIT
+ 1
+
+ )
+
+63 
+ #_G_HAVE_SYS_CDEFS
+ 1
+
+ )
+
+64 
+ #_G_HAVE_SYS_WAIT
+ 1
+
+ )
+
+65 
+ #_G_NEED_STDARG_H
+ 1
+
+ )
+
+66 
+ #_G_va_li¡
+
+__gnuc_va_li¡
+
+
+ )
+
+68 
+ #_G_HAVE_PRINTF_FP
+ 1
+
+ )
+
+69 
+ #_G_HAVE_MMAP
+ 1
+
+ )
+
+70 
+ #_G_HAVE_MREMAP
+ 1
+
+ )
+
+71 
+ #_G_HAVE_LONG_DOUBLE_IO
+ 1
+
+ )
+
+72 
+ #_G_HAVE_IO_FILE_OPEN
+ 1
+
+ )
+
+73 
+ #_G_HAVE_IO_GETLINE_INFO
+ 1
+
+ )
+
+75 
+ #_G_IO_IO_FILE_VERSION
+ 0x20001
+
+ )
+
+77 
+ #_G_OPEN64
+
+__Ý’64
+
+
+ )
+
+78 
+ #_G_LSEEK64
+
+__l£ek64
+
+
+ )
+
+79 
+ #_G_MMAP64
+
+__mm­64
+
+
+ )
+
+80 
+ #_G_FSTAT64
+(
+fd
+,
+buf
+ `__fx¡©64
+ (
+_STAT_VER
+, fd, buf)
+
+ )
+
+83 
+ #_G_HAVE_ST_BLKSIZE
+
+ `defšed
+ (
+_STATBUF_ST_BLKSIZE
+)
+
+ )
+
+85 
+ #_G_BUFSIZ
+ 8192
+
+ )
+
+88 
+ #_G_NAMES_HAVE_UNDERSCORE
+ 0
+
+ )
+
+89 
+ #_G_VTABLE_LABEL_HAS_LENGTH
+ 1
+
+ )
+
+90 
+ #_G_USING_THUNKS
+ 1
+
+ )
+
+91 
+ #_G_VTABLE_LABEL_PREFIX
+ "__vt_"
+
+ )
+
+92 
+ #_G_VTABLE_LABEL_PREFIX_ID
+
+__vt_
+
+
+ )
+
+95 #ià
+defšed
+
+__ýlu¥lus
+ || defšed
+__STDC__
+
+
+96 
+ #_G_ARGS
+(
+ARGLIST
+ )
+ARGLIST
+
+98 
+ #_G_ARGS
+(
+ARGLIST
+è()
+
+ )
+
+ @/usr/include/bits/libio-ldbl.h
+
+20 #iâdeà
+_IO_STDIO_H
+
+
+24
+ $__LDBL_REDIR_DECL
+ (
+_IO_vfsÿnf
+)
+
+25
+ `__LDBL_REDIR_DECL
+ (
+_IO_vårštf
+)
+
+ @/usr/include/bits/predefs.h
+
+19 #iâdeà
+_FEATURES_H
+
+
+23 #iâdeà
+_PREDEFS_H
+
+
+24 
+ #_PREDEFS_H
+
+
+ )
+
+27 
+ #__STDC_IEC_559__
+ 1
+
+ )
+
+28 
+ #__STDC_IEC_559_COMPLEX__
+ 1
+
+ )
+
+ @/usr/include/bits/stdio-lock.h
+
+20 #iâdeà
+_BITS_STDIO_LOCK_H
+
+
+21 
+ #_BITS_STDIO_LOCK_H
+ 1
+
+ )
+
+23 
+ ~<b™s/libc-lock.h
+>
+
+24 
+ ~<lowËv–lock.h
+>
+
+28 
+ #_IO_lock_šex³nsive
+ 1
+
+ )
+
+30 ¡ruù { 
+ mlock
+; 
+ mút
+; *
+ mowÃr
+; }
+ t_IO_lock_t
+;
+
+32 
+ #_IO_lock_š™Ÿliz”
+ {
+LLL_LOCK_INITIALIZER
+, 0,
+NULL
+ }
+
+ )
+
+34 
+ #_IO_lock_š™
+(
+_Çme
+) \
+
+35 ((
+_Çme
+èð(
+_IO_lock_t
+_IO_lock_š™Ÿliz”
+ , 0)
+
+ )
+
+37 
+ #_IO_lock_fši
+(
+_Çme
+) \
+
+38 ((è0)
+
+ )
+
+40 
+ #_IO_lock_lock
+(
+_Çme
+) \
+
+42 *
+__£lf
+ =
+THREAD_SELF
+; \
+
+43 ià((
+_Çme
+).
+owÃr
+ !ð
+__£lf
+) \
+
+45
+ `Îl_lock
+ ((
+_Çme
+).
+lock
+,
+LLL_PRIVATE
+); \
+
+46 (
+_Çme
+).
+owÃr
+ =
+__£lf
+; \
+
+48 ++(
+_Çme
+).
+út
+; \
+
+49 } 0)
+
+ )
+
+51 
+ #_IO_lock_Œylock
+(
+_Çme
+) \
+
+53 
+__»suÉ
+ = 0; \
+
+54 *
+__£lf
+ =
+THREAD_SELF
+; \
+
+55 ià((
+_Çme
+).
+owÃr
+ !ð
+__£lf
+) \
+
+57 ià(
+ `Îl_Œylock
+ ((
+_Çme
+).
+lock
+) == 0) \
+
+59 (
+_Çme
+).
+owÃr
+ =
+__£lf
+; \
+
+60 (
+_Çme
+).
+út
+ = 1; \
+
+63
+__»suÉ
+ =
+EBUSY
+; \
+
+66 ++(
+_Çme
+).
+út
+; \
+
+67
+__»suÉ
+; \
+
+68 })
+
+ )
+
+70 
+ #_IO_lock_uÆock
+(
+_Çme
+) \
+
+72 ià(--(
+_Çme
+).
+út
+ == 0) \
+
+74 (
+_Çme
+).
+owÃr
+ =
+NULL
+; \
+
+75
+ `Îl_uÆock
+ ((
+_Çme
+).
+lock
+,
+LLL_PRIVATE
+); \
+
+77 } 0)
+
+ )
+
+81 
+ #_IO_þ—nup_»giÚ_¡¬t
+(
+_fù
+,
+_å
+) \
+
+82
+ `__libc_þ—nup_»giÚ_¡¬t
+ (((
+_å
+)->
+_æags
+ &
+_IO_USER_LOCK
+è=ð0,
+_fù
+, _å)
+
+ )
+
+83 
+ #_IO_þ—nup_»giÚ_¡¬t_nßrg
+(
+_fù
+) \
+
+84
+ `__libc_þ—nup_»giÚ_¡¬t
+ (1,
+_fù
+,
+NULL
+)
+
+ )
+
+85 
+ #_IO_þ—nup_»giÚ_’d
+(
+_do™
+) \
+
+86
+ `__libc_þ—nup_»giÚ_’d
+ (
+_do™
+)
+
+ )
+
+88 #ià
+defšed
+
+_LIBC
+ && !defšed
+NOT_IN_libc
+
+
+90 #ifdeà
+__EXCEPTIONS
+
+
+91 
+ #_IO_acquœe_lock
+(
+_å
+) \
+
+93
+_IO_FILE
+ *
+_IO_acquœe_lock_fže
+ \
+
+94
+ `__©Œibu‹__
+((
+ `þ—nup
+ (
+_IO_acquœe_lock_fù
+))) \
+
+95 ð(
+_å
+); \
+
+96
+ `_IO_æockfže
+ (
+_IO_acquœe_lock_fže
+);
+
+ )
+
+97 
+ #_IO_acquœe_lock_þ—r_æags2
+(
+_å
+) \
+
+99
+_IO_FILE
+ *
+_IO_acquœe_lock_fže
+ \
+
+100
+ `__©Œibu‹__
+((
+ `þ—nup
+ (
+_IO_acquœe_lock_þ—r_æags2_fù
+))) \
+
+101 ð(
+_å
+); \
+
+102
+ `_IO_æockfže
+ (
+_IO_acquœe_lock_fže
+);
+
+ )
+
+104 
+ #_IO_acquœe_lock
+(
+_å
+_IO_acquœe_lock_Ãeds_exû±iÚs_’abËd
+
+
+ )
+
+105 
+ #_IO_acquœe_lock_þ—r_æags2
+(
+_å
+ `_IO_acquœe_lock
+ (_å)
+
+ )
+
+107 
+ #_IO_»Ëa£_lock
+(
+_å
+è; } 0)
+
+ )
+
+ @/usr/include/bits/typesizes.h
+
+20 #iâdeà
+_BITS_TYPES_H
+
+
+24 #iâdef
+_BITS_TYPESIZES_H
+
+
+25 
+ #_BITS_TYPESIZES_H
+ 1
+
+ )
+
+30 
+ #__DEV_T_TYPE
+
+__UQUAD_TYPE
+
+
+ )
+
+31 
+ #__UID_T_TYPE
+
+__U32_TYPE
+
+
+ )
+
+32 
+ #__GID_T_TYPE
+
+__U32_TYPE
+
+
+ )
+
+33 
+ #__INO_T_TYPE
+
+__ULONGWORD_TYPE
+
+
+ )
+
+34 
+ #__INO64_T_TYPE
+
+__UQUAD_TYPE
+
+
+ )
+
+35 
+ #__MODE_T_TYPE
+
+__U32_TYPE
+
+
+ )
+
+36 
+ #__NLINK_T_TYPE
+
+__UWORD_TYPE
+
+
+ )
+
+37 
+ #__OFF_T_TYPE
+
+__SLONGWORD_TYPE
+
+
+ )
+
+38 
+ #__OFF64_T_TYPE
+
+__SQUAD_TYPE
+
+
+ )
+
+39 
+ #__PID_T_TYPE
+
+__S32_TYPE
+
+
+ )
+
+40 
+ #__RLIM_T_TYPE
+
+__ULONGWORD_TYPE
+
+
+ )
+
+41 
+ #__RLIM64_T_TYPE
+
+__UQUAD_TYPE
+
+
+ )
+
+42 
+ #__BLKCNT_T_TYPE
+
+__SLONGWORD_TYPE
+
+
+ )
+
+43 
+ #__BLKCNT64_T_TYPE
+
+__SQUAD_TYPE
+
+
+ )
+
+44 
+ #__FSBLKCNT_T_TYPE
+
+__ULONGWORD_TYPE
+
+
+ )
+
+45 
+ #__FSBLKCNT64_T_TYPE
+
+__UQUAD_TYPE
+
+
+ )
+
+46 
+ #__FSFILCNT_T_TYPE
+
+__ULONGWORD_TYPE
+
+
+ )
+
+47 
+ #__FSFILCNT64_T_TYPE
+
+__UQUAD_TYPE
+
+
+ )
+
+48 
+ #__ID_T_TYPE
+
+__U32_TYPE
+
+
+ )
+
+49 
+ #__CLOCK_T_TYPE
+
+__SLONGWORD_TYPE
+
+
+ )
+
+50 
+ #__TIME_T_TYPE
+
+__SLONGWORD_TYPE
+
+
+ )
+
+51 
+ #__USECONDS_T_TYPE
+
+__U32_TYPE
+
+
+ )
+
+52 
+ #__SUSECONDS_T_TYPE
+
+__SLONGWORD_TYPE
+
+
+ )
+
+53 
+ #__DADDR_T_TYPE
+
+__S32_TYPE
+
+
+ )
+
+54 
+ #__SWBLK_T_TYPE
+
+__SLONGWORD_TYPE
+
+
+ )
+
+55 
+ #__KEY_T_TYPE
+
+__S32_TYPE
+
+
+ )
+
+56 
+ #__CLOCKID_T_TYPE
+
+__S32_TYPE
+
+
+ )
+
+57 
+ #__TIMER_T_TYPE
+ *
+
+ )
+
+58 
+ #__BLKSIZE_T_TYPE
+
+__SLONGWORD_TYPE
+
+
+ )
+
+59 
+ #__FSID_T_TYPE
+ sŒuù { 
+__v®
+[2]; }
+
+ )
+
+60 
+ #__SSIZE_T_TYPE
+
+__SWORD_TYPE
+
+
+ )
+
+63 
+ #__FD_SETSIZE
+ 1024
+
+ )
+
+ @/usr/include/bits/wordsize.h
+
+3 #ià
+defšed
+
+__x86_64__
+
+
+4 
+ #__WORDSIZE
+ 64
+
+ )
+
+5 
+ #__WORDSIZE_COMPAT32
+ 1
+
+ )
+
+7 
+ #__WORDSIZE
+ 32
+
+ )
+
+ @/usr/include/ctype.h
+
+24 #iâdef
+_CTYPE_H
+
+
+25 
+ #_CTYPE_H
+ 1
+
+ )
+
+27 
+ ~<ã©u»s.h
+>
+
+28 
+ ~<b™s/ty³s.h
+>
+
+30
+ g__BEGIN_DECLS
+
+
+32 #iâdeà
+_ISb™
+
+
+41 
+ ~<’dŸn.h
+>
+
+42 #ià
+__BYTE_ORDER
+ =ð
+__BIG_ENDIAN
+
+
+43 
+ #_ISb™
+(
+b™
+è(1 << (b™))
+
+ )
+
+45 
+ #_ISb™
+(
+b™
+è((b™è< 8 ? ((1 << (b™)è<< 8è: ((1 << (b™)è>> 8))
+
+ )
+
+50
+ m_ISuµ”
+ =
+_ISb™
+ (0),
+
+51
+ m_ISlow”
+ =
+_ISb™
+ (1),
+
+52
+ m_IS®pha
+ =
+_ISb™
+ (2),
+
+53
+ m_ISdig™
+ =
+_ISb™
+ (3),
+
+54
+ m_ISxdig™
+ =
+_ISb™
+ (4),
+
+55
+ m_IS¥aû
+ =
+_ISb™
+ (5),
+
+56
+ m_IS´št
+ =
+_ISb™
+ (6),
+
+57
+ m_ISg¿ph
+ =
+_ISb™
+ (7),
+
+58
+ m_ISbÏnk
+ =
+_ISb™
+ (8),
+
+59
+ m_ISúŒl
+ =
+_ISb™
+ (9),
+
+60
+ m_ISpunù
+ =
+_ISb™
+ (10),
+
+61
+ m_IS®num
+ =
+_ISb™
+ (11)
+
+81
+__cÚ¡
+ **
+ $__ùy³_b_loc
+ ()
+
+82
+__THROW
+
+ `__©Œibu‹__
+ ((
+__cÚ¡
+));
+
+83
+__cÚ¡
+
+__št32_t
+ **
+ $__ùy³_tÞow”_loc
+ ()
+
+84
+__THROW
+
+ `__©Œibu‹__
+ ((
+__cÚ¡
+));
+
+85
+__cÚ¡
+
+__št32_t
+ **
+ $__ùy³_touµ”_loc
+ ()
+
+86
+__THROW
+
+ `__©Œibu‹__
+ ((
+__cÚ¡
+));
+
+88 
+ #__isùy³
+(
+c
+,
+ty³
+) \
+
+89 ((*
+ `__ùy³_b_loc
+ ())[(è(
+c
+)] & (è
+ty³
+)
+
+ )
+
+91 
+ #__i§scii
+(
+c
+è(((cè& ~0x7fè=ð0è
+
+ )
+
+92 
+ #__tßscii
+(
+c
+è((cè& 0x7fè
+
+ )
+
+94 
+ #__exùy³
+(
+Çme
+è 
+ `Çme
+ (è
+__THROW
+
+
+ )
+
+96
+__BEGIN_NAMESPACE_STD
+
+
+102
+ `__exùy³
+ (
+i§Êum
+);
+
+103
+ `__exùy³
+ (
+i§Íha
+);
+
+104
+ `__exùy³
+ (
+isúŒl
+);
+
+105
+ `__exùy³
+ (
+isdig™
+);
+
+106
+ `__exùy³
+ (
+i¦ow”
+);
+
+107
+ `__exùy³
+ (
+isg¿ph
+);
+
+108
+ `__exùy³
+ (
+i¥ršt
+);
+
+109
+ `__exùy³
+ (
+i¥unù
+);
+
+110
+ `__exùy³
+ (
+is¥aû
+);
+
+111
+ `__exùy³
+ (
+isuµ”
+);
+
+112
+ `__exùy³
+ (
+isxdig™
+);
+
+116 
+ $tÞow”
+ (
+__c
+__THROW
+;
+
+119 
+ $touµ”
+ (
+__c
+__THROW
+;
+
+121
+__END_NAMESPACE_STD
+
+
+125 #ifdef
+__USE_ISOC99
+
+
+126
+__BEGIN_NAMESPACE_C99
+
+
+128
+ `__exùy³
+ (
+isbÏnk
+);
+
+130
+__END_NAMESPACE_C99
+
+
+133 #ifdeà
+__USE_GNU
+
+
+135 
+ $isùy³
+ (
+__c
+, 
+__mask
+__THROW
+;
+
+138 #ià
+defšed
+
+__USE_SVID
+ || defšed
+__USE_MISC
+ || defšed
+__USE_XOPEN
+
+
+142 
+ $i§scii
+ (
+__c
+__THROW
+;
+
+146 
+ $tßscii
+ (
+__c
+__THROW
+;
+
+150
+ `__exùy³
+ (
+_touµ”
+);
+
+151
+ `__exùy³
+ (
+_tÞow”
+);
+
+155 
+ #__tobody
+(
+c
+,
+f
+,
+a
+,
+¬gs
+) \
+
+156 (
+__ex‹nsiÚ__
+ \
+
+157 ({ 
+__»s
+; \
+
+158 ià( (
+c
+) > 1) \
+
+160 ià(
+ `__bužtš_cÚ¡ªt_p
+ (
+c
+)) \
+
+162 
+__c
+ = (
+c
+); \
+
+163
+__»s
+ =
+__c
+ < -128 || __ø> 255 ? __ø: (
+a
+)[__c]; \
+
+166
+__»s
+ =
+f
+
+¬gs
+; \
+
+169
+__»s
+ = (
+a
+)[(è(
+c
+)]; \
+
+170
+__»s
+;
+ }
+}))
+
+ )
+
+172 #ià!
+defšed
+
+__NO_CTYPE
+ && !defšed
+__ýlu¥lus
+
+
+173 
+ #i§Êum
+(
+c
+ `__isùy³
+((c),
+_IS®num
+)
+
+ )
+
+174 
+ #i§Íha
+(
+c
+ `__isùy³
+((c),
+_IS®pha
+)
+
+ )
+
+175 
+ #isúŒl
+(
+c
+ `__isùy³
+((c),
+_ISúŒl
+)
+
+ )
+
+176 
+ #isdig™
+(
+c
+ `__isùy³
+((c),
+_ISdig™
+)
+
+ )
+
+177 
+ #i¦ow”
+(
+c
+ `__isùy³
+((c),
+_ISlow”
+)
+
+ )
+
+178 
+ #isg¿ph
+(
+c
+ `__isùy³
+((c),
+_ISg¿ph
+)
+
+ )
+
+179 
+ #i¥ršt
+(
+c
+ `__isùy³
+((c),
+_IS´št
+)
+
+ )
+
+180 
+ #i¥unù
+(
+c
+ `__isùy³
+((c),
+_ISpunù
+)
+
+ )
+
+181 
+ #is¥aû
+(
+c
+ `__isùy³
+((c),
+_IS¥aû
+)
+
+ )
+
+182 
+ #isuµ”
+(
+c
+ `__isùy³
+((c),
+_ISuµ”
+)
+
+ )
+
+183 
+ #isxdig™
+(
+c
+ `__isùy³
+((c),
+_ISxdig™
+)
+
+ )
+
+185 #ifdeà
+__USE_ISOC99
+
+
+186 
+ #isbÏnk
+(
+c
+ `__isùy³
+((c),
+_ISbÏnk
+)
+
+ )
+
+189 #ifdeà
+__USE_EXTERN_INLINES
+
+
+190
+__ex‹º_šlše
+ 
+
+191
+__NTH
+ (
+ $tÞow”
+ (
+__c
+))
+
+193 
+__c
+ >ð-128 && __ø< 256 ? (*
+ `__ùy³_tÞow”_loc
+ ())[__c] : __c;
+
+194
+ }
+}
+
+196
+__ex‹º_šlše
+ 
+
+197
+__NTH
+ (
+ $touµ”
+ (
+__c
+))
+
+199 
+__c
+ >ð-128 && __ø< 256 ? (*
+ `__ùy³_touµ”_loc
+ ())[__c] : __c;
+
+200
+ }
+}
+
+203 #ià
+__GNUC__
+ >ð2 &&
+defšed
+
+__OPTIMIZE__
+ && !defšed
+__ýlu¥lus
+
+
+204 
+ #tÞow”
+(
+c
+ `__tobody
+ (c,
+tÞow”
+, *
+ `__ùy³_tÞow”_loc
+ (), (c))
+
+ )
+
+205 
+ #touµ”
+(
+c
+ `__tobody
+ (c,
+touµ”
+, *
+ `__ùy³_touµ”_loc
+ (), (c))
+
+ )
+
+208 #ià
+defšed
+
+__USE_SVID
+ || defšed
+__USE_MISC
+ || defšed
+__USE_XOPEN
+
+
+209 
+ #i§scii
+(
+c
+ `__i§scii
+ (c)
+
+ )
+
+210 
+ #tßscii
+(
+c
+ `__tßscii
+ (c)
+
+ )
+
+212 
+ #_tÞow”
+(
+c
+è((è(*
+ `__ùy³_tÞow”_loc
+ ())[(è(c)])
+
+ )
+
+213 
+ #_touµ”
+(
+c
+è((è(*
+ `__ùy³_touµ”_loc
+ ())[(è(c)])
+
+ )
+
+219 #ifdeà
+__USE_XOPEN2K8
+
+
+233 
+ ~<xloÿË.h
+>
+
+237 
+ #__isùy³_l
+(
+c
+,
+ty³
+,
+loÿË
+) \
+
+238 ((
+loÿË
+)->
+__ùy³_b
+[(è(
+c
+)] & (è
+ty³
+)
+
+ )
+
+240 
+ #__exùy³_l
+(
+Çme
+) \
+
+241 
+ `Çme
+ (,
+__loÿË_t
+__THROW
+
+
+ )
+
+247
+__exùy³_l
+ (
+i§Êum_l
+);
+
+248
+__exùy³_l
+ (
+i§Íha_l
+);
+
+249
+__exùy³_l
+ (
+isúŒl_l
+);
+
+250
+__exùy³_l
+ (
+isdig™_l
+);
+
+251
+__exùy³_l
+ (
+i¦ow”_l
+);
+
+252
+__exùy³_l
+ (
+isg¿ph_l
+);
+
+253
+__exùy³_l
+ (
+i¥ršt_l
+);
+
+254
+__exùy³_l
+ (
+i¥unù_l
+);
+
+255
+__exùy³_l
+ (
+is¥aû_l
+);
+
+256
+__exùy³_l
+ (
+isuµ”_l
+);
+
+257
+__exùy³_l
+ (
+isxdig™_l
+);
+
+259
+__exùy³_l
+ (
+isbÏnk_l
+);
+
+263 
+ $__tÞow”_l
+ (
+__c
+,
+__loÿË_t
+
+__l
+__THROW
+;
+
+264 
+ $tÞow”_l
+ (
+__c
+,
+__loÿË_t
+
+__l
+__THROW
+;
+
+267 
+ $__touµ”_l
+ (
+__c
+,
+__loÿË_t
+
+__l
+__THROW
+;
+
+268 
+ $touµ”_l
+ (
+__c
+,
+__loÿË_t
+
+__l
+__THROW
+;
+
+270 #ià
+__GNUC__
+ >ð2 &&
+defšed
+
+__OPTIMIZE__
+ && !defšed
+__ýlu¥lus
+
+
+271 
+ #__tÞow”_l
+(
+c
+,
+loÿË
+) \
+
+272
+ `__tobody
+ (
+c
+,
+__tÞow”_l
+, (
+loÿË
+)->
+__ùy³_tÞow”
+, (c,†oÿË))
+
+ )
+
+273 
+ #__touµ”_l
+(
+c
+,
+loÿË
+) \
+
+274
+ `__tobody
+ (
+c
+,
+__touµ”_l
+, (
+loÿË
+)->
+__ùy³_touµ”
+, (c,†oÿË))
+
+ )
+
+275 
+ #tÞow”_l
+(
+c
+,
+loÿË
+ `__tÞow”_l
+ ((c), (loÿË))
+
+ )
+
+276 
+ #touµ”_l
+(
+c
+,
+loÿË
+ `__touµ”_l
+ ((c), (loÿË))
+
+ )
+
+280 #iâdeà
+__NO_CTYPE
+
+
+281 
+ #__i§Êum_l
+(
+c
+,
+l
+ `__isùy³_l
+((c),
+_IS®num
+, (l))
+
+ )
+
+282 
+ #__i§Íha_l
+(
+c
+,
+l
+ `__isùy³_l
+((c),
+_IS®pha
+, (l))
+
+ )
+
+283 
+ #__isúŒl_l
+(
+c
+,
+l
+ `__isùy³_l
+((c),
+_ISúŒl
+, (l))
+
+ )
+
+284 
+ #__isdig™_l
+(
+c
+,
+l
+ `__isùy³_l
+((c),
+_ISdig™
+, (l))
+
+ )
+
+285 
+ #__i¦ow”_l
+(
+c
+,
+l
+ `__isùy³_l
+((c),
+_ISlow”
+, (l))
+
+ )
+
+286 
+ #__isg¿ph_l
+(
+c
+,
+l
+ `__isùy³_l
+((c),
+_ISg¿ph
+, (l))
+
+ )
+
+287 
+ #__i¥ršt_l
+(
+c
+,
+l
+ `__isùy³_l
+((c),
+_IS´št
+, (l))
+
+ )
+
+288 
+ #__i¥unù_l
+(
+c
+,
+l
+ `__isùy³_l
+((c),
+_ISpunù
+, (l))
+
+ )
+
+289 
+ #__is¥aû_l
+(
+c
+,
+l
+ `__isùy³_l
+((c),
+_IS¥aû
+, (l))
+
+ )
+
+290 
+ #__isuµ”_l
+(
+c
+,
+l
+ `__isùy³_l
+((c),
+_ISuµ”
+, (l))
+
+ )
+
+291 
+ #__isxdig™_l
+(
+c
+,
+l
+ `__isùy³_l
+((c),
+_ISxdig™
+, (l))
+
+ )
+
+293 
+ #__isbÏnk_l
+(
+c
+,
+l
+ `__isùy³_l
+((c),
+_ISbÏnk
+, (l))
+
+ )
+
+295 #ià
+defšed
+
+__USE_SVID
+ || defšed
+__USE_MISC
+
+
+296 
+ #__i§scii_l
+(
+c
+,
+l
+è(Ö),
+ `__i§scii
+ (c))
+
+ )
+
+297 
+ #__tßscii_l
+(
+c
+,
+l
+è(Ö),
+ `__tßscii
+ (c))
+
+ )
+
+300 
+ #i§Êum_l
+(
+c
+,
+l
+ `__i§Êum_l
+ ((c), (l))
+
+ )
+
+301 
+ #i§Íha_l
+(
+c
+,
+l
+ `__i§Íha_l
+ ((c), (l))
+
+ )
+
+302 
+ #isúŒl_l
+(
+c
+,
+l
+ `__isúŒl_l
+ ((c), (l))
+
+ )
+
+303 
+ #isdig™_l
+(
+c
+,
+l
+ `__isdig™_l
+ ((c), (l))
+
+ )
+
+304 
+ #i¦ow”_l
+(
+c
+,
+l
+ `__i¦ow”_l
+ ((c), (l))
+
+ )
+
+305 
+ #isg¿ph_l
+(
+c
+,
+l
+ `__isg¿ph_l
+ ((c), (l))
+
+ )
+
+306 
+ #i¥ršt_l
+(
+c
+,
+l
+ `__i¥ršt_l
+ ((c), (l))
+
+ )
+
+307 
+ #i¥unù_l
+(
+c
+,
+l
+ `__i¥unù_l
+ ((c), (l))
+
+ )
+
+308 
+ #is¥aû_l
+(
+c
+,
+l
+ `__is¥aû_l
+ ((c), (l))
+
+ )
+
+309 
+ #isuµ”_l
+(
+c
+,
+l
+ `__isuµ”_l
+ ((c), (l))
+
+ )
+
+310 
+ #isxdig™_l
+(
+c
+,
+l
+ `__isxdig™_l
+ ((c), (l))
+
+ )
+
+312 
+ #isbÏnk_l
+(
+c
+,
+l
+ `__isbÏnk_l
+ ((c), (l))
+
+ )
+
+314 #ià
+defšed
+
+__USE_SVID
+ || defšed
+__USE_MISC
+
+
+315 
+ #i§scii_l
+(
+c
+,
+l
+ `__i§scii_l
+ ((c), (l))
+
+ )
+
+316 
+ #tßscii_l
+(
+c
+,
+l
+ `__tßscii_l
+ ((c), (l))
+
+ )
+
+323
+__END_DECLS
+
+
+ @/usr/include/endian.h
+
+19 #iâdef
+_ENDIAN_H
+
+
+20 
+ #_ENDIAN_H
+ 1
+
+ )
+
+22 
+ ~<ã©u»s.h
+>
+
+32 
+ #__LITTLE_ENDIAN
+ 1234
+
+ )
+
+33 
+ #__BIG_ENDIAN
+ 4321
+
+ )
+
+34 
+ #__PDP_ENDIAN
+ 3412
+
+ )
+
+37 
+ ~<b™s/’dŸn.h
+>
+
+41 #iâdeà
+__FLOAT_WORD_ORDER
+
+
+42 
+ #__FLOAT_WORD_ORDER
+
+__BYTE_ORDER
+
+
+ )
+
+45 #ifdef
+__USE_BSD
+
+
+46 
+ #LITTLE_ENDIAN
+
+__LITTLE_ENDIAN
+
+
+ )
+
+47 
+ #BIG_ENDIAN
+
+__BIG_ENDIAN
+
+
+ )
+
+48 
+ #PDP_ENDIAN
+
+__PDP_ENDIAN
+
+
+ )
+
+49 
+ #BYTE_ORDER
+
+__BYTE_ORDER
+
+
+ )
+
+52 #ià
+__BYTE_ORDER
+ =ð
+__LITTLE_ENDIAN
+
+
+53 
+ #__LONG_LONG_PAIR
+(
+HI
+,
+LO
+èLO,
+ )
+HI
+
+54 #–ià
+__BYTE_ORDER
+ =ð
+__BIG_ENDIAN
+
+
+55 
+ #__LONG_LONG_PAIR
+(
+HI
+,
+LO
+èHI,
+ )
+LO
+
+59 #ifdeà
+__USE_BSD
+
+
+61 
+ ~<b™s/by‹sw­.h
+>
+
+63 #ià
+__BYTE_ORDER
+ =ð
+__LITTLE_ENDIAN
+
+
+64 
+ #htobe16
+(
+x
+ `__bsw­_16
+ (x)
+
+ )
+
+65 
+ #htÞe16
+(
+x
+è(x)
+
+ )
+
+66 
+ #be16toh
+(
+x
+ `__bsw­_16
+ (x)
+
+ )
+
+67 
+ #Ë16toh
+(
+x
+è(x)
+
+ )
+
+69 
+ #htobe32
+(
+x
+ `__bsw­_32
+ (x)
+
+ )
+
+70 
+ #htÞe32
+(
+x
+è(x)
+
+ )
+
+71 
+ #be32toh
+(
+x
+ `__bsw­_32
+ (x)
+
+ )
+
+72 
+ #Ë32toh
+(
+x
+è(x)
+
+ )
+
+74 
+ #htobe64
+(
+x
+ `__bsw­_64
+ (x)
+
+ )
+
+75 
+ #htÞe64
+(
+x
+è(x)
+
+ )
+
+76 
+ #be64toh
+(
+x
+ `__bsw­_64
+ (x)
+
+ )
+
+77 
+ #Ë64toh
+(
+x
+è(x)
+
+ )
+
+79 
+ #htobe16
+(
+x
+è(x)
+
+ )
+
+80 
+ #htÞe16
+(
+x
+ `__bsw­_16
+ (x)
+
+ )
+
+81 
+ #be16toh
+(
+x
+è(x)
+
+ )
+
+82 
+ #Ë16toh
+(
+x
+ `__bsw­_16
+ (x)
+
+ )
+
+84 
+ #htobe32
+(
+x
+è(x)
+
+ )
+
+85 
+ #htÞe32
+(
+x
+ `__bsw­_32
+ (x)
+
+ )
+
+86 
+ #be32toh
+(
+x
+è(x)
+
+ )
+
+87 
+ #Ë32toh
+(
+x
+ `__bsw­_32
+ (x)
+
+ )
+
+89 
+ #htobe64
+(
+x
+è(x)
+
+ )
+
+90 
+ #htÞe64
+(
+x
+ `__bsw­_64
+ (x)
+
+ )
+
+91 
+ #be64toh
+(
+x
+è(x)
+
+ )
+
+92 
+ #Ë64toh
+(
+x
+ `__bsw­_64
+ (x)
+
+ )
+
+ @/usr/include/gnu/stubs.h
+
+4 
+ ~<b™s/wÜdsize.h
+>
+
+6 #ià
+__WORDSIZE
+ == 32
+
+7 
+ ~<gnu/¡ubs-32.h
+>
+
+8 #–ià
+__WORDSIZE
+ == 64
+
+9 
+ ~<gnu/¡ubs-64.h
+>
+
+ @/usr/include/stdlib.h
+
+23 #iâdef
+_STDLIB_H
+
+
+25 
+ ~<ã©u»s.h
+>
+
+28 
+ #__Ãed_size_t
+
+
+ )
+
+29 #iâdeà
+__Ãed_m®loc_ªd_ÿÎoc
+
+
+30 
+ #__Ãed_wch¬_t
+
+
+ )
+
+31 
+ #__Ãed_NULL
+
+
+ )
+
+33 
+ ~<¡ddef.h
+>
+
+35
+ g__BEGIN_DECLS
+
+
+37 #iâdeà
+__Ãed_m®loc_ªd_ÿÎoc
+
+
+38 
+ #_STDLIB_H
+ 1
+
+ )
+
+40 #ià
+defšed
+
+__USE_XOPEN
+ && !defšed
+_SYS_WAIT_H
+
+
+42 
+ ~<b™s/wa™æags.h
+>
+
+43 
+ ~<b™s/wa™¡©us.h
+>
+
+45 #ifdeà
+__USE_BSD
+
+
+50 #ià
+defšed
+
+__GNUC__
+ && !defšed
+__ýlu¥lus
+
+
+51 
+ #__WAIT_INT
+(
+¡©us
+) \
+
+52 (
+ `__ex‹nsiÚ__
+ (((uniÚ {
+ `__ty³of
+(
+¡©us
+__š
+; 
+__i
+; }) \
+
+53 { .
+__š
+ = (
+¡©us
+è}).
+__i
+))
+
+ )
+
+55 
+ #__WAIT_INT
+(
+¡©us
+è(*(*è&(¡©us))
+
+ )
+
+63 #ià!
+defšed
+
+__GNUC__
+ || __GNUC__ < 2 || defšed
+__ýlu¥lus
+
+
+64 
+ #__WAIT_STATUS
+ *
+
+ )
+
+65 
+ #__WAIT_STATUS_DEFN
+ *
+
+ )
+
+70 
+wa™
+ *
+ m__u±r
+;
+
+71 *
+ m__Œ
+;
+
+72 }
+ t__WAIT_STATUS
+
+ t__©Œibu‹__
+ ((
+ t__Œª¥¬’t_uniÚ__
+));
+
+73 
+ #__WAIT_STATUS_DEFN
+ *
+
+ )
+
+78 
+ #__WAIT_INT
+(
+¡©us
+è(¡©us)
+
+ )
+
+79 
+ #__WAIT_STATUS
+ *
+
+ )
+
+80 
+ #__WAIT_STATUS_DEFN
+ *
+
+ )
+
+85 
+ #WEXITSTATUS
+(
+¡©us
+ `__WEXITSTATUS
+ (
+ `__WAIT_INT
+ (¡©us))
+
+ )
+
+86 
+ #WTERMSIG
+(
+¡©us
+ `__WTERMSIG
+ (
+ `__WAIT_INT
+ (¡©us))
+
+ )
+
+87 
+ #WSTOPSIG
+(
+¡©us
+ `__WSTOPSIG
+ (
+ `__WAIT_INT
+ (¡©us))
+
+ )
+
+88 
+ #WIFEXITED
+(
+¡©us
+ `__WIFEXITED
+ (
+ `__WAIT_INT
+ (¡©us))
+
+ )
+
+89 
+ #WIFSIGNALED
+(
+¡©us
+ `__WIFSIGNALED
+ (
+ `__WAIT_INT
+ (¡©us))
+
+ )
+
+90 
+ #WIFSTOPPED
+(
+¡©us
+ `__WIFSTOPPED
+ (
+ `__WAIT_INT
+ (¡©us))
+
+ )
+
+91 #ifdeà
+__WIFCONTINUED
+
+
+92 
+ #WIFCONTINUED
+(
+¡©us
+ `__WIFCONTINUED
+ (
+ `__WAIT_INT
+ (¡©us))
+
+ )
+
+96
+__BEGIN_NAMESPACE_STD
+
+
+100 
+ mquÙ
+;
+
+101 
+ m»m
+;
+
+102 }
+ tdiv_t
+;
+
+105 #iâdeà
+__ldiv_t_defšed
+
+
+108 
+ mquÙ
+;
+
+109 
+ m»m
+;
+
+110 }
+ tldiv_t
+;
+
+111 
+ #__ldiv_t_defšed
+ 1
+
+ )
+
+113
+ g__END_NAMESPACE_STD
+
+
+115 #ià
+defšed
+
+__USE_ISOC99
+ && !defšed
+__Îdiv_t_defšed
+
+
+116
+__BEGIN_NAMESPACE_C99
+
+
+118
+__ex‹nsiÚ__
+ struct
+
+120 
+ mquÙ
+;
+
+121 
+ m»m
+;
+
+122 }
+ tÎdiv_t
+;
+
+123 
+ #__Îdiv_t_defšed
+ 1
+
+ )
+
+124
+ g__END_NAMESPACE_C99
+
+
+129 
+ #RAND_MAX
+ 2147483647
+
+ )
+
+134 
+ #EXIT_FAILURE
+ 1
+
+ )
+
+135 
+ #EXIT_SUCCESS
+ 0
+
+ )
+
+139 
+ #MB_CUR_MAX
+ (
+ `__ùy³_g‘_mb_cur_max
+ ())
+
+ )
+
+140
+size_t
+
+ $__ùy³_g‘_mb_cur_max
+ (è
+__THROW
+
+__wur
+;
+
+143
+__BEGIN_NAMESPACE_STD
+
+
+145 
+ $©of
+ (
+__cÚ¡
+ *
+__Ō
+)
+
+146
+__THROW
+
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1)è
+__wur
+;
+
+148 
+ $©oi
+ (
+__cÚ¡
+ *
+__Ō
+)
+
+149
+__THROW
+
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1)è
+__wur
+;
+
+151 
+ $©Þ
+ (
+__cÚ¡
+ *
+__Ō
+)
+
+152
+__THROW
+
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1)è
+__wur
+;
+
+153
+__END_NAMESPACE_STD
+
+
+155 #ià
+defšed
+
+__USE_ISOC99
+ || (defšed
+__GLIBC_HAVE_LONG_LONG
+ && defšed
+__USE_MISC
+)
+
+156
+__BEGIN_NAMESPACE_C99
+
+
+158
+__ex‹nsiÚ__
+ 
+ $©Þl
+ (
+__cÚ¡
+ *
+__Ō
+)
+
+159
+__THROW
+
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1)è
+__wur
+;
+
+160
+__END_NAMESPACE_C99
+
+
+163
+__BEGIN_NAMESPACE_STD
+
+
+165 
+ $¡¹od
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__Ō
+,
+
+166 **
+__»¡riù
+
+__’d±r
+)
+
+167
+__THROW
+
+ `__nÚnuÎ
+ ((1)è
+__wur
+;
+
+168
+__END_NAMESPACE_STD
+
+
+170 #ifdef
+__USE_ISOC99
+
+
+171
+__BEGIN_NAMESPACE_C99
+
+
+173 
+ $¡¹of
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__Ō
+,
+
+174 **
+__»¡riù
+
+__’d±r
+__THROW
+
+ `__nÚnuÎ
+ ((1)è
+__wur
+;
+
+176 
+ $¡¹Þd
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__Ō
+,
+
+177 **
+__»¡riù
+
+__’d±r
+)
+
+178
+__THROW
+
+ `__nÚnuÎ
+ ((1)è
+__wur
+;
+
+179
+__END_NAMESPACE_C99
+
+
+182
+__BEGIN_NAMESPACE_STD
+
+
+184 
+ $¡¹Þ
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__Ō
+,
+
+185 **
+__»¡riù
+
+__’d±r
+, 
+__ba£
+)
+
+186
+__THROW
+
+ `__nÚnuÎ
+ ((1)è
+__wur
+;
+
+188 
+ $¡¹oul
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__Ō
+,
+
+189 **
+__»¡riù
+
+__’d±r
+, 
+__ba£
+)
+
+190
+__THROW
+
+ `__nÚnuÎ
+ ((1)è
+__wur
+;
+
+191
+__END_NAMESPACE_STD
+
+
+193 #ià
+defšed
+
+__GLIBC_HAVE_LONG_LONG
+ && defšed
+__USE_BSD
+
+
+195
+__ex‹nsiÚ__
+
+
+196 
+ $¡¹oq
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__Ō
+,
+
+197 **
+__»¡riù
+
+__’d±r
+, 
+__ba£
+)
+
+198
+__THROW
+
+ `__nÚnuÎ
+ ((1)è
+__wur
+;
+
+200
+__ex‹nsiÚ__
+
+
+201 
+ $¡¹ouq
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__Ō
+,
+
+202 **
+__»¡riù
+
+__’d±r
+, 
+__ba£
+)
+
+203
+__THROW
+
+ `__nÚnuÎ
+ ((1)è
+__wur
+;
+
+206 #ià
+defšed
+
+__USE_ISOC99
+ || (defšed
+__GLIBC_HAVE_LONG_LONG
+ && defšed
+__USE_MISC
+)
+
+207
+__BEGIN_NAMESPACE_C99
+
+
+209
+__ex‹nsiÚ__
+
+
+210 
+ $¡¹Þl
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__Ō
+,
+
+211 **
+__»¡riù
+
+__’d±r
+, 
+__ba£
+)
+
+212
+__THROW
+
+ `__nÚnuÎ
+ ((1)è
+__wur
+;
+
+214
+__ex‹nsiÚ__
+
+
+215 
+ $¡¹ouÎ
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__Ō
+,
+
+216 **
+__»¡riù
+
+__’d±r
+, 
+__ba£
+)
+
+217
+__THROW
+
+ `__nÚnuÎ
+ ((1)è
+__wur
+;
+
+218
+__END_NAMESPACE_C99
+
+
+222 #ifdeà
+__USE_GNU
+
+
+236 
+ ~<xloÿË.h
+>
+
+240 
+ $¡¹Þ_l
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__Ō
+,
+
+241 **
+__»¡riù
+
+__’d±r
+, 
+__ba£
+,
+
+242
+__loÿË_t
+
+__loc
+__THROW
+
+ `__nÚnuÎ
+ ((1, 4)è
+__wur
+;
+
+244 
+ $¡¹oul_l
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__Ō
+,
+
+245 **
+__»¡riù
+
+__’d±r
+,
+
+246 
+__ba£
+,
+__loÿË_t
+
+__loc
+)
+
+247
+__THROW
+
+ `__nÚnuÎ
+ ((1, 4)è
+__wur
+;
+
+249
+__ex‹nsiÚ__
+
+
+250 
+ $¡¹Þl_l
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__Ō
+,
+
+251 **
+__»¡riù
+
+__’d±r
+, 
+__ba£
+,
+
+252
+__loÿË_t
+
+__loc
+)
+
+253
+__THROW
+
+ `__nÚnuÎ
+ ((1, 4)è
+__wur
+;
+
+255
+__ex‹nsiÚ__
+
+
+256 
+ $¡¹ouÎ_l
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__Ō
+,
+
+257 **
+__»¡riù
+
+__’d±r
+,
+
+258 
+__ba£
+,
+__loÿË_t
+
+__loc
+)
+
+259
+__THROW
+
+ `__nÚnuÎ
+ ((1, 4)è
+__wur
+;
+
+261 
+ $¡¹od_l
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__Ō
+,
+
+262 **
+__»¡riù
+
+__’d±r
+,
+__loÿË_t
+
+__loc
+)
+
+263
+__THROW
+
+ `__nÚnuÎ
+ ((1, 3)è
+__wur
+;
+
+265 
+ $¡¹of_l
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__Ō
+,
+
+266 **
+__»¡riù
+
+__’d±r
+,
+__loÿË_t
+
+__loc
+)
+
+267
+__THROW
+
+ `__nÚnuÎ
+ ((1, 3)è
+__wur
+;
+
+269 
+ $¡¹Þd_l
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__Ō
+,
+
+270 **
+__»¡riù
+
+__’d±r
+,
+
+271
+__loÿË_t
+
+__loc
+)
+
+272
+__THROW
+
+ `__nÚnuÎ
+ ((1, 3)è
+__wur
+;
+
+276 #ifdeà
+__USE_EXTERN_INLINES
+
+
+277
+__BEGIN_NAMESPACE_STD
+
+
+278
+__ex‹º_šlše
+ 
+
+279
+ `__NTH
+ (
+ $©of
+ (
+__cÚ¡
+ *
+__Ō
+))
+
+281 
+ `¡¹od
+ (
+__Ō
+, (**è
+NULL
+);
+
+282
+ }
+}
+
+283
+__ex‹º_šlše
+ 
+
+284
+__NTH
+ (
+ $©oi
+ (
+__cÚ¡
+ *
+__Ō
+))
+
+286  (è
+ `¡¹Þ
+ (
+__Ō
+, (**è
+NULL
+, 10);
+
+287
+ }
+}
+
+288
+__ex‹º_šlše
+ 
+
+289
+__NTH
+ (
+ $©Þ
+ (
+__cÚ¡
+ *
+__Ō
+))
+
+291 
+ `¡¹Þ
+ (
+__Ō
+, (**è
+NULL
+, 10);
+
+292
+ }
+}
+
+293
+ g__END_NAMESPACE_STD
+
+
+295 #ià
+defšed
+
+__USE_MISC
+ || defšed
+__USE_ISOC99
+
+
+296
+__BEGIN_NAMESPACE_C99
+
+
+297
+__ex‹nsiÚ__
+
+__ex‹º_šlše
+ 
+
+298
+__NTH
+ (
+ $©Þl
+ (
+__cÚ¡
+ *
+__Ō
+))
+
+300 
+ `¡¹Þl
+ (
+__Ō
+, (**è
+NULL
+, 10);
+
+301
+ }
+}
+
+302
+ g__END_NAMESPACE_C99
+
+
+307 #ià
+defšed
+
+__USE_SVID
+ || defšed
+__USE_XOPEN_EXTENDED
+
+
+311 *
+ $l64a
+ (
+__n
+__THROW
+
+__wur
+;
+
+314 
+ $a64l
+ (
+__cÚ¡
+ *
+__s
+)
+
+315
+__THROW
+
+__©Œibu‹_pu»__
+
+ `__nÚnuÎ
+ ((1)è
+__wur
+;
+
+319 #ià
+defšed
+
+__USE_SVID
+ || defšed
+__USE_XOPEN_EXTENDED
+ || defšed
+__USE_BSD
+
+
+320 
+ ~<sys/ty³s.h
+>
+
+327 
+ $¿ndom
+ (è
+__THROW
+;
+
+330 
+ $¤ªdom
+ (
+__£ed
+__THROW
+;
+
+336 *
+ $š™¡©e
+ (
+__£ed
+, *
+__¡©ebuf
+,
+
+337
+size_t
+
+__¡©–’
+__THROW
+
+ `__nÚnuÎ
+ ((2));
+
+341 *
+ $£t¡©e
+ (*
+__¡©ebuf
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+344 #ifdeà
+__USE_MISC
+
+
+349 
+ s¿ndom_d©a
+
+
+351
+št32_t
+ *
+åŒ
+;
+
+352
+št32_t
+ *
+½Œ
+;
+
+353
+št32_t
+ *
+¡©e
+;
+
+354 
+¿nd_ty³
+;
+
+355 
+¿nd_deg
+;
+
+356 
+¿nd_£p
+;
+
+357
+št32_t
+ *
+’d_±r
+;
+
+360 
+ $¿ndom_r
+ (
+¿ndom_d©a
+ *
+__»¡riù
+
+__buf
+,
+
+361
+št32_t
+ *
+__»¡riù
+
+__»suÉ
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+363 
+ $¤ªdom_r
+ (
+__£ed
+, 
+¿ndom_d©a
+ *
+__buf
+)
+
+364
+__THROW
+
+ `__nÚnuÎ
+ ((2));
+
+366 
+ $š™¡©e_r
+ (
+__£ed
+, *
+__»¡riù
+
+__¡©ebuf
+,
+
+367
+size_t
+
+__¡©–’
+,
+
+368 
+¿ndom_d©a
+ *
+__»¡riù
+
+__buf
+)
+
+369
+__THROW
+
+ `__nÚnuÎ
+ ((2, 4));
+
+371 
+ $£t¡©e_r
+ (*
+__»¡riù
+
+__¡©ebuf
+,
+
+372 
+¿ndom_d©a
+ *
+__»¡riù
+
+__buf
+)
+
+373
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+378
+__BEGIN_NAMESPACE_STD
+
+
+380 
+ $¿nd
+ (è
+__THROW
+;
+
+382 
+ $¤ªd
+ (
+__£ed
+__THROW
+;
+
+383
+__END_NAMESPACE_STD
+
+
+385 #ifdeà
+__USE_POSIX
+
+
+387 
+ $¿nd_r
+ (*
+__£ed
+__THROW
+;
+
+391 #ià
+defšed
+
+__USE_SVID
+ || defšed
+__USE_XOPEN
+
+
+395 
+ $d¿nd48
+ (è
+__THROW
+;
+
+396 
+ $ӻd48
+ (
+__xsubi
+[3]è
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+399 
+ $̪d48
+ (è
+__THROW
+;
+
+400 
+ $Īd48
+ (
+__xsubi
+[3])
+
+401
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+404 
+ $m¿nd48
+ (è
+__THROW
+;
+
+405 
+ $j¿nd48
+ (
+__xsubi
+[3])
+
+406
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+409 
+ $¤ªd48
+ (
+__£edv®
+__THROW
+;
+
+410 *
+ $£ed48
+ (
+__£ed16v
+[3])
+
+411
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+412 
+ $lcÚg48
+ (
+__·¿m
+[7]è
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+414 #ifdeà
+__USE_MISC
+
+
+418 
+ sd¿nd48_d©a
+
+
+420 
+__x
+[3];
+
+421 
+__Þd_x
+[3];
+
+422 
+__c
+;
+
+423 
+__š™
+;
+
+424 
+__a
+;
+
+428 
+ $d¿nd48_r
+ (
+d¿nd48_d©a
+ *
+__»¡riù
+
+__bufãr
+,
+
+429 *
+__»¡riù
+
+__»suÉ
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+430 
+ $ӻd48_r
+ (
+__xsubi
+[3],
+
+431 
+d¿nd48_d©a
+ *
+__»¡riù
+
+__bufãr
+,
+
+432 *
+__»¡riù
+
+__»suÉ
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+435 
+ $̪d48_r
+ (
+d¿nd48_d©a
+ *
+__»¡riù
+
+__bufãr
+,
+
+436 *
+__»¡riù
+
+__»suÉ
+)
+
+437
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+438 
+ $Īd48_r
+ (
+__xsubi
+[3],
+
+439 
+d¿nd48_d©a
+ *
+__»¡riù
+
+__bufãr
+,
+
+440 *
+__»¡riù
+
+__»suÉ
+)
+
+441
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+444 
+ $m¿nd48_r
+ (
+d¿nd48_d©a
+ *
+__»¡riù
+
+__bufãr
+,
+
+445 *
+__»¡riù
+
+__»suÉ
+)
+
+446
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+447 
+ $j¿nd48_r
+ (
+__xsubi
+[3],
+
+448 
+d¿nd48_d©a
+ *
+__»¡riù
+
+__bufãr
+,
+
+449 *
+__»¡riù
+
+__»suÉ
+)
+
+450
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+453 
+ $¤ªd48_r
+ (
+__£edv®
+, 
+d¿nd48_d©a
+ *
+__bufãr
+)
+
+454
+__THROW
+
+ `__nÚnuÎ
+ ((2));
+
+456 
+ $£ed48_r
+ (
+__£ed16v
+[3],
+
+457 
+d¿nd48_d©a
+ *
+__bufãr
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+459 
+ $lcÚg48_r
+ (
+__·¿m
+[7],
+
+460 
+d¿nd48_d©a
+ *
+__bufãr
+)
+
+461
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+467 #iâdeà
+__m®loc_ªd_ÿÎoc_defšed
+
+
+468 
+ #__m®loc_ªd_ÿÎoc_defšed
+
+
+ )
+
+469
+__BEGIN_NAMESPACE_STD
+
+
+471 *
+ $m®loc
+ (
+size_t
+
+__size
+__THROW
+
+__©Œibu‹_m®loc__
+
+__wur
+;
+
+473 *
+ $ÿÎoc
+ (
+size_t
+
+__nmemb
+, size_ˆ
+__size
+)
+
+474
+__THROW
+
+__©Œibu‹_m®loc__
+
+__wur
+;
+
+475
+__END_NAMESPACE_STD
+
+
+478 #iâdeà
+__Ãed_m®loc_ªd_ÿÎoc
+
+
+479
+__BEGIN_NAMESPACE_STD
+
+
+485 *
+ $»®loc
+ (*
+__±r
+,
+size_t
+
+__size
+)
+
+486
+__THROW
+
+__©Œibu‹_w¬n_unu£d_»suÉ__
+;
+
+488 
+ $ä“
+ (*
+__±r
+__THROW
+;
+
+489
+__END_NAMESPACE_STD
+
+
+491 #ifdef
+__USE_MISC
+
+
+493 
+ $cä“
+ (*
+__±r
+__THROW
+;
+
+496 #ià
+defšed
+
+__USE_GNU
+ || defšed
+__USE_BSD
+ || defšed
+__USE_MISC
+
+
+497 
+ ~<®loÿ.h
+>
+
+500 #ià
+defšed
+
+__USE_BSD
+ || defšed
+__USE_XOPEN_EXTENDED
+
+
+502 *
+ $v®loc
+ (
+size_t
+
+__size
+__THROW
+
+__©Œibu‹_m®loc__
+
+__wur
+;
+
+505 #ifdeà
+__USE_XOPEN2K
+
+
+507 
+ $posix_mem®ign
+ (**
+__mem±r
+,
+size_t
+
+__®ignm’t
+, size_ˆ
+__size
+)
+
+508
+__THROW
+
+ `__nÚnuÎ
+ ((1)è
+__wur
+;
+
+511
+__BEGIN_NAMESPACE_STD
+
+
+513 
+ $abÜt
+ (è
+__THROW
+
+ `__©Œibu‹__
+ ((
+__nÜ‘uº__
+));
+
+517 
+ `©ex™
+ ((*
+__func
+è()è
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+519 #ifdeà
+__USE_GNU
+
+
+523 #ifdeà
+__ýlu¥lus
+
+
+524 "C++" 
+ `©_quick_ex™
+ ((*
+__func
+) ())
+
+525
+__THROW
+
+ `__asm
+ ("©_quick_ex™"è
+ `__nÚnuÎ
+ ((1));
+
+527 
+ `©_quick_ex™
+ ((*
+__func
+è()è
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+530
+__END_NAMESPACE_STD
+
+
+532 #ifdef
+__USE_MISC
+
+
+535 
+ `Ú_ex™
+ ((*
+__func
+è(
+__¡©us
+, *
+__¬g
+), *__arg)
+
+536
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+539
+__BEGIN_NAMESPACE_STD
+
+
+543 
+ $ex™
+ (
+__¡©us
+__THROW
+
+ `__©Œibu‹__
+ ((
+__nÜ‘uº__
+));
+
+545 #ifdeà
+__USE_GNU
+
+
+551 
+ $quick_ex™
+ (
+__¡©us
+__THROW
+
+ `__©Œibu‹__
+ ((
+__nÜ‘uº__
+));
+
+553
+__END_NAMESPACE_STD
+
+
+555 #ifdeà
+__USE_ISOC99
+
+
+556
+__BEGIN_NAMESPACE_C99
+
+
+559 
+ $_Ex™
+ (
+__¡©us
+__THROW
+
+ `__©Œibu‹__
+ ((
+__nÜ‘uº__
+));
+
+560
+__END_NAMESPACE_C99
+
+
+564
+__BEGIN_NAMESPACE_STD
+
+
+566 *
+ $g‘’v
+ (
+__cÚ¡
+ *
+__Çme
+__THROW
+
+ `__nÚnuÎ
+ ((1)è
+__wur
+;
+
+567
+__END_NAMESPACE_STD
+
+
+571 *
+ $__£cu»_g‘’v
+ (
+__cÚ¡
+ *
+__Çme
+)
+
+572
+__THROW
+
+ `__nÚnuÎ
+ ((1)è
+__wur
+;
+
+574 #ià
+defšed
+
+__USE_SVID
+ || defšed
+__USE_XOPEN
+
+
+578 
+ $pu‹nv
+ (*
+__¡ršg
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+581 #ià
+defšed
+
+__USE_BSD
+ || defšed
+__USE_XOPEN2K
+
+
+584 
+ $£‹nv
+ (
+__cÚ¡
+ *
+__Çme
+, __cÚ¡ *
+__v®ue
+, 
+__»¶aû
+)
+
+585
+__THROW
+
+ `__nÚnuÎ
+ ((2));
+
+588 
+ $un£‹nv
+ (
+__cÚ¡
+ *
+__Çme
+__THROW
+;
+
+591 #ifdef
+__USE_MISC
+
+
+595 
+ $þ—»nv
+ (è
+__THROW
+;
+
+599 #ià
+defšed
+
+__USE_MISC
+ || defšed
+__USE_XOPEN_EXTENDED
+
+
+604 *
+ $mk‹mp
+ (*
+__‹m¶©e
+__THROW
+
+ `__nÚnuÎ
+ ((1)è
+__wur
+;
+
+614 #iâdeà
+__USE_FILE_OFFSET64
+
+
+615 
+ $mk¡emp
+ (*
+__‹m¶©e
+ `__nÚnuÎ
+ ((1)è
+__wur
+;
+
+617 #ifdeà
+__REDIRECT
+
+
+618 
+ `__REDIRECT
+ (
+mk¡emp
+, (*
+__‹m¶©e
+),
+mk¡emp64
+)
+
+619
+ `__nÚnuÎ
+ ((1)è
+__wur
+;
+
+621 
+ #mk¡emp
+
+mk¡emp64
+
+
+ )
+
+624 #ifdeà
+__USE_LARGEFILE64
+
+
+625 
+ $mk¡emp64
+ (*
+__‹m¶©e
+ `__nÚnuÎ
+ ((1)è
+__wur
+;
+
+629 #ifdeà
+__USE_MISC
+
+
+636 #iâdeà
+__USE_FILE_OFFSET64
+
+
+637 
+ $mk¡emps
+ (*
+__‹m¶©e
+, 
+__suffixËn
+ `__nÚnuÎ
+ ((1)è
+__wur
+;
+
+639 #ifdeà
+__REDIRECT
+
+
+640 
+ `__REDIRECT
+ (
+mk¡emps
+, (*
+__‹m¶©e
+, 
+__suffixËn
+),
+
+641
+mk¡emps64
+ `__nÚnuÎ
+ ((1)è
+__wur
+;
+
+643 
+ #mk¡emps
+
+mk¡emps64
+
+
+ )
+
+646 #ifdeà
+__USE_LARGEFILE64
+
+
+647 
+ $mk¡emps64
+ (*
+__‹m¶©e
+, 
+__suffixËn
+)
+
+648
+ `__nÚnuÎ
+ ((1)è
+__wur
+;
+
+652 #ià
+defšed
+
+__USE_BSD
+ || defšed
+__USE_XOPEN2K8
+
+
+658 *
+ $mkd‹mp
+ (*
+__‹m¶©e
+__THROW
+
+ `__nÚnuÎ
+ ((1)è
+__wur
+;
+
+661 #ifdeà
+__USE_GNU
+
+
+668 #iâdeà
+__USE_FILE_OFFSET64
+
+
+669 
+ $mko¡emp
+ (*
+__‹m¶©e
+, 
+__æags
+ `__nÚnuÎ
+ ((1)è
+__wur
+;
+
+671 #ifdeà
+__REDIRECT
+
+
+672 
+ `__REDIRECT
+ (
+mko¡emp
+, (*
+__‹m¶©e
+, 
+__æags
+),
+mko¡emp64
+)
+
+673
+ `__nÚnuÎ
+ ((1)è
+__wur
+;
+
+675 
+ #mko¡emp
+
+mko¡emp64
+
+
+ )
+
+678 #ifdeà
+__USE_LARGEFILE64
+
+
+679 
+ $mko¡emp64
+ (*
+__‹m¶©e
+, 
+__æags
+ `__nÚnuÎ
+ ((1)è
+__wur
+;
+
+688 #iâdeà
+__USE_FILE_OFFSET64
+
+
+689 
+ $mko¡emps
+ (*
+__‹m¶©e
+, 
+__suffixËn
+, 
+__æags
+)
+
+690
+ `__nÚnuÎ
+ ((1)è
+__wur
+;
+
+692 #ifdeà
+__REDIRECT
+
+
+693 
+ `__REDIRECT
+ (
+mko¡emps
+, (*
+__‹m¶©e
+, 
+__suffixËn
+,
+
+694 
+__æags
+),
+mko¡emps64
+)
+
+695
+ `__nÚnuÎ
+ ((1)è
+__wur
+;
+
+697 
+ #mko¡emps
+
+mko¡emps64
+
+
+ )
+
+700 #ifdeà
+__USE_LARGEFILE64
+
+
+701 
+ $mko¡emps64
+ (*
+__‹m¶©e
+, 
+__suffixËn
+, 
+__æags
+)
+
+702
+ `__nÚnuÎ
+ ((1)è
+__wur
+;
+
+707
+__BEGIN_NAMESPACE_STD
+
+
+712 
+ $sy¡em
+ (
+__cÚ¡
+ *
+__commªd
+__wur
+;
+
+713
+__END_NAMESPACE_STD
+
+
+716 #ifdef
+__USE_GNU
+
+
+719 *
+ $ÿnÚiÿlize_fže_Çme
+ (
+__cÚ¡
+ *
+__Çme
+)
+
+720
+__THROW
+
+ `__nÚnuÎ
+ ((1)è
+__wur
+;
+
+723 #ià
+defšed
+
+__USE_BSD
+ || defšed
+__USE_XOPEN_EXTENDED
+
+
+729 *
+ $»®·th
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__Çme
+,
+
+730 *
+__»¡riù
+
+__»sÞved
+__THROW
+
+__wur
+;
+
+735 #iâdeà
+__COMPAR_FN_T
+
+
+736 
+ #__COMPAR_FN_T
+
+
+ )
+
+737 (*
+ t__com·r_â_t
+è(
+ t__cÚ¡
+ *, __const *);
+
+739 #ifdef
+__USE_GNU
+
+
+740 
+__com·r_â_t
+
+ tcom·risÚ_â_t
+;
+
+743 #ifdeà
+__USE_GNU
+
+
+744 (*
+ t__com·r_d_â_t
+è(
+ t__cÚ¡
+ *, __const *, *);
+
+747
+__BEGIN_NAMESPACE_STD
+
+
+750 *
+ $b£¬ch
+ (
+__cÚ¡
+ *
+__key
+, __cÚ¡ *
+__ba£
+,
+
+751
+size_t
+
+__nmemb
+, size_ˆ
+__size
+,
+__com·r_â_t
+
+__com·r
+)
+
+752
+ `__nÚnuÎ
+ ((1, 2, 5)è
+__wur
+;
+
+756 
+ $qsÜt
+ (*
+__ba£
+,
+size_t
+
+__nmemb
+, size_ˆ
+__size
+,
+
+757
+__com·r_â_t
+
+__com·r
+ `__nÚnuÎ
+ ((1, 4));
+
+758 #ifdeà
+__USE_GNU
+
+
+759 
+ $qsÜt_r
+ (*
+__ba£
+,
+size_t
+
+__nmemb
+, size_ˆ
+__size
+,
+
+760
+__com·r_d_â_t
+
+__com·r
+, *
+__¬g
+)
+
+761
+ `__nÚnuÎ
+ ((1, 4));
+
+766 
+ $abs
+ (
+__x
+__THROW
+
+ `__©Œibu‹__
+ ((
+__cÚ¡__
+)è
+__wur
+;
+
+767 
+ $Ïbs
+ (
+__x
+__THROW
+
+ `__©Œibu‹__
+ ((
+__cÚ¡__
+)è
+__wur
+;
+
+768
+__END_NAMESPACE_STD
+
+
+770 #ifdeà
+__USE_ISOC99
+
+
+771
+__ex‹nsiÚ__
+ 
+ $Îabs
+ (
+__x
+)
+
+772
+__THROW
+
+ `__©Œibu‹__
+ ((
+__cÚ¡__
+)è
+__wur
+;
+
+776
+__BEGIN_NAMESPACE_STD
+
+
+780
+div_t
+
+ $div
+ (
+__num”
+, 
+__d’om
+)
+
+781
+__THROW
+
+ `__©Œibu‹__
+ ((
+__cÚ¡__
+)è
+__wur
+;
+
+782
+ldiv_t
+
+ $ldiv
+ (
+__num”
+, 
+__d’om
+)
+
+783
+__THROW
+
+ `__©Œibu‹__
+ ((
+__cÚ¡__
+)è
+__wur
+;
+
+784
+__END_NAMESPACE_STD
+
+
+786 #ifdeà
+__USE_ISOC99
+
+
+787
+__BEGIN_NAMESPACE_C99
+
+
+788
+__ex‹nsiÚ__
+
+Îdiv_t
+
+ $Îdiv
+ (
+__num”
+,
+
+789 
+__d’om
+)
+
+790
+__THROW
+
+ `__©Œibu‹__
+ ((
+__cÚ¡__
+)è
+__wur
+;
+
+791
+__END_NAMESPACE_C99
+
+
+795 #ià
+defšed
+
+__USE_SVID
+ || defšed
+__USE_XOPEN_EXTENDED
+
+
+802 *
+ $ecvt
+ (
+__v®ue
+, 
+__ndig™
+, *
+__»¡riù
+
+__deýt
+,
+
+803 *
+__»¡riù
+
+__sign
+__THROW
+
+ `__nÚnuÎ
+ ((3, 4)è
+__wur
+;
+
+808 *
+ $fcvt
+ (
+__v®ue
+, 
+__ndig™
+, *
+__»¡riù
+
+__deýt
+,
+
+809 *
+__»¡riù
+
+__sign
+__THROW
+
+ `__nÚnuÎ
+ ((3, 4)è
+__wur
+;
+
+814 *
+ $gcvt
+ (
+__v®ue
+, 
+__ndig™
+, *
+__buf
+)
+
+815
+__THROW
+
+ `__nÚnuÎ
+ ((3)è
+__wur
+;
+
+818 #ifdeà
+__USE_MISC
+
+
+820 *
+ $qecvt
+ (
+__v®ue
+, 
+__ndig™
+,
+
+821 *
+__»¡riù
+
+__deýt
+, *__»¡riù
+__sign
+)
+
+822
+__THROW
+
+ `__nÚnuÎ
+ ((3, 4)è
+__wur
+;
+
+823 *
+ $qfcvt
+ (
+__v®ue
+, 
+__ndig™
+,
+
+824 *
+__»¡riù
+
+__deýt
+, *__»¡riù
+__sign
+)
+
+825
+__THROW
+
+ `__nÚnuÎ
+ ((3, 4)è
+__wur
+;
+
+826 *
+ $qgcvt
+ (
+__v®ue
+, 
+__ndig™
+, *
+__buf
+)
+
+827
+__THROW
+
+ `__nÚnuÎ
+ ((3)è
+__wur
+;
+
+832 
+ $ecvt_r
+ (
+__v®ue
+, 
+__ndig™
+, *
+__»¡riù
+
+__deýt
+,
+
+833 *
+__»¡riù
+
+__sign
+, *__»¡riù
+__buf
+,
+
+834
+size_t
+
+__Ën
+__THROW
+
+ `__nÚnuÎ
+ ((3, 4, 5));
+
+835 
+ $fcvt_r
+ (
+__v®ue
+, 
+__ndig™
+, *
+__»¡riù
+
+__deýt
+,
+
+836 *
+__»¡riù
+
+__sign
+, *__»¡riù
+__buf
+,
+
+837
+size_t
+
+__Ën
+__THROW
+
+ `__nÚnuÎ
+ ((3, 4, 5));
+
+839 
+ $qecvt_r
+ (
+__v®ue
+, 
+__ndig™
+,
+
+840 *
+__»¡riù
+
+__deýt
+, *__»¡riù
+__sign
+,
+
+841 *
+__»¡riù
+
+__buf
+,
+size_t
+
+__Ën
+)
+
+842
+__THROW
+
+ `__nÚnuÎ
+ ((3, 4, 5));
+
+843 
+ $qfcvt_r
+ (
+__v®ue
+, 
+__ndig™
+,
+
+844 *
+__»¡riù
+
+__deýt
+, *__»¡riù
+__sign
+,
+
+845 *
+__»¡riù
+
+__buf
+,
+size_t
+
+__Ën
+)
+
+846
+__THROW
+
+ `__nÚnuÎ
+ ((3, 4, 5));
+
+851
+__BEGIN_NAMESPACE_STD
+
+
+854 
+ $mbËn
+ (
+__cÚ¡
+ *
+__s
+,
+size_t
+
+__n
+__THROW
+
+__wur
+;
+
+857 
+ $mbtowc
+ (
+wch¬_t
+ *
+__»¡riù
+
+__pwc
+,
+
+858
+__cÚ¡
+ *
+__»¡riù
+
+__s
+,
+size_t
+
+__n
+__THROW
+
+__wur
+;
+
+861 
+ $wùomb
+ (*
+__s
+,
+wch¬_t
+
+__wch¬
+__THROW
+
+__wur
+;
+
+865
+size_t
+
+ $mb¡owcs
+ (
+wch¬_t
+ *
+__»¡riù
+
+__pwcs
+,
+
+866
+__cÚ¡
+ *
+__»¡riù
+
+__s
+,
+size_t
+
+__n
+__THROW
+;
+
+868
+size_t
+
+ $wc¡ombs
+ (*
+__»¡riù
+
+__s
+,
+
+869
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__pwcs
+,
+size_t
+
+__n
+)
+
+870
+__THROW
+;
+
+871
+__END_NAMESPACE_STD
+
+
+874 #ifdeà
+__USE_SVID
+
+
+879 
+ $½m©ch
+ (
+__cÚ¡
+ *
+__»¥Ú£
+__THROW
+
+ `__nÚnuÎ
+ ((1)è
+__wur
+;
+
+883 #ifdeà
+__USE_XOPEN_EXTENDED
+
+
+890 
+ $g‘subÝt
+ (**
+__»¡riù
+
+__ÝtiÚp
+,
+
+891 *
+__cÚ¡
+ *
+__»¡riù
+
+__tok’s
+,
+
+892 **
+__»¡riù
+
+__v®u•
+)
+
+893
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2, 3)è
+__wur
+;
+
+897 #ifdeà
+__USE_XOPEN
+
+
+899 
+ $£tkey
+ (
+__cÚ¡
+ *
+__key
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+905 #ifdeà
+__USE_XOPEN2K
+
+
+907 
+ $posix_Ý’±
+ (
+__oæag
+__wur
+;
+
+910 #ifdeà
+__USE_XOPEN
+
+
+915 
+ $g¿Á±
+ (
+__fd
+__THROW
+;
+
+919 
+ $uÆock±
+ (
+__fd
+__THROW
+;
+
+924 *
+ $±¢ame
+ (
+__fd
+__THROW
+
+__wur
+;
+
+927 #ifdeà
+__USE_GNU
+
+
+931 
+ $±¢ame_r
+ (
+__fd
+, *
+__buf
+,
+size_t
+
+__buæ’
+)
+
+932
+__THROW
+
+ `__nÚnuÎ
+ ((2));
+
+935 
+ `g‘±
+ ();
+
+938 #ifdeà
+__USE_BSD
+
+
+942 
+ $g‘lßdavg
+ (
+__lßdavg
+[], 
+__ÃËm
+)
+
+943
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+948 #ià
+__USE_FORTIFY_LEVEL
+ > 0 &&
+defšed
+
+__ex‹º_®ways_šlše
+
+
+949 
+ ~<b™s/¡dlib.h
+>
+
+951 #ifdeà
+__LDBL_COMPAT
+
+
+952 
+ ~<b™s/¡dlib-ldbl.h
+>
+
+956 #undeà
+__Ãed_m®loc_ªd_ÿÎoc
+
+
+958
+__END_DECLS
+
+
+ @/usr/include/sys/cdefs.h
+
+20 #iâdef
+_SYS_CDEFS_H
+
+
+21 
+ #_SYS_CDEFS_H
+ 1
+
+ )
+
+24 #iâdeà
+_FEATURES_H
+
+
+25 
+ ~<ã©u»s.h
+>
+
+31 #ià
+defšed
+
+__GNUC__
+ && !defšed
+__STDC__
+
+
+36 #undeà
+__P
+
+
+37 #undeà
+__PMT
+
+
+39 #ifdeà
+__GNUC__
+
+
+46 #ià!
+defšed
+
+__ýlu¥lus
+ &&
+__GNUC_PREREQ
+ (3, 3)
+
+47 
+ #__THROW
+
+ `__©Œibu‹__
+ ((
+__nÙhrow__
+))
+
+ )
+
+48 
+ #__NTH
+(
+fù
+ `__©Œibu‹__
+ ((
+__nÙhrow__
+)è
+ )
+fct
+
+50 #ià
+defšed
+
+__ýlu¥lus
+ &&
+__GNUC_PREREQ
+ (2,8)
+
+51 
+ #__THROW
+
+ `throw
+ ()
+
+ )
+
+52 
+ #__NTH
+(
+fù
+èfù
+ `throw
+ ()
+
+ )
+
+54 
+ #__THROW
+
+
+ )
+
+55 
+ #__NTH
+(
+fù
+ )
+fct
+
+61 
+ #__šlše
+
+
+ )
+
+63 
+ #__THROW
+
+
+ )
+
+64 
+ #__NTH
+(
+fù
+ )
+fct
+
+66 
+ #__cÚ¡
+ cÚ¡
+
+ )
+
+67 
+ #__sigÃd
+ sigÃd
+
+ )
+
+68 
+ #__vÞ©že
+ vÞ©že
+
+ )
+
+74 
+ #__P
+(
+¬gs
+ )
+args
+
+75 
+ #__PMT
+(
+¬gs
+ )
+args
+
+80 
+ #__CONCAT
+(
+x
+,
+y
+èx ##
+ )
+y
+
+81 
+ #__STRING
+(
+x
+è#x
+
+ )
+
+84 
+ #__±r_t
+ *
+
+ )
+
+85 
+ #__lÚg_doubË_t
+ 
+
+ )
+
+89 #ifdef
+__ýlu¥lus
+
+
+90 
+ #__BEGIN_DECLS
+ "C" {
+
+ )
+
+91 
+ #__END_DECLS
+ }
+
+ )
+
+93 
+ #__BEGIN_DECLS
+
+
+ )
+
+94 
+ #__END_DECLS
+
+
+ )
+
+103 #ià
+defšed
+
+__ýlu¥lus
+ && defšed
+_GLIBCPP_USE_NAMESPACES
+
+
+104 
+ #__BEGIN_NAMESPACE_STD
+
+Çme¥aû
+
+¡d
+ {
+
+ )
+
+105 
+ #__END_NAMESPACE_STD
+ }
+
+ )
+
+106 
+ #__USING_NAMESPACE_STD
+(
+Çme
+usšg
+
+¡d
+::Çme;
+
+ )
+
+107 
+ #__BEGIN_NAMESPACE_C99
+
+Çme¥aû
+
+__c99
+ {
+
+ )
+
+108 
+ #__END_NAMESPACE_C99
+ }
+
+ )
+
+109 
+ #__USING_NAMESPACE_C99
+(
+Çme
+usšg
+
+__c99
+::Çme;
+
+ )
+
+114 
+ #__BEGIN_NAMESPACE_STD
+
+
+ )
+
+115 
+ #__END_NAMESPACE_STD
+
+
+ )
+
+116 
+ #__USING_NAMESPACE_STD
+(
+Çme
+)
+
+ )
+
+117 
+ #__BEGIN_NAMESPACE_C99
+
+
+ )
+
+118 
+ #__END_NAMESPACE_C99
+
+
+ )
+
+119 
+ #__USING_NAMESPACE_C99
+(
+Çme
+)
+
+ )
+
+124 #iâdeà
+__BOUNDED_POINTERS__
+
+
+125 
+ #__bounded
+
+
+ )
+
+126 
+ #__unbounded
+
+
+ )
+
+127 
+ #__±rv®ue
+
+
+ )
+
+132 
+ #__bos
+(
+±r
+ `__bužtš_objeù_size
+ (±r,
+__USE_FORTIFY_LEVEL
+ > 1)
+
+ )
+
+133 
+ #__bos0
+(
+±r
+ `__bužtš_objeù_size
+ (±r, 0)
+
+ )
+
+135 #ià
+__GNUC_PREREQ
+ (4,3)
+
+136 
+ #__w¬ndeþ
+(
+Çme
+,
+msg
+) \
+
+137 
+ `Çme
+ (è
+ `__©Œibu‹__
+((
+ `__w¬nšg__
+ (
+msg
+)))
+
+ )
+
+138 
+ #__w¬Ç‰r
+(
+msg
+ `__©Œibu‹__
+((
+ `__w¬nšg__
+ (msg)))
+
+ )
+
+139 
+ #__”rÜdeþ
+(
+Çme
+,
+msg
+) \
+
+140 
+ `Çme
+ (è
+ `__©Œibu‹__
+((
+ `__”rÜ__
+ (
+msg
+)))
+
+ )
+
+142 
+ #__w¬ndeþ
+(
+Çme
+,
+msg
+è 
+ `Çme
+ ()
+
+ )
+
+143 
+ #__w¬Ç‰r
+(
+msg
+)
+
+ )
+
+144 
+ #__”rÜdeþ
+(
+Çme
+,
+msg
+è 
+ `Çme
+ ()
+
+ )
+
+148 #ià
+__GNUC_PREREQ
+ (2,97)
+
+150 
+ #__æex¬r
+ []
+
+ )
+
+152 #ifdeà
+__GNUC__
+
+
+153 
+ #__æex¬r
+ [0]
+
+ )
+
+155 #ià
+defšed
+
+__STDC_VERSION__
+ && __STDC_VERSION__ >= 199901L
+
+156 
+ #__æex¬r
+ []
+
+ )
+
+159 
+ #__æex¬r
+ [1]
+
+ )
+
+175 #ià
+defšed
+
+__GNUC__
+ && __GNUC__ >= 2
+
+177 
+ #__REDIRECT
+(
+Çme
+,
+´Ùo
+,
+®Ÿs
+èÇm´ÙØ
+ `__asm__
+ (
+ `__ASMNAME
+ (#®Ÿs))
+
+ )
+
+178 #ifdeà
+__ýlu¥lus
+
+
+179 
+ #__REDIRECT_NTH
+(
+Çme
+,
+´Ùo
+,
+®Ÿs
+) \
+
+180
+Çme
+
+´Ùo
+
+__THROW
+
+ `__asm__
+ (
+ `__ASMNAME
+ (#®Ÿs))
+
+ )
+
+182 
+ #__REDIRECT_NTH
+(
+Çme
+,
+´Ùo
+,
+®Ÿs
+) \
+
+183
+Çme
+
+´Ùo
+
+ `__asm__
+ (
+ `__ASMNAME
+ (#®Ÿs)è
+__THROW
+
+
+ )
+
+185 
+ #__ASMNAME
+(
+úame
+ `__ASMNAME2
+ (
+__USER_LABEL_PREFIX__
+, cÇme)
+
+ )
+
+186 
+ #__ASMNAME2
+(
+´efix
+,
+úame
+ `__STRING
+ (´efixè
+ )
+cname
+
+199 #ià!
+defšed
+
+__GNUC__
+ || __GNUC__ < 2
+
+200 
+ #__©Œibu‹__
+(
+xyz
+
+ )
+
+206 #ià
+__GNUC_PREREQ
+ (2,96)
+
+207 
+ #__©Œibu‹_m®loc__
+
+ `__©Œibu‹__
+ ((
+__m®loc__
+))
+
+ )
+
+209 
+ #__©Œibu‹_m®loc__
+
+
+ )
+
+215 #ià
+__GNUC_PREREQ
+ (2,96)
+
+216 
+ #__©Œibu‹_pu»__
+
+ `__©Œibu‹__
+ ((
+__pu»__
+))
+
+ )
+
+218 
+ #__©Œibu‹_pu»__
+
+
+ )
+
+224 #ià
+__GNUC_PREREQ
+ (3,1)
+
+225 
+ #__©Œibu‹_u£d__
+
+ `__©Œibu‹__
+ ((
+__u£d__
+))
+
+ )
+
+226 
+ #__©Œibu‹_nošlše__
+
+ `__©Œibu‹__
+ ((
+__nošlše__
+))
+
+ )
+
+228 
+ #__©Œibu‹_u£d__
+
+ `__©Œibu‹__
+ ((
+__unu£d__
+))
+
+ )
+
+229 
+ #__©Œibu‹_nošlše__
+
+
+ )
+
+233 #ià
+__GNUC_PREREQ
+ (3,2)
+
+234 
+ #__©Œibu‹_d•»ÿ‹d__
+
+ `__©Œibu‹__
+ ((
+__d•»ÿ‹d__
+))
+
+ )
+
+236 
+ #__©Œibu‹_d•»ÿ‹d__
+
+
+ )
+
+245 #ià
+__GNUC_PREREQ
+ (2,8)
+
+246 
+ #__©Œibu‹_fÜm©_¬g__
+(
+x
+ `__©Œibu‹__
+ ((
+ `__fÜm©_¬g__
+ (x)))
+
+ )
+
+248 
+ #__©Œibu‹_fÜm©_¬g__
+(
+x
+
+ )
+
+255 #ià
+__GNUC_PREREQ
+ (2,97)
+
+256 
+ #__©Œibu‹_fÜm©_¡rfmÚ__
+(
+a
+,
+b
+) \
+
+257
+ `__©Œibu‹__
+ ((
+ `__fÜm©__
+ (
+__¡rfmÚ__
+,
+a
+,
+b
+)))
+
+ )
+
+259 
+ #__©Œibu‹_fÜm©_¡rfmÚ__
+(
+a
+,
+b
+
+ )
+
+264 #ià
+__GNUC_PREREQ
+ (3,3)
+
+265 
+ #__nÚnuÎ
+(
+·¿ms
+ `__©Œibu‹__
+ ((
+__nÚnuÎ__
+…¬ams))
+
+ )
+
+267 
+ #__nÚnuÎ
+(
+·¿ms
+)
+
+ )
+
+272 #ià
+__GNUC_PREREQ
+ (3,4)
+
+273 
+ #__©Œibu‹_w¬n_unu£d_»suÉ__
+ \
+
+274
+ `__©Œibu‹__
+ ((
+__w¬n_unu£d_»suÉ__
+))
+
+ )
+
+275 #ià
+__USE_FORTIFY_LEVEL
+ > 0
+
+276 
+ #__wur
+
+__©Œibu‹_w¬n_unu£d_»suÉ__
+
+
+ )
+
+279 
+ #__©Œibu‹_w¬n_unu£d_»suÉ__
+
+
+ )
+
+281 #iâdeà
+__wur
+
+
+282 
+ #__wur
+
+
+ )
+
+286 #ià
+__GNUC_PREREQ
+ (3,2)
+
+287 
+ #__®ways_šlše
+
+__šlše
+
+ `__©Œibu‹__
+ ((
+__®ways_šlše__
+))
+
+ )
+
+289 
+ #__®ways_šlše
+
+__šlše
+
+
+ )
+
+294 #ià!
+defšed
+
+__ýlu¥lus
+ ||
+__GNUC_PREREQ
+ (4,3)
+
+295 #ià
+defšed
+
+__GNUC_STDC_INLINE__
+ || defšed
+__ýlu¥lus
+
+
+296 
+ #__ex‹º_šlše
+
+__šlše
+
+ `__©Œibu‹__
+ ((
+__gnu_šlše__
+))
+
+ )
+
+297 #ià
+__GNUC_PREREQ
+ (4,3)
+
+298 
+ #__ex‹º_®ways_šlše
+ \
+
+299
+__®ways_šlše
+
+ `__©Œibu‹__
+ ((
+__gnu_šlše__
+,
+__¬tificŸl__
+))
+
+ )
+
+301 
+ #__ex‹º_®ways_šlše
+ \
+
+302
+__®ways_šlše
+
+ `__©Œibu‹__
+ ((
+__gnu_šlše__
+))
+
+ )
+
+305 
+ #__ex‹º_šlše
+
+__šlše
+
+
+ )
+
+306 #ià
+__GNUC_PREREQ
+ (4,3)
+
+307 
+ #__ex‹º_®ways_šlše
+ \
+
+308
+__®ways_šlše
+
+ `__©Œibu‹__
+ ((
+__¬tificŸl__
+))
+
+ )
+
+310 
+ #__ex‹º_®ways_šlše
+
+__®ways_šlše
+
+
+ )
+
+317 #ià
+__GNUC_PREREQ
+ (4,3)
+
+318 
+ #__va_¬g_·ck
+(è
+ `__bužtš_va_¬g_·ck
+ ()
+
+ )
+
+319 
+ #__va_¬g_·ck_Ën
+(è
+ `__bužtš_va_¬g_·ck_Ën
+ ()
+
+ )
+
+326 #ià!
+__GNUC_PREREQ
+ (2,8)
+
+327 
+ #__ex‹nsiÚ__
+
+
+ )
+
+331 #ià!
+__GNUC_PREREQ
+ (2,92)
+
+332 
+ #__»¡riù
+
+
+ )
+
+338 #ià
+__GNUC_PREREQ
+ (3,1è&& !
+defšed
+
+__GNUG__
+
+
+339 
+ #__»¡riù_¬r
+
+__»¡riù
+
+
+ )
+
+341 #ifdeà
+__GNUC__
+
+
+342 
+ #__»¡riù_¬r
+
+
+ )
+
+344 #ià
+defšed
+
+__STDC_VERSION__
+ && __STDC_VERSION__ >= 199901L
+
+345 
+ #__»¡riù_¬r
+
+»¡riù
+
+
+ )
+
+348 
+ #__»¡riù_¬r
+
+
+ )
+
+353 
+ ~<b™s/wÜdsize.h
+>
+
+355 #ià
+defšed
+
+__LONG_DOUBLE_MATH_OPTIONAL
+ && defšed
+__NO_LONG_DOUBLE_MATH
+
+
+356 
+ #__LDBL_COMPAT
+ 1
+
+ )
+
+357 #ifdeà
+__REDIRECT
+
+
+358 
+ #__LDBL_REDIR1
+(
+Çme
+,
+´Ùo
+,
+®Ÿs
+ `__REDIRECT
+ (Çme,…rÙo,‡lŸs)
+
+ )
+
+359 
+ #__LDBL_REDIR
+(
+Çme
+,
+´Ùo
+) \
+
+360
+ `__LDBL_REDIR1
+ (
+Çme
+,
+´Ùo
+,
+__Ædbl_
+##Çme)
+
+ )
+
+361 
+ #__LDBL_REDIR1_NTH
+(
+Çme
+,
+´Ùo
+,
+®Ÿs
+ `__REDIRECT_NTH
+ (Çme,…rÙo,‡lŸs)
+
+ )
+
+362 
+ #__LDBL_REDIR_NTH
+(
+Çme
+,
+´Ùo
+) \
+
+363
+ `__LDBL_REDIR1_NTH
+ (
+Çme
+,
+´Ùo
+,
+__Ædbl_
+##Çme)
+
+ )
+
+364 
+ #__LDBL_REDIR1_DECL
+(
+Çme
+,
+®Ÿs
+) \
+
+365
+ `__ty³of
+ (
+Çme
+èÇm
+ `__asm
+ (
+ `__ASMNAME
+ (#®Ÿs));
+
+ )
+
+366 
+ #__LDBL_REDIR_DECL
+(
+Çme
+) \
+
+367
+ `__ty³of
+ (
+Çme
+èÇm
+ `__asm
+ (
+ `__ASMNAME
+ ("__Ædbl_" #Çme));
+
+ )
+
+368 
+ #__REDIRECT_LDBL
+(
+Çme
+,
+´Ùo
+,
+®Ÿs
+) \
+
+369
+ `__LDBL_REDIR1
+ (
+Çme
+,
+´Ùo
+,
+__Ædbl_
+##
+®Ÿs
+)
+
+ )
+
+370 
+ #__REDIRECT_NTH_LDBL
+(
+Çme
+,
+´Ùo
+,
+®Ÿs
+) \
+
+371
+ `__LDBL_REDIR1_NTH
+ (
+Çme
+,
+´Ùo
+,
+__Ædbl_
+##
+®Ÿs
+)
+
+ )
+
+374 #ià!
+defšed
+
+__LDBL_COMPAT
+ || !defšed
+__REDIRECT
+
+
+375 
+ #__LDBL_REDIR1
+(
+Çme
+,
+´Ùo
+,
+®Ÿs
+èÇm
+ )
+proto
+
+376 
+ #__LDBL_REDIR
+(
+Çme
+,
+´Ùo
+èÇm
+ )
+proto
+
+377 
+ #__LDBL_REDIR1_NTH
+(
+Çme
+,
+´Ùo
+,
+®Ÿs
+èÇm´ÙØ
+__THROW
+
+
+ )
+
+378 
+ #__LDBL_REDIR_NTH
+(
+Çme
+,
+´Ùo
+èÇm´ÙØ
+__THROW
+
+
+ )
+
+379 
+ #__LDBL_REDIR_DECL
+(
+Çme
+)
+
+ )
+
+380 #ifdeà
+__REDIRECT
+
+
+381 
+ #__REDIRECT_LDBL
+(
+Çme
+,
+´Ùo
+,
+®Ÿs
+ `__REDIRECT
+ (Çme,…rÙo,‡lŸs)
+
+ )
+
+382 
+ #__REDIRECT_NTH_LDBL
+(
+Çme
+,
+´Ùo
+,
+®Ÿs
+) \
+
+383
+ `__REDIRECT_NTH
+ (
+Çme
+,
+´Ùo
+,
+®Ÿs
+)
+
+ )
+
+ @/usr/include/alloca.h
+
+19 #iâdef
+_ALLOCA_H
+
+
+20 
+ #_ALLOCA_H
+ 1
+
+ )
+
+22 
+ ~<ã©u»s.h
+>
+
+24 
+ #__Ãed_size_t
+
+
+ )
+
+25 
+ ~<¡ddef.h
+>
+
+27
+ g__BEGIN_DECLS
+
+
+30 #undeà
+®loÿ
+
+
+33 *
+ $®loÿ
+ (
+size_t
+
+__size
+__THROW
+;
+
+35 #ifdef
+__GNUC__
+
+
+36 
+ #®loÿ
+(
+size
+ `__bužtš_®loÿ
+ (size)
+
+ )
+
+39
+__END_DECLS
+
+
+ @/usr/include/bits/byteswap.h
+
+21 #ià!
+defšed
+
+_BYTESWAP_H
+ && !defšed
+_NETINET_IN_H
+ && !defšed
+_ENDIAN_H
+
+
+25 #iâdeà
+_BITS_BYTESWAP_H
+
+
+26 
+ #_BITS_BYTESWAP_H
+ 1
+
+ )
+
+28 
+ ~<b™s/wÜdsize.h
+>
+
+31 
+ #__bsw­_cÚ¡ªt_16
+(
+x
+) \
+
+32 ((((
+x
+è>> 8è& 0xffè| (((xè& 0xffè<< 8))
+
+ )
+
+34 #ià
+defšed
+
+__GNUC__
+ && __GNUC__ >= 2
+
+35 
+ #__bsw­_16
+(
+x
+) \
+
+36 (
+__ex‹nsiÚ__
+ \
+
+37 ({ 
+__v
+,
+__x
+ = (
+x
+); \
+
+38 ià(
+ `__bužtš_cÚ¡ªt_p
+ (
+__x
+)) \
+
+39
+__v
+ =
+ `__bsw­_cÚ¡ªt_16
+ (
+__x
+); \
+
+41
+ `__asm__
+ ("rorw $8, %w0" \
+
+42 : "ô" (
+__v
+) \
+
+43 : "0" (
+__x
+) \
+
+45
+__v
+; }))
+
+ )
+
+48 
+ #__bsw­_16
+(
+x
+) \
+
+49 (
+__ex‹nsiÚ__
+ \
+
+50 ({ 
+__x
+ = (
+x
+);
+ `__bsw­_cÚ¡ªt_16
+ (__x); }))
+
+ )
+
+55 
+ #__bsw­_cÚ¡ªt_32
+(
+x
+) \
+
+56 ((((
+x
+) & 0xff000000) >> 24) | (((x) & 0x00ff0000) >> 8) | \
+
+57 (((
+x
+è& 0x0000ff00è<< 8è| (((xè& 0x000000ffè<< 24))
+
+ )
+
+59 #ià
+defšed
+
+__GNUC__
+ && __GNUC__ >= 2
+
+60 #ià
+__WORDSIZE
+ =ð64 || (
+defšed
+
+__i486__
+ || defšed
+__³Áium__
+ \
+
+61 ||
+defšed
+
+ g__³Áium´o__
+ || defšed
+ g__³Áium4__
+ \
+
+62 ||
+defšed
+
+ g__k8__
+ || defšed
+ g__©hlÚ__
+ \
+
+63 ||
+defšed
+
+ g__k6__
+ || defšed
+ g__nocÚa__
+ \
+
+64 ||
+defšed
+
+ g__cÜe2__
+ || defšed
+ g__geode__
+ \
+
+65 ||
+defšed
+
+ g__amdçm10__
+)
+
+68 
+ #__bsw­_32
+(
+x
+) \
+
+69 (
+__ex‹nsiÚ__
+ \
+
+70 ({ 
+__v
+,
+__x
+ = (
+x
+); \
+
+71 ià(
+ `__bužtš_cÚ¡ªt_p
+ (
+__x
+)) \
+
+72
+__v
+ =
+ `__bsw­_cÚ¡ªt_32
+ (
+__x
+); \
+
+74
+ `__asm__
+ ("bsw­ %0" : "ô" (
+__v
+è: "0" (
+__x
+)); \
+
+75
+__v
+; }))
+
+ )
+
+77 
+ #__bsw­_32
+(
+x
+) \
+
+78 (
+__ex‹nsiÚ__
+ \
+
+79 ({ 
+__v
+,
+__x
+ = (
+x
+); \
+
+80 ià(
+ `__bužtš_cÚ¡ªt_p
+ (
+__x
+)) \
+
+81
+__v
+ =
+ `__bsw­_cÚ¡ªt_32
+ (
+__x
+); \
+
+83
+ `__asm__
+ ("rorw $8, %w0;" \
+
+86 : "ô" (
+__v
+) \
+
+87 : "0" (
+__x
+) \
+
+89
+__v
+; }))
+
+ )
+
+92 
+ #__bsw­_32
+(
+x
+) \
+
+93 (
+__ex‹nsiÚ__
+ \
+
+94 ({ 
+__x
+ = (
+x
+);
+ `__bsw­_cÚ¡ªt_32
+ (__x); }))
+
+ )
+
+98 #ià
+defšed
+
+__GNUC__
+ && __GNUC__ >= 2
+
+100 
+ #__bsw­_cÚ¡ªt_64
+(
+x
+) \
+
+101 ((((
+x
+) & 0xff00000000000000ull) >> 56) \
+
+102 | (((
+x
+) & 0x00ff000000000000ull) >> 40) \
+
+103 | (((
+x
+) & 0x0000ff0000000000ull) >> 24) \
+
+104 | (((
+x
+) & 0x000000ff00000000ull) >> 8) \
+
+105 | (((
+x
+) & 0x00000000ff000000ull) << 8) \
+
+106 | (((
+x
+) & 0x0000000000ff0000ull) << 24) \
+
+107 | (((
+x
+) & 0x000000000000ff00ull) << 40) \
+
+108 | (((
+x
+è& 0x00000000000000ffuÎè<< 56))
+
+ )
+
+110 #ià
+__WORDSIZE
+ == 64
+
+111 
+ #__bsw­_64
+(
+x
+) \
+
+112 (
+__ex‹nsiÚ__
+ \
+
+113 ({ 
+__v
+,
+__x
+ = (
+x
+); \
+
+114 ià(
+ `__bužtš_cÚ¡ªt_p
+ (
+__x
+)) \
+
+115
+__v
+ =
+ `__bsw­_cÚ¡ªt_64
+ (
+__x
+); \
+
+117
+ `__asm__
+ ("bsw­ %q0" : "ô" (
+__v
+è: "0" (
+__x
+)); \
+
+118
+__v
+; }))
+
+ )
+
+120 
+ #__bsw­_64
+(
+x
+) \
+
+121 (
+__ex‹nsiÚ__
+ \
+
+122 ({ uniÚ {
+__ex‹nsiÚ__
+ 
+__Î
+; \
+
+123 
+__l
+[2]; }
+__w
+,
+__r
+; \
+
+124 ià(
+ `__bužtš_cÚ¡ªt_p
+ (
+x
+)) \
+
+125
+__r
+.
+__Î
+ =
+ `__bsw­_cÚ¡ªt_64
+ (
+x
+); \
+
+128
+__w
+.
+__Î
+ = (
+x
+); \
+
+129
+__r
+.
+__l
+[0] =
+ `__bsw­_32
+ (
+__w
+.__l[1]); \
+
+130
+__r
+.
+__l
+[1] =
+ `__bsw­_32
+ (
+__w
+.__l[0]); \
+
+132
+__r
+.
+__Î
+; }))
+
+ )
+
+ @/usr/include/bits/endian.h
+
+3 #iâdeà
+_ENDIAN_H
+
+
+7 
+ #__BYTE_ORDER
+
+__LITTLE_ENDIAN
+
+
+ )
+
+ @/usr/include/bits/libc-lock.h
+
+20 #iâdeà
+_BITS_LIBC_LOCK_H
+
+
+21 
+ #_BITS_LIBC_LOCK_H
+ 1
+
+ )
+
+23 
+ ~<±h»ad.h
+>
+
+24 
+ #__Ãed_NULL
+
+
+ )
+
+25 
+ ~<¡ddef.h
+>
+
+34 #ifdeà
+_LIBC
+
+
+35 
+ ~<lowËv–lock.h
+>
+
+36 
+ ~<Žs.h
+>
+
+37 
+ ~<±h»ad-funùiÚs.h
+>
+
+38 
+ ~<Ӽo.h
+>
+
+39 
+ ~<gnu/ÝtiÚ-groups.h
+>
+
+43 #ià
+defšed
+
+_LIBC
+ || defšed
+_IO_MTSAFE_IO
+
+
+44 #ià(
+defšed
+
+NOT_IN_libc
+ && !defšed
+IS_IN_lib±h»ad
+è|| !defšed
+_LIBC
+
+
+45 
+±h»ad_mu‹x_t
+
+ t__libc_lock_t
+;
+
+46 ¡ruù {
+±h»ad_mu‹x_t
+
+ mmu‹x
+; }
+ t__libc_lock_»cursive_t
+;
+
+48 
+ t__libc_lock_t
+;
+
+49 ¡ruù { 
+ mlock
+; 
+ mút
+; *
+ mowÃr
+; }
+ t__libc_lock_»cursive_t
+;
+
+51 ¡ruù {
+±h»ad_mu‹x_t
+
+ mmu‹x
+; }
+ t__¹ld_lock_»cursive_t
+;
+
+52 #ifdeà
+__USE_UNIX98
+
+
+53 
+±h»ad_rwlock_t
+
+ t__libc_rwlock_t
+;
+
+55 
+__libc_rwlock_Ýaque__
+
+ t__libc_rwlock_t
+;
+
+58 
+__libc_lock_Ýaque__
+
+ t__libc_lock_t
+;
+
+59 
+__libc_lock_»cursive_Ýaque__
+
+ t__libc_lock_»cursive_t
+;
+
+60 
+__libc_rwlock_Ýaque__
+
+ t__libc_rwlock_t
+;
+
+64 
+±h»ad_key_t
+
+ t__libc_key_t
+;
+
+73 
+ #__libc_lock_defše
+(
+CLASS
+,
+NAME
+) \
+
+74
+CLASS
+
+__libc_lock_t
+
+NAME
+;
+
+ )
+
+75 
+ #__libc_rwlock_defše
+(
+CLASS
+,
+NAME
+) \
+
+76
+CLASS
+
+__libc_rwlock_t
+
+NAME
+;
+
+ )
+
+77 
+ #__libc_lock_defše_»cursive
+(
+CLASS
+,
+NAME
+) \
+
+78
+CLASS
+
+__libc_lock_»cursive_t
+
+NAME
+;
+
+ )
+
+79 
+ #__¹ld_lock_defše_»cursive
+(
+CLASS
+,
+NAME
+) \
+
+80
+CLASS
+
+__¹ld_lock_»cursive_t
+
+NAME
+;
+
+ )
+
+91 #ià
+defšed
+
+_LIBC
+ && (!defšed
+NOT_IN_libc
+ || defšed
+IS_IN_lib±h»ad
+)
+
+92 #ià
+LLL_LOCK_INITIALIZER
+ == 0
+
+93 
+ #__libc_lock_defše_š™Ÿlized
+(
+CLASS
+,
+NAME
+) \
+
+94
+CLASS
+
+__libc_lock_t
+
+NAME
+;
+
+ )
+
+96 
+ #__libc_lock_defše_š™Ÿlized
+(
+CLASS
+,
+NAME
+) \
+
+97
+CLASS
+
+__libc_lock_t
+
+NAME
+ =
+LLL_LOCK_INITIALIZER
+;
+
+ )
+
+100 #ià
+__LT_SPINLOCK_INIT
+ == 0
+
+101 
+ #__libc_lock_defše_š™Ÿlized
+(
+CLASS
+,
+NAME
+) \
+
+102
+CLASS
+
+__libc_lock_t
+
+NAME
+;
+
+ )
+
+104 
+ #__libc_lock_defše_š™Ÿlized
+(
+CLASS
+,
+NAME
+) \
+
+105
+CLASS
+
+__libc_lock_t
+
+NAME
+ =
+PTHREAD_MUTEX_INITIALIZER
+;
+
+ )
+
+109 
+ #__libc_rwlock_defše_š™Ÿlized
+(
+CLASS
+,
+NAME
+) \
+
+110
+CLASS
+
+__libc_rwlock_t
+
+NAME
+ =
+PTHREAD_RWLOCK_INITIALIZER
+;
+
+ )
+
+114 #ià
+defšed
+
+_LIBC
+ && (!defšed
+NOT_IN_libc
+ || defšed
+IS_IN_lib±h»ad
+)
+
+115 #ià
+LLL_LOCK_INITIALIZER
+ == 0
+
+116 
+ #__libc_lock_defše_š™Ÿlized_»cursive
+(
+CLASS
+,
+NAME
+) \
+
+117
+CLASS
+
+__libc_lock_»cursive_t
+
+NAME
+;
+
+ )
+
+119 
+ #__libc_lock_defše_š™Ÿlized_»cursive
+(
+CLASS
+,
+NAME
+) \
+
+120
+CLASS
+
+__libc_lock_»cursive_t
+
+NAME
+ =
+_LIBC_LOCK_RECURSIVE_INITIALIZER
+;
+
+ )
+
+122 
+ #_LIBC_LOCK_RECURSIVE_INITIALIZER
+ \
+
+123 {
+LLL_LOCK_INITIALIZER
+, 0,
+NULL
+ }
+
+ )
+
+125 
+ #__libc_lock_defše_š™Ÿlized_»cursive
+(
+CLASS
+,
+NAME
+) \
+
+126
+CLASS
+
+__libc_lock_»cursive_t
+
+NAME
+ =
+_LIBC_LOCK_RECURSIVE_INITIALIZER
+;
+
+ )
+
+127 
+ #_LIBC_LOCK_RECURSIVE_INITIALIZER
+ \
+
+128 {
+PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
+}
+
+ )
+
+131 
+ #__¹ld_lock_defše_š™Ÿlized_»cursive
+(
+CLASS
+,
+NAME
+) \
+
+132
+CLASS
+
+__¹ld_lock_»cursive_t
+
+NAME
+ =
+_RTLD_LOCK_RECURSIVE_INITIALIZER
+;
+
+ )
+
+133 
+ #_RTLD_LOCK_RECURSIVE_INITIALIZER
+ \
+
+134 {
+PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
+}
+
+ )
+
+136 
+ #__¹ld_lock_š™Ÿlize
+(
+NAME
+) \
+
+137 (è((
+NAME
+èð(
+__¹ld_lock_»cursive_t
+_RTLD_LOCK_RECURSIVE_INITIALIZER
+)
+
+ )
+
+144 #ifdeà
+__PIC__
+
+
+145 
+ #__libc_maybe_ÿÎ
+(
+FUNC
+,
+ARGS
+,
+ELSE
+) \
+
+146 (
+ `__ex‹nsiÚ__
+ ({
+ `__ty³of
+ (
+FUNC
+è*
+_â
+ = (FUNC); \
+
+147
+_â
+ !ð
+NULL
+ ? (*_âè
+ARGS
+ :
+ELSE
+; }))
+
+ )
+
+149 
+ #__libc_maybe_ÿÎ
+(
+FUNC
+,
+ARGS
+,
+ELSE
+) \
+
+150 (
+FUNC
+ !ð
+NULL
+ ? FUNC
+ARGS
+ :
+ELSE
+)
+
+ )
+
+154 #ià
+defšed
+
+SHARED
+ && !defšed
+NOT_IN_libc
+
+
+155 
+ #PTFAVAIL
+(
+NAME
+__libc_±h»ad_funùiÚs_š™
+
+
+ )
+
+156 
+ #__libc_±f_ÿÎ
+(
+FUNC
+,
+ARGS
+,
+ELSE
+) \
+
+157 (
+__libc_±h»ad_funùiÚs_š™
+ ?
+ `PTHFCT_CALL
+ (
+±r_
+##
+FUNC
+,
+ARGS
+è:
+ELSE
+)
+
+ )
+
+158 
+ #__libc_±f_ÿÎ_®ways
+(
+FUNC
+,
+ARGS
+) \
+
+159
+ `PTHFCT_CALL
+ (
+±r_
+##
+FUNC
+,
+ARGS
+)
+
+ )
+
+161 
+ #PTFAVAIL
+(
+NAME
+è(NAME !ð
+NULL
+)
+
+ )
+
+162 
+ #__libc_±f_ÿÎ
+(
+FUNC
+,
+ARGS
+,
+ELSE
+) \
+
+163
+ `__libc_maybe_ÿÎ
+ (
+FUNC
+,
+ARGS
+,
+ELSE
+)
+
+ )
+
+164 
+ #__libc_±f_ÿÎ_®ways
+(
+FUNC
+,
+ARGS
+) \
+
+165
+FUNC
+
+ARGS
+
+
+ )
+
+171 #ià
+defšed
+
+_LIBC
+ && (!defšed
+NOT_IN_libc
+ || defšed
+IS_IN_lib±h»ad
+)
+
+172 
+ #__libc_lock_š™
+(
+NAME
+è((NAMEèð
+LLL_LOCK_INITIALIZER
+, 0)
+
+ )
+
+174 
+ #__libc_lock_š™
+(
+NAME
+) \
+
+175
+ `__libc_maybe_ÿÎ
+ (
+__±h»ad_mu‹x_š™
+, (&(
+NAME
+),
+NULL
+), 0)
+
+ )
+
+177 #ià
+defšed
+
+SHARED
+ && !defšed
+NOT_IN_libc
+
+
+180 
+ #__libc_rwlock_š™
+(
+NAME
+) \
+
+181 (
+ `__bužtš_mem£t
+ (&(
+NAME
+), '\0',  (NAME)), 0)
+
+ )
+
+183 
+ #__libc_rwlock_š™
+(
+NAME
+) \
+
+184
+ `__libc_maybe_ÿÎ
+ (
+__±h»ad_rwlock_š™
+, (&(
+NAME
+),
+NULL
+), 0)
+
+ )
+
+188 #ià
+defšed
+
+_LIBC
+ && (!defšed
+NOT_IN_libc
+ || defšed
+IS_IN_lib±h»ad
+)
+
+189 
+ #__libc_lock_š™_»cursive
+(
+NAME
+) \
+
+190 ((
+NAME
+èð(
+__libc_lock_»cursive_t
+_LIBC_LOCK_RECURSIVE_INITIALIZER
+, 0)
+
+ )
+
+192 
+ #__libc_lock_š™_»cursive
+(
+NAME
+) \
+
+194 ià(
+__±h»ad_mu‹x_š™
+ !ð
+NULL
+) \
+
+196
+±h»ad_mu‹x©Œ_t
+
+__©Œ
+; \
+
+197
+ `__±h»ad_mu‹x©Œ_š™
+ (&
+__©Œ
+); \
+
+198
+ `__±h»ad_mu‹x©Œ_£‰y³
+ (&
+__©Œ
+,
+PTHREAD_MUTEX_RECURSIVE_NP
+); \
+
+199
+ `__±h»ad_mu‹x_š™
+ (&(
+NAME
+).
+mu‹x
+, &
+__©Œ
+); \
+
+200
+ `__±h»ad_mu‹x©Œ_de¡roy
+ (&
+__©Œ
+); \
+
+202 } 0)
+
+ )
+
+205 
+ #__¹ld_lock_š™_»cursive
+(
+NAME
+) \
+
+207 ià(
+__±h»ad_mu‹x_š™
+ !ð
+NULL
+) \
+
+209
+±h»ad_mu‹x©Œ_t
+
+__©Œ
+; \
+
+210
+ `__±h»ad_mu‹x©Œ_š™
+ (&
+__©Œ
+); \
+
+211
+ `__±h»ad_mu‹x©Œ_£‰y³
+ (&
+__©Œ
+,
+PTHREAD_MUTEX_RECURSIVE_NP
+); \
+
+212
+ `__±h»ad_mu‹x_š™
+ (&(
+NAME
+).
+mu‹x
+, &
+__©Œ
+); \
+
+213
+ `__±h»ad_mu‹x©Œ_de¡roy
+ (&
+__©Œ
+); \
+
+215 } 0)
+
+ )
+
+220 #ià
+defšed
+
+_LIBC
+ && (!defšed
+NOT_IN_libc
+ || defšed
+IS_IN_lib±h»ad
+)
+
+221 
+ #__libc_lock_fši
+(
+NAME
+è((è0)
+
+ )
+
+223 
+ #__libc_lock_fši
+(
+NAME
+) \
+
+224
+ `__libc_maybe_ÿÎ
+ (
+__±h»ad_mu‹x_de¡roy
+, (&(
+NAME
+)), 0)
+
+ )
+
+226 #ià
+defšed
+
+SHARED
+ && !defšed
+NOT_IN_libc
+
+
+227 
+ #__libc_rwlock_fši
+(
+NAME
+è((è0)
+
+ )
+
+229 
+ #__libc_rwlock_fši
+(
+NAME
+) \
+
+230
+ `__libc_maybe_ÿÎ
+ (
+__±h»ad_rwlock_de¡roy
+, (&(
+NAME
+)), 0)
+
+ )
+
+234 #ià
+defšed
+
+_LIBC
+ && (!defšed
+NOT_IN_libc
+ || defšed
+IS_IN_lib±h»ad
+)
+
+235 
+ #__libc_lock_fši_»cursive
+(
+NAME
+è((è0)
+
+ )
+
+237 
+ #__libc_lock_fši_»cursive
+(
+NAME
+) \
+
+238
+ `__libc_maybe_ÿÎ
+ (
+__±h»ad_mu‹x_de¡roy
+, (&(
+NAME
+)), 0)
+
+ )
+
+242 #ià
+defšed
+
+_LIBC
+ && (!defšed
+NOT_IN_libc
+ || defšed
+IS_IN_lib±h»ad
+)
+
+243 #ià
+__OPTION_EGLIBC_BIG_MACROS
+ != 1
+
+247 
+__libc_lock_lock_â
+ (
+__libc_lock_t
+ *);
+
+248
+libc_hidd’_´Ùo
+ (
+__libc_lock_lock_â
+);
+
+250 #ià
+__OPTION_EGLIBC_BIG_MACROS
+
+
+251 
+ #__libc_lock_lock
+(
+NAME
+) \
+
+252 ({
+ `Îl_lock
+ (
+NAME
+,
+LLL_PRIVATE
+); 0; })
+
+ )
+
+254 
+ #__libc_lock_lock
+(
+NAME
+) \
+
+255
+ `__libc_lock_lock_â
+ (&(
+NAME
+))
+
+ )
+
+258 
+ #__libc_lock_lock
+(
+NAME
+) \
+
+259
+ `__libc_maybe_ÿÎ
+ (
+__±h»ad_mu‹x_lock
+, (&(
+NAME
+)), 0)
+
+ )
+
+261 
+ #__libc_rwlock_rdlock
+(
+NAME
+) \
+
+262
+ `__libc_±f_ÿÎ
+ (
+__±h»ad_rwlock_rdlock
+, (&(
+NAME
+)), 0)
+
+ )
+
+263 
+ #__libc_rwlock_w¾ock
+(
+NAME
+) \
+
+264
+ `__libc_±f_ÿÎ
+ (
+__±h»ad_rwlock_w¾ock
+, (&(
+NAME
+)), 0)
+
+ )
+
+267 #ià
+defšed
+
+_LIBC
+ && (!defšed
+NOT_IN_libc
+ || defšed
+IS_IN_lib±h»ad
+)
+
+268 #ià
+__OPTION_EGLIBC_BIG_MACROS
+ != 1
+
+272 
+__libc_lock_lock_»cursive_â
+ (
+__libc_lock_»cursive_t
+ *);
+
+273
+libc_hidd’_´Ùo
+ (
+__libc_lock_lock_»cursive_â
+);
+
+275 #ià
+__OPTION_EGLIBC_BIG_MACROS
+
+
+276 
+ #__libc_lock_lock_»cursive
+(
+NAME
+) \
+
+278 *
+£lf
+ =
+THREAD_SELF
+; \
+
+279 ià((
+NAME
+).
+owÃr
+ !ð
+£lf
+) \
+
+281
+ `Îl_lock
+ ((
+NAME
+).
+lock
+,
+LLL_PRIVATE
+); \
+
+282 (
+NAME
+).
+owÃr
+ =
+£lf
+; \
+
+284 ++(
+NAME
+).
+út
+; \
+
+285 } 0)
+
+ )
+
+287 
+ #__libc_lock_lock_»cursive
+(
+NAME
+) \
+
+288
+ `__libc_lock_lock_»cursive_â
+ (&(
+NAME
+))
+
+ )
+
+291 
+ #__libc_lock_lock_»cursive
+(
+NAME
+) \
+
+292
+ `__libc_maybe_ÿÎ
+ (
+__±h»ad_mu‹x_lock
+, (&(
+NAME
+).
+mu‹x
+), 0)
+
+ )
+
+296 #ià
+defšed
+
+_LIBC
+ && (!defšed
+NOT_IN_libc
+ || defšed
+IS_IN_lib±h»ad
+)
+
+297 #ià
+__OPTION_EGLIBC_BIG_MACROS
+ != 1
+
+301 
+__libc_lock_Œylock_â
+ (
+__libc_lock_t
+ *);
+
+302
+libc_hidd’_´Ùo
+ (
+__libc_lock_Œylock_â
+);
+
+304 #ià
+__OPTION_EGLIBC_BIG_MACROS
+
+
+305 
+ #__libc_lock_Œylock
+(
+NAME
+) \
+
+306
+ `Îl_Œylock
+ (
+NAME
+)
+
+ )
+
+308 
+ #__libc_lock_Œylock
+(
+NAME
+) \
+
+309
+ `__libc_lock_Œylock_â
+ (&(
+NAME
+))
+
+ )
+
+312 
+ #__libc_lock_Œylock
+(
+NAME
+) \
+
+313
+ `__libc_maybe_ÿÎ
+ (
+__±h»ad_mu‹x_Œylock
+, (&(
+NAME
+)), 0)
+
+ )
+
+315 
+ #__libc_rwlock_Œyrdlock
+(
+NAME
+) \
+
+316
+ `__libc_maybe_ÿÎ
+ (
+__±h»ad_rwlock_Œyrdlock
+, (&(
+NAME
+)), 0)
+
+ )
+
+317 
+ #__libc_rwlock_Œyw¾ock
+(
+NAME
+) \
+
+318
+ `__libc_maybe_ÿÎ
+ (
+__±h»ad_rwlock_Œyw¾ock
+, (&(
+NAME
+)), 0)
+
+ )
+
+321 #ià
+defšed
+
+_LIBC
+ && (!defšed
+NOT_IN_libc
+ || defšed
+IS_IN_lib±h»ad
+)
+
+322 #ià
+__OPTION_EGLIBC_BIG_MACROS
+ != 1
+
+326 
+__libc_lock_Œylock_»cursive_â
+ (
+__libc_lock_»cursive_t
+ *);
+
+327
+libc_hidd’_´Ùo
+ (
+__libc_lock_Œylock_»cursive_â
+);
+
+329 #ià
+__OPTION_EGLIBC_BIG_MACROS
+
+
+330 
+ #__libc_lock_Œylock_»cursive
+(
+NAME
+) \
+
+332 
+»suÉ
+ = 0; \
+
+333 *
+£lf
+ =
+THREAD_SELF
+; \
+
+334 ià((
+NAME
+).
+owÃr
+ !ð
+£lf
+) \
+
+336 ià(
+ `Îl_Œylock
+ ((
+NAME
+).
+lock
+) == 0) \
+
+338 (
+NAME
+).
+owÃr
+ =
+£lf
+; \
+
+339 (
+NAME
+).
+út
+ = 1; \
+
+342
+»suÉ
+ =
+EBUSY
+; \
+
+345 ++(
+NAME
+).
+út
+; \
+
+346
+»suÉ
+; \
+
+347 })
+
+ )
+
+349 
+ #__libc_lock_Œylock_»cursive
+(
+NAME
+) \
+
+350
+ `__libc_lock_Œylock_»cursive_â
+ (&(
+NAME
+))
+
+ )
+
+353 
+ #__libc_lock_Œylock_»cursive
+(
+NAME
+) \
+
+354
+ `__libc_maybe_ÿÎ
+ (
+__±h»ad_mu‹x_Œylock
+, (&(
+NAME
+)), 0)
+
+ )
+
+357 
+ #__¹ld_lock_Œylock_»cursive
+(
+NAME
+) \
+
+358
+ `__libc_maybe_ÿÎ
+ (
+__±h»ad_mu‹x_Œylock
+, (&(
+NAME
+).
+mu‹x
+), 0)
+
+ )
+
+361 #ià
+defšed
+
+_LIBC
+ && (!defšed
+NOT_IN_libc
+ || defšed
+IS_IN_lib±h»ad
+)
+
+362 #ià
+__OPTION_EGLIBC_BIG_MACROS
+ != 1
+
+366 
+__libc_lock_uÆock_â
+ (
+__libc_lock_t
+ *);
+
+367
+libc_hidd’_´Ùo
+ (
+__libc_lock_uÆock_â
+);
+
+369 #ià
+__OPTION_EGLIBC_BIG_MACROS
+
+
+370 
+ #__libc_lock_uÆock
+(
+NAME
+) \
+
+371
+ `Îl_uÆock
+ (
+NAME
+,
+LLL_PRIVATE
+)
+
+ )
+
+373 
+ #__libc_lock_uÆock
+(
+NAME
+) \
+
+374
+ `__libc_lock_uÆock_â
+ (&(
+NAME
+))
+
+ )
+
+377 
+ #__libc_lock_uÆock
+(
+NAME
+) \
+
+378
+ `__libc_maybe_ÿÎ
+ (
+__±h»ad_mu‹x_uÆock
+, (&(
+NAME
+)), 0)
+
+ )
+
+380 
+ #__libc_rwlock_uÆock
+(
+NAME
+) \
+
+381
+ `__libc_±f_ÿÎ
+ (
+__±h»ad_rwlock_uÆock
+, (&(
+NAME
+)), 0)
+
+ )
+
+384 #ià
+defšed
+
+_LIBC
+ && (!defšed
+NOT_IN_libc
+ || defšed
+IS_IN_lib±h»ad
+)
+
+385 #ià
+__OPTION_EGLIBC_BIG_MACROS
+ != 1
+
+389 
+__libc_lock_uÆock_»cursive_â
+ (
+__libc_lock_»cursive_t
+ *);
+
+390
+libc_hidd’_´Ùo
+ (
+__libc_lock_uÆock_»cursive_â
+);
+
+392 #ià
+__OPTION_EGLIBC_BIG_MACROS
+
+
+394 
+ #__libc_lock_uÆock_»cursive
+(
+NAME
+) \
+
+396 ià(--(
+NAME
+).
+út
+ == 0) \
+
+398 (
+NAME
+).
+owÃr
+ =
+NULL
+; \
+
+399
+ `Îl_uÆock
+ ((
+NAME
+).
+lock
+,
+LLL_PRIVATE
+); \
+
+401 } 0)
+
+ )
+
+403 
+ #__libc_lock_uÆock_»cursive
+(
+NAME
+) \
+
+404
+ `__libc_lock_uÆock_»cursive_â
+ (&(
+NAME
+))
+
+ )
+
+407 
+ #__libc_lock_uÆock_»cursive
+(
+NAME
+) \
+
+408
+ `__libc_maybe_ÿÎ
+ (
+__±h»ad_mu‹x_uÆock
+, (&(
+NAME
+)), 0)
+
+ )
+
+411 #ià
+defšed
+
+_LIBC
+ && defšed
+SHARED
+
+
+412 
+ #__¹ld_lock_deçuÉ_lock_»cursive
+(
+lock
+) \
+
+413 ++((
+±h»ad_mu‹x_t
+ *)(
+lock
+))->
+__d©a
+.
+__couÁ
+;
+
+ )
+
+415 
+ #__¹ld_lock_deçuÉ_uÆock_»cursive
+(
+lock
+) \
+
+416 --((
+±h»ad_mu‹x_t
+ *)(
+lock
+))->
+__d©a
+.
+__couÁ
+;
+
+ )
+
+418 
+ #__¹ld_lock_lock_»cursive
+(
+NAME
+) \
+
+419
+ `GL
+(
+dl_¹ld_lock_»cursive
+è(&(
+NAME
+).
+mu‹x
+)
+
+ )
+
+421 
+ #__¹ld_lock_uÆock_»cursive
+(
+NAME
+) \
+
+422
+ `GL
+(
+dl_¹ld_uÆock_»cursive
+è(&(
+NAME
+).
+mu‹x
+)
+
+ )
+
+424 
+ #__¹ld_lock_lock_»cursive
+(
+NAME
+) \
+
+425
+ `__libc_maybe_ÿÎ
+ (
+__±h»ad_mu‹x_lock
+, (&(
+NAME
+).
+mu‹x
+), 0)
+
+ )
+
+427 
+ #__¹ld_lock_uÆock_»cursive
+(
+NAME
+) \
+
+428
+ `__libc_maybe_ÿÎ
+ (
+__±h»ad_mu‹x_uÆock
+, (&(
+NAME
+).
+mu‹x
+), 0)
+
+ )
+
+432 #ià
+PTHREAD_ONCE_INIT
+ == 0
+
+435 
+ #__libc_Úû_defše
+(
+CLASS
+,
+NAME
+) \
+
+436
+CLASS
+
+±h»ad_Úû_t
+
+NAME
+
+
+ )
+
+438 
+ #__libc_Úû_defše
+(
+CLASS
+,
+NAME
+) \
+
+439
+CLASS
+
+±h»ad_Úû_t
+
+NAME
+ =
+PTHREAD_ONCE_INIT
+
+
+ )
+
+443 
+ #__libc_Úû
+(
+ONCE_CONTROL
+,
+INIT_FUNCTION
+) \
+
+445 ià(
+ `PTFAVAIL
+ (
+__±h»ad_Úû
+)) \
+
+446
+ `__libc_±f_ÿÎ_®ways
+ (
+__±h»ad_Úû
+, (&(
+ONCE_CONTROL
+), \
+
+447
+INIT_FUNCTION
+)); \
+
+448 ià((
+ONCE_CONTROL
+è=ð
+PTHREAD_ONCE_INIT
+) { \
+
+449
+ `INIT_FUNCTION
+ (); \
+
+450 (
+ONCE_CONTROL
+) |= 2; \
+
+452 } 0)
+
+ )
+
+459 
+_±h»ad_þ—nup_push
+ (
+_±h»ad_þ—nup_bufãr
+ *
+bufãr
+,
+
+460 (*
+routše
+è(*), *
+¬g
+);
+
+461 
+ `_±h»ad_þ—nup_pÝ
+ (
+_±h»ad_þ—nup_bufãr
+ *
+bufãr
+,
+
+462 
+execu‹
+);
+
+463 
+ `_±h»ad_þ—nup_push_deãr
+ (
+_±h»ad_þ—nup_bufãr
+ *
+bufãr
+,
+
+464 (*
+routše
+è(*), *
+¬g
+);
+
+465 
+ `_±h»ad_þ—nup_pÝ_»¡Üe
+ (
+_±h»ad_þ—nup_bufãr
+ *
+bufãr
+,
+
+466 
+execu‹
+);
+
+469 
+ #__libc_þ—nup_»giÚ_¡¬t
+(
+DOIT
+,
+FCT
+,
+ARG
+) \
+
+470 { 
+_±h»ad_þ—nup_bufãr
+
+_bufãr
+; \
+
+471 
+_avaž
+; \
+
+472 ià(
+DOIT
+) { \
+
+473
+_avaž
+ =
+ `PTFAVAIL
+ (
+_±h»ad_þ—nup_push_deãr
+); \
+
+474 ià(
+_avaž
+) { \
+
+475
+ `__libc_±f_ÿÎ_®ways
+ (
+_±h»ad_þ—nup_push_deãr
+, (&
+_bufãr
+,
+FCT
+, \
+
+476
+ARG
+)); \
+
+478
+_bufãr
+.
+__routše
+ = (
+FCT
+); \
+
+479
+_bufãr
+.
+__¬g
+ = (
+ARG
+); \
+
+482
+_avaž
+ = 0; \
+
+483 }
+
+ )
+
+486 
+ #__libc_þ—nup_»giÚ_’d
+(
+DOIT
+) \
+
+487 ià(
+_avaž
+) { \
+
+488
+ `__libc_±f_ÿÎ_®ways
+ (
+_±h»ad_þ—nup_pÝ_»¡Üe
+, (&
+_bufãr
+,
+DOIT
+));\
+
+489 } ià(
+DOIT
+) \
+
+490
+_bufãr
+.
+ `__routše
+ (_bufãr.
+__¬g
+); \
+
+491
+ }
+
+ )
+}
+
+494 
+ #__libc_þ—nup_’d
+(
+DOIT
+) \
+
+495 ià(
+_avaž
+) { \
+
+496
+ `__libc_±f_ÿÎ_®ways
+ (
+_±h»ad_þ—nup_pÝ_»¡Üe
+, (&
+_bufãr
+,
+DOIT
+));\
+
+497 } ià(
+DOIT
+) \
+
+498
+_bufãr
+.
+ `__routše
+ (_bufãr.
+__¬g
+)
+
+ )
+
+502
+__ex‹º_šlše
+ 
+
+503
+ $__libc_þ—nup_routše
+ (
+__±h»ad_þ—nup_äame
+ *
+f
+)
+
+505 ià(
+f
+->
+__do_™
+)
+
+506
+f
+->
+ `__ÿnûl_routše
+ (f->
+__ÿnûl_¬g
+);
+
+507
+ }
+}
+
+509 
+ #__libc_þ—nup_push
+(
+fù
+,
+¬g
+) \
+
+511 
+__±h»ad_þ—nup_äame
+
+__þäame
+ \
+
+512
+ `__©Œibu‹__
+ ((
+ `__þ—nup__
+ (
+__libc_þ—nup_routše
+))) \
+
+513 ð{ .
+__ÿnûl_routše
+ = (
+fù
+), .
+__ÿnûl_¬g
+ = (
+¬g
+), \
+
+514 .
+__do_™
+ = 1 };
+
+ )
+
+516 
+ #__libc_þ—nup_pÝ
+(
+execu‹
+) \
+
+517
+__þäame
+.
+__do_™
+ = (
+execu‹
+); \
+
+518 } 0)
+
+ )
+
+522 
+ #__libc_key_ü—‹
+(
+KEY
+,
+DESTRUCTOR
+) \
+
+523
+ `__libc_±f_ÿÎ
+ (
+__±h»ad_key_ü—‹
+, (
+KEY
+,
+DESTRUCTOR
+), 1)
+
+ )
+
+526 
+ #__libc_g‘¥ecific
+(
+KEY
+) \
+
+527
+ `__libc_±f_ÿÎ
+ (
+__±h»ad_g‘¥ecific
+, (
+KEY
+),
+NULL
+)
+
+ )
+
+530 
+ #__libc_£t¥ecific
+(
+KEY
+,
+VALUE
+) \
+
+531
+ `__libc_±f_ÿÎ
+ (
+__±h»ad_£t¥ecific
+, (
+KEY
+,
+VALUE
+), 0)
+
+ )
+
+537 
+ #__libc_©fÜk
+(
+PREPARE
+,
+PARENT
+,
+CHILD
+) \
+
+538
+ `__»gi¡”_©fÜk
+ (
+PREPARE
+,
+PARENT
+,
+CHILD
+,
+NULL
+)
+
+ )
+
+539 
+__»gi¡”_©fÜk
+ ((*
+__´•¬e
+) (),
+
+540 (*
+__·»Á
+) (),
+
+541 (*
+__chžd
+) (),
+
+542 *
+__dso_hªdË
+);
+
+547 
+ `__±h»ad_mu‹x_š™
+ (
+±h»ad_mu‹x_t
+ *
+__mu‹x
+,
+
+548
+__cÚ¡
+
+±h»ad_mu‹x©Œ_t
+ *
+__mu‹x_©Œ
+);
+
+550 
+ `__±h»ad_mu‹x_de¡roy
+ (
+±h»ad_mu‹x_t
+ *
+__mu‹x
+);
+
+552 
+ `__±h»ad_mu‹x_Œylock
+ (
+±h»ad_mu‹x_t
+ *
+__mu‹x
+);
+
+554 
+ `__±h»ad_mu‹x_lock
+ (
+±h»ad_mu‹x_t
+ *
+__mu‹x
+);
+
+556 
+ `__±h»ad_mu‹x_uÆock
+ (
+±h»ad_mu‹x_t
+ *
+__mu‹x
+);
+
+558 
+ `__±h»ad_mu‹x©Œ_š™
+ (
+±h»ad_mu‹x©Œ_t
+ *
+__©Œ
+);
+
+560 
+ `__±h»ad_mu‹x©Œ_de¡roy
+ (
+±h»ad_mu‹x©Œ_t
+ *
+__©Œ
+);
+
+562 
+ `__±h»ad_mu‹x©Œ_£‰y³
+ (
+±h»ad_mu‹x©Œ_t
+ *
+__©Œ
+,
+
+563 
+__kšd
+);
+
+565 #ifdeà
+__USE_UNIX98
+
+
+566 
+ `__±h»ad_rwlock_š™
+ (
+±h»ad_rwlock_t
+ *
+__rwlock
+,
+
+567
+__cÚ¡
+
+±h»ad_rwlock©Œ_t
+ *
+__©Œ
+);
+
+569 
+ `__±h»ad_rwlock_de¡roy
+ (
+±h»ad_rwlock_t
+ *
+__rwlock
+);
+
+571 
+ `__±h»ad_rwlock_rdlock
+ (
+±h»ad_rwlock_t
+ *
+__rwlock
+);
+
+573 
+ `__±h»ad_rwlock_Œyrdlock
+ (
+±h»ad_rwlock_t
+ *
+__rwlock
+);
+
+575 
+ `__±h»ad_rwlock_w¾ock
+ (
+±h»ad_rwlock_t
+ *
+__rwlock
+);
+
+577 
+ `__±h»ad_rwlock_Œyw¾ock
+ (
+±h»ad_rwlock_t
+ *
+__rwlock
+);
+
+579 
+ `__±h»ad_rwlock_uÆock
+ (
+±h»ad_rwlock_t
+ *
+__rwlock
+);
+
+582 
+ `__±h»ad_key_ü—‹
+ (
+±h»ad_key_t
+ *
+__key
+,
+
+583 (*
+__de¡r_funùiÚ
+) (*));
+
+585 
+ `__±h»ad_£t¥ecific
+ (
+±h»ad_key_t
+
+__key
+,
+
+586
+__cÚ¡
+ *
+__poš‹r
+);
+
+588 *
+ `__±h»ad_g‘¥ecific
+ (
+±h»ad_key_t
+
+__key
+);
+
+590 
+ `__±h»ad_Úû
+ (
+±h»ad_Úû_t
+ *
+__Úû_cÚŒÞ
+,
+
+591 (*
+__š™_routše
+) ());
+
+593 
+ `__±h»ad_©fÜk
+ ((*
+__´•¬e
+) (),
+
+594 (*
+__·»Á
+) (),
+
+595 (*
+__chžd
+) ());
+
+601 #iâdeà
+__NO_WEAK_PTHREAD_ALIASES
+
+
+602 #ifdeà
+w—k_ex‹º
+
+
+603 #ià
+_LIBC
+
+
+604 
+ ~<bp-sym.h
+>
+
+606 
+ #BP_SYM
+(
+sym
+ )
+sym
+
+608
+ `w—k_ex‹º
+ (
+ $BP_SYM
+ (
+__±h»ad_mu‹x_š™
+))
+
+609
+ `w—k_ex‹º
+ (
+ $BP_SYM
+ (
+__±h»ad_mu‹x_de¡roy
+))
+
+610
+ `w—k_ex‹º
+ (
+ $BP_SYM
+ (
+__±h»ad_mu‹x_lock
+))
+
+611
+ `w—k_ex‹º
+ (
+ $BP_SYM
+ (
+__±h»ad_mu‹x_Œylock
+))
+
+612
+ `w—k_ex‹º
+ (
+ $BP_SYM
+ (
+__±h»ad_mu‹x_uÆock
+))
+
+613
+ `w—k_ex‹º
+ (
+ $BP_SYM
+ (
+__±h»ad_mu‹x©Œ_š™
+))
+
+614
+ `w—k_ex‹º
+ (
+ $BP_SYM
+ (
+__±h»ad_mu‹x©Œ_de¡roy
+))
+
+615
+ `w—k_ex‹º
+ (
+ $BP_SYM
+ (
+__±h»ad_mu‹x©Œ_£‰y³
+))
+
+616
+ `w—k_ex‹º
+ (
+ $BP_SYM
+ (
+__±h»ad_rwlock_š™
+))
+
+617
+ `w—k_ex‹º
+ (
+ $BP_SYM
+ (
+__±h»ad_rwlock_de¡roy
+))
+
+618
+ `w—k_ex‹º
+ (
+ $BP_SYM
+ (
+__±h»ad_rwlock_rdlock
+))
+
+619
+ `w—k_ex‹º
+ (
+ $BP_SYM
+ (
+__±h»ad_rwlock_Œyrdlock
+))
+
+620
+ `w—k_ex‹º
+ (
+ $BP_SYM
+ (
+__±h»ad_rwlock_w¾ock
+))
+
+621
+ `w—k_ex‹º
+ (
+ $BP_SYM
+ (
+__±h»ad_rwlock_Œyw¾ock
+))
+
+622
+ `w—k_ex‹º
+ (
+ $BP_SYM
+ (
+__±h»ad_rwlock_uÆock
+))
+
+623
+ `w—k_ex‹º
+ (
+ $BP_SYM
+ (
+__±h»ad_key_ü—‹
+))
+
+624
+ `w—k_ex‹º
+ (
+ $BP_SYM
+ (
+__±h»ad_£t¥ecific
+))
+
+625
+ `w—k_ex‹º
+ (
+ $BP_SYM
+ (
+__±h»ad_g‘¥ecific
+))
+
+626
+ `w—k_ex‹º
+ (
+ $BP_SYM
+ (
+__±h»ad_Úû
+))
+
+627
+ $w—k_ex‹º
+ (
+__±h»ad_š™Ÿlize
+)
+
+628
+ $w—k_ex‹º
+ (
+__±h»ad_©fÜk
+)
+
+629
+ `w—k_ex‹º
+ (
+ $BP_SYM
+ (
+_±h»ad_þ—nup_push_deãr
+))
+
+630
+ `w—k_ex‹º
+ (
+ $BP_SYM
+ (
+_±h»ad_þ—nup_pÝ_»¡Üe
+))
+
+631
+ `w—k_ex‹º
+ (
+ $BP_SYM
+ (
+±h»ad_£tÿnûl¡©e
+))
+
+633 #´agm¨
+w—k
+
+__±h»ad_mu‹x_š™
+
+
+634 #´agm¨
+w—k
+
+__±h»ad_mu‹x_de¡roy
+
+
+635 #´agm¨
+w—k
+
+__±h»ad_mu‹x_lock
+
+
+636 #´agm¨
+w—k
+
+__±h»ad_mu‹x_Œylock
+
+
+637 #´agm¨
+w—k
+
+__±h»ad_mu‹x_uÆock
+
+
+638 #´agm¨
+w—k
+
+__±h»ad_mu‹x©Œ_š™
+
+
+639 #´agm¨
+w—k
+
+__±h»ad_mu‹x©Œ_de¡roy
+
+
+640 #´agm¨
+w—k
+
+__±h»ad_mu‹x©Œ_£‰y³
+
+
+641 #´agm¨
+w—k
+
+__±h»ad_rwlock_de¡roy
+
+
+642 #´agm¨
+w—k
+
+__±h»ad_rwlock_rdlock
+
+
+643 #´agm¨
+w—k
+
+__±h»ad_rwlock_Œyrdlock
+
+
+644 #´agm¨
+w—k
+
+__±h»ad_rwlock_w¾ock
+
+
+645 #´agm¨
+w—k
+
+__±h»ad_rwlock_Œyw¾ock
+
+
+646 #´agm¨
+w—k
+
+__±h»ad_rwlock_uÆock
+
+
+647 #´agm¨
+w—k
+
+__±h»ad_key_ü—‹
+
+
+648 #´agm¨
+w—k
+
+__±h»ad_£t¥ecific
+
+
+649 #´agm¨
+w—k
+
+__±h»ad_g‘¥ecific
+
+
+650 #´agm¨
+w—k
+
+__±h»ad_Úû
+
+
+651 #´agm¨
+w—k
+
+__±h»ad_š™Ÿlize
+
+
+652 #´agm¨
+w—k
+
+__±h»ad_©fÜk
+
+
+653 #´agm¨
+w—k
+
+_±h»ad_þ—nup_push_deãr
+
+
+654 #´agm¨
+w—k
+
+_±h»ad_þ—nup_pÝ_»¡Üe
+
+
+655 #´agm¨
+w—k
+
+±h»ad_£tÿnûl¡©e
+
+
+ @/usr/include/bits/stdlib-ldbl.h
+
+20 #iâdeà
+_STDLIB_H
+
+
+24 #ifdef
+__USE_ISOC99
+
+
+25
+__BEGIN_NAMESPACE_C99
+
+
+26
+ $__LDBL_REDIR1_DECL
+ (
+¡¹Þd
+,
+¡¹od
+)
+
+27
+__END_NAMESPACE_C99
+
+
+30 #ifdeà
+__USE_GNU
+
+
+31
+ $__LDBL_REDIR1_DECL
+ (
+¡¹Þd_l
+,
+¡¹od_l
+)
+
+34 #ià
+defšed
+
+__USE_SVID
+ || defšed
+__USE_XOPEN_EXTENDED
+
+
+35 #ifdeà
+__USE_MISC
+
+
+36
+ $__LDBL_REDIR1_DECL
+ (
+qecvt
+,
+ecvt
+)
+
+37
+ $__LDBL_REDIR1_DECL
+ (
+qfcvt
+,
+fcvt
+)
+
+38
+ $__LDBL_REDIR1_DECL
+ (
+qgcvt
+,
+gcvt
+)
+
+39
+ $__LDBL_REDIR1_DECL
+ (
+qecvt_r
+,
+ecvt_r
+)
+
+40
+ $__LDBL_REDIR1_DECL
+ (
+qfcvt_r
+,
+fcvt_r
+)
+
+ @/usr/include/bits/stdlib.h
+
+20 #iâdeà
+_STDLIB_H
+
+
+24 *
+ $__»®·th_chk
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__Çme
+,
+
+25 *
+__»¡riù
+
+__»sÞved
+,
+
+26
+size_t
+
+__»sÞvedËn
+__THROW
+
+__wur
+;
+
+27 *
+ `__REDIRECT_NTH
+ (
+__»®·th_®Ÿs
+,
+
+28 (
+__cÚ¡
+ *
+__»¡riù
+
+__Çme
+,
+
+29 *
+__»¡riù
+
+__»sÞved
+),
+»®·th
+__wur
+;
+
+30 *
+ `__REDIRECT_NTH
+ (
+__»®·th_chk_w¬n
+,
+
+31 (
+__cÚ¡
+ *
+__»¡riù
+
+__Çme
+,
+
+32 *
+__»¡riù
+
+__»sÞved
+,
+
+33
+size_t
+
+__»sÞvedËn
+),
+__»®·th_chk
+__wur
+
+
+34
+ `__w¬Ç‰r
+ ("second‡rgument of„ealpath must beƒither NULL or‡t "
+
+37
+__ex‹º_®ways_šlše
+
+__wur
+ *
+
+38
+ `__NTH
+ (
+ $»®·th
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__Çme
+, *__»¡riù
+__»sÞved
+))
+
+40 ià(
+ `__bos
+ (
+__»sÞved
+è!ð(
+size_t
+) -1)
+
+42 #ià
+defšed
+
+_LIBC_LIMITS_H_
+ && defšed
+PATH_MAX
+
+
+43 ià(
+ `__bos
+ (
+__»sÞved
+è<
+PATH_MAX
+)
+
+44 
+ `__»®·th_chk_w¬n
+ (
+__Çme
+,
+__»sÞved
+,
+ `__bos
+ (__resolved));
+
+46 
+ `__»®·th_chk
+ (
+__Çme
+,
+__»sÞved
+,
+ `__bos
+ (__resolved));
+
+49 
+ `__»®·th_®Ÿs
+ (
+__Çme
+,
+__»sÞved
+);
+
+50
+ }
+}
+
+53 
+ $__±¢ame_r_chk
+ (
+__fd
+, *
+__buf
+,
+size_t
+
+__buæ’
+,
+
+54
+size_t
+
+__Ä—l
+__THROW
+
+ `__nÚnuÎ
+ ((2));
+
+55 
+ `__REDIRECT_NTH
+ (
+__±¢ame_r_®Ÿs
+, (
+__fd
+, *
+__buf
+,
+
+56
+size_t
+
+__buæ’
+),
+±¢ame_r
+)
+
+57
+ `__nÚnuÎ
+ ((2));
+
+58 
+ `__REDIRECT_NTH
+ (
+__±¢ame_r_chk_w¬n
+,
+
+59 (
+__fd
+, *
+__buf
+,
+size_t
+
+__buæ’
+,
+
+60
+size_t
+
+__Ä—l
+),
+__±¢ame_r_chk
+)
+
+61
+ `__nÚnuÎ
+ ((2)è
+ `__w¬Ç‰r
+ ("ptsname_r called with buflen biggerhan "
+
+64
+__ex‹º_®ways_šlše
+ 
+
+65
+ `__NTH
+ (
+ $±¢ame_r
+ (
+__fd
+, *
+__buf
+,
+size_t
+
+__buæ’
+))
+
+67 ià(
+ `__bos
+ (
+__buf
+è!ð(
+size_t
+) -1)
+
+69 ià(!
+ `__bužtš_cÚ¡ªt_p
+ (
+__buæ’
+))
+
+70 
+ `__±¢ame_r_chk
+ (
+__fd
+,
+__buf
+,
+__buæ’
+,
+ `__bos
+ (__buf));
+
+71 ià(
+__buæ’
+ >
+ `__bos
+ (
+__buf
+))
+
+72 
+ `__±¢ame_r_chk_w¬n
+ (
+__fd
+,
+__buf
+,
+__buæ’
+,
+ `__bos
+ (__buf));
+
+74 
+ `__±¢ame_r_®Ÿs
+ (
+__fd
+,
+__buf
+,
+__buæ’
+);
+
+75
+ }
+}
+
+78 
+ $__wùomb_chk
+ (*
+__s
+,
+wch¬_t
+
+__wch¬
+,
+size_t
+
+__buæ’
+)
+
+79
+__THROW
+
+__wur
+;
+
+80 
+ `__REDIRECT_NTH
+ (
+__wùomb_®Ÿs
+, (*
+__s
+,
+wch¬_t
+
+__wch¬
+),
+
+81
+wùomb
+__wur
+;
+
+83
+__ex‹º_®ways_šlše
+
+__wur
+ 
+
+84
+ `__NTH
+ (
+ $wùomb
+ (*
+__s
+,
+wch¬_t
+
+__wch¬
+))
+
+89 
+ #__STDLIB_MB_LEN_MAX
+ 16
+
+ )
+
+90 #ià
+defšed
+
+MB_LEN_MAX
+ && MB_LEN_MAX !ð
+__STDLIB_MB_LEN_MAX
+
+
+93 ià(
+ `__bos
+ (
+__s
+è!ð(
+size_t
+è-1 &&
+__STDLIB_MB_LEN_MAX
+ > __bos (__s))
+
+94 
+ `__wùomb_chk
+ (
+__s
+,
+__wch¬
+,
+ `__bos
+ (__s));
+
+95 
+ `__wùomb_®Ÿs
+ (
+__s
+,
+__wch¬
+);
+
+96
+ }
+}
+
+99
+size_t
+
+ $__mb¡owcs_chk
+ (
+wch¬_t
+ *
+__»¡riù
+
+__d¡
+,
+
+100
+__cÚ¡
+ *
+__»¡riù
+
+__¤c
+,
+
+101
+size_t
+
+__Ën
+, size_ˆ
+__d¡Ën
+__THROW
+;
+
+102
+size_t
+
+ `__REDIRECT_NTH
+ (
+__mb¡owcs_®Ÿs
+,
+
+103 (
+wch¬_t
+ *
+__»¡riù
+
+__d¡
+,
+
+104
+__cÚ¡
+ *
+__»¡riù
+
+__¤c
+,
+
+105
+size_t
+
+__Ën
+),
+mb¡owcs
+);
+
+106
+size_t
+
+ `__REDIRECT_NTH
+ (
+__mb¡owcs_chk_w¬n
+,
+
+107 (
+wch¬_t
+ *
+__»¡riù
+
+__d¡
+,
+
+108
+__cÚ¡
+ *
+__»¡riù
+
+__¤c
+,
+
+109
+size_t
+
+__Ën
+, size_ˆ
+__d¡Ën
+),
+__mb¡owcs_chk
+)
+
+110
+ `__w¬Ç‰r
+ ("mbstowcs called with dst buffer smallerhan†en "
+
+113
+__ex‹º_®ways_šlše
+
+size_t
+
+
+114
+ `__NTH
+ (
+ $mb¡owcs
+ (
+wch¬_t
+ *
+__»¡riù
+
+__d¡
+,
+__cÚ¡
+ *__»¡riù
+__¤c
+,
+
+115
+size_t
+
+__Ën
+))
+
+117 ià(
+ `__bos
+ (
+__d¡
+è!ð(
+size_t
+) -1)
+
+119 ià(!
+ `__bužtš_cÚ¡ªt_p
+ (
+__Ën
+))
+
+120 
+ `__mb¡owcs_chk
+ (
+__d¡
+,
+__¤c
+,
+__Ën
+,
+
+121
+ `__bos
+ (
+__d¡
+è/  (
+wch¬_t
+));
+
+123 ià(
+__Ën
+ >
+ `__bos
+ (
+__d¡
+è/  (
+wch¬_t
+))
+
+124 
+ `__mb¡owcs_chk_w¬n
+ (
+__d¡
+,
+__¤c
+,
+__Ën
+,
+
+125
+ `__bos
+ (
+__d¡
+è/  (
+wch¬_t
+));
+
+127 
+ `__mb¡owcs_®Ÿs
+ (
+__d¡
+,
+__¤c
+,
+__Ën
+);
+
+128
+ }
+}
+
+131
+size_t
+
+ $__wc¡ombs_chk
+ (*
+__»¡riù
+
+__d¡
+,
+
+132
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__¤c
+,
+
+133
+size_t
+
+__Ën
+, size_ˆ
+__d¡Ën
+__THROW
+;
+
+134
+size_t
+
+ `__REDIRECT_NTH
+ (
+__wc¡ombs_®Ÿs
+,
+
+135 (*
+__»¡riù
+
+__d¡
+,
+
+136
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__¤c
+,
+
+137
+size_t
+
+__Ën
+),
+wc¡ombs
+);
+
+138
+size_t
+
+ `__REDIRECT_NTH
+ (
+__wc¡ombs_chk_w¬n
+,
+
+139 (*
+__»¡riù
+
+__d¡
+,
+
+140
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__¤c
+,
+
+141
+size_t
+
+__Ën
+, size_ˆ
+__d¡Ën
+),
+__wc¡ombs_chk
+)
+
+142
+ `__w¬Ç‰r
+ ("wcstombs called with dst buffer smallerhan†en");
+
+144
+__ex‹º_®ways_šlše
+
+size_t
+
+
+145
+ `__NTH
+ (
+ $wc¡ombs
+ (*
+__»¡riù
+
+__d¡
+,
+__cÚ¡
+
+wch¬_t
+ *__»¡riù
+__¤c
+,
+
+146
+size_t
+
+__Ën
+))
+
+148 ià(
+ `__bos
+ (
+__d¡
+è!ð(
+size_t
+) -1)
+
+150 ià(!
+ `__bužtš_cÚ¡ªt_p
+ (
+__Ën
+))
+
+151 
+ `__wc¡ombs_chk
+ (
+__d¡
+,
+__¤c
+,
+__Ën
+,
+ `__bos
+ (__dst));
+
+152 ià(
+__Ën
+ >
+ `__bos
+ (
+__d¡
+))
+
+153 
+ `__wc¡ombs_chk_w¬n
+ (
+__d¡
+,
+__¤c
+,
+__Ën
+,
+ `__bos
+ (__dst));
+
+155 
+ `__wc¡ombs_®Ÿs
+ (
+__d¡
+,
+__¤c
+,
+__Ën
+);
+
+156
+ }
+}
+
+ @/usr/include/bits/waitflags.h
+
+20 #ià!
+defšed
+
+_SYS_WAIT_H
+ && !defšed
+_STDLIB_H
+
+
+26 
+ #WNOHANG
+ 1
+
+ )
+
+27 
+ #WUNTRACED
+ 2
+
+ )
+
+30 
+ #WSTOPPED
+ 2
+
+ )
+
+31 
+ #WEXITED
+ 4
+
+ )
+
+32 
+ #WCONTINUED
+ 8
+
+ )
+
+33 
+ #WNOWAIT
+ 0x01000000
+
+ )
+
+35 
+ #__WNOTHREAD
+ 0x20000000
+
+ )
+
+37 
+ #__WALL
+ 0x40000000
+
+ )
+
+38 
+ #__WCLONE
+ 0x80000000
+
+ )
+
+ @/usr/include/bits/waitstatus.h
+
+20 #ià!
+defšed
+
+_SYS_WAIT_H
+ && !defšed
+_STDLIB_H
+
+
+29 
+ #__WEXITSTATUS
+(
+¡©us
+è(((¡©usè& 0xff00è>> 8)
+
+ )
+
+32 
+ #__WTERMSIG
+(
+¡©us
+è((¡©usè& 0x7f)
+
+ )
+
+35 
+ #__WSTOPSIG
+(
+¡©us
+ `__WEXITSTATUS
+(¡©us)
+
+ )
+
+38 
+ #__WIFEXITED
+(
+¡©us
+è(
+ `__WTERMSIG
+(¡©usè=ð0)
+
+ )
+
+41 
+ #__WIFSIGNALED
+(
+¡©us
+) \
+
+42 (((sigÃd è(((
+¡©us
+è& 0x7fè+ 1è>> 1è> 0)
+
+ )
+
+45 
+ #__WIFSTOPPED
+(
+¡©us
+è(((¡©usè& 0xffè=ð0x7f)
+
+ )
+
+49 #ifdeà
+WCONTINUED
+
+
+50 
+ #__WIFCONTINUED
+(
+¡©us
+è((¡©usè=ð
+__W_CONTINUED
+)
+
+ )
+
+54 
+ #__WCOREDUMP
+(
+¡©us
+è((¡©usè&
+__WCOREFLAG
+)
+
+ )
+
+57 
+ #__W_EXITCODE
+(
+»t
+,
+sig
+è(Ô‘è<< 8 | (sig))
+
+ )
+
+58 
+ #__W_STOPCODE
+(
+sig
+è((sigè<< 8 | 0x7f)
+
+ )
+
+59 
+ #__W_CONTINUED
+ 0xffff
+
+ )
+
+60 
+ #__WCOREFLAG
+ 0x80
+
+ )
+
+63 #ifdef
+__USE_BSD
+
+
+65 
+ ~<’dŸn.h
+>
+
+67 
+ uwa™
+
+
+69 
+ mw_¡©us
+;
+
+72 #if
+__BYTE_ORDER
+ =ð
+__LITTLE_ENDIAN
+
+
+73 
+ m__w_‹rmsig
+:7;
+
+74 
+ m__w_cÜedump
+:1;
+
+75 
+ m__w_»tcode
+:8;
+
+78 #if
+__BYTE_ORDER
+ =ð
+__BIG_ENDIAN
+
+
+80 
+ m__w_»tcode
+:8;
+
+81 
+ m__w_cÜedump
+:1;
+
+82 
+ m__w_‹rmsig
+:7;
+
+84 }
+ m__wa™_‹rmš©ed
+;
+
+87 #if
+__BYTE_ORDER
+ =ð
+__LITTLE_ENDIAN
+
+
+88 
+ m__w_¡Ýv®
+:8;
+
+89 
+ m__w_¡Ýsig
+:8;
+
+92 #if
+__BYTE_ORDER
+ =ð
+__BIG_ENDIAN
+
+
+94 
+ m__w_¡Ýsig
+:8;
+
+95 
+ m__w_¡Ýv®
+:8;
+
+97 }
+ m__wa™_¡Ý³d
+;
+
+100 
+ #w_‹rmsig
+
+__wa™_‹rmš©ed
+.
+__w_‹rmsig
+
+
+ )
+
+101 
+ #w_cÜedump
+
+__wa™_‹rmš©ed
+.
+__w_cÜedump
+
+
+ )
+
+102 
+ #w_»tcode
+
+__wa™_‹rmš©ed
+.
+__w_»tcode
+
+
+ )
+
+103 
+ #w_¡Ýsig
+
+__wa™_¡Ý³d
+.
+__w_¡Ýsig
+
+
+ )
+
+104 
+ #w_¡Ýv®
+
+__wa™_¡Ý³d
+.
+__w_¡Ýv®
+
+
+ )
+
+ @/usr/include/gconv.h
+
+23 #iâdeà
+_GCONV_H
+
+
+24 
+ #_GCONV_H
+ 1
+
+ )
+
+26 
+ ~<ã©u»s.h
+>
+
+27 
+ #__Ãed_mb¡©e_t
+
+
+ )
+
+28 
+ #__Ãed_wšt_t
+
+
+ )
+
+29 
+ ~<wch¬.h
+>
+
+30 
+ #__Ãed_size_t
+
+
+ )
+
+31 
+ #__Ãed_wch¬_t
+
+
+ )
+
+32 
+ ~<¡ddef.h
+>
+
+35 
+ #__UNKNOWN_10646_CHAR
+ ((
+wch¬_t
+è0xfffd)
+
+ )
+
+40
+ m__GCONV_OK
+ = 0,
+
+41
+ m__GCONV_NOCONV
+,
+
+42
+ m__GCONV_NODB
+,
+
+43
+ m__GCONV_NOMEM
+,
+
+45
+ m__GCONV_EMPTY_INPUT
+,
+
+46
+ m__GCONV_FULL_OUTPUT
+,
+
+47
+ m__GCONV_ILLEGAL_INPUT
+,
+
+48
+ m__GCONV_INCOMPLETE_INPUT
+,
+
+50
+ m__GCONV_ILLEGAL_DESCRIPTOR
+,
+
+51
+ m__GCONV_INTERNAL_ERROR
+
+
+58
+ m__GCONV_IS_LAST
+ = 0x0001,
+
+59
+ m__GCONV_IGNORE_ERRORS
+ = 0x0002
+
+64 
+ g__gcÚv_¡•
+;
+
+65 
+ g__gcÚv_¡•_d©a
+;
+
+66 
+ g__gcÚv_lßded_objeù
+;
+
+67 
+ g__gcÚv_Œªs_d©a
+;
+
+71 (*
+ t__gcÚv_fù
+è(
+ t__gcÚv_¡•
+ *, 
+ t__gcÚv_¡•_d©a
+ *,
+
+72
+ t__cÚ¡
+ **, __const *,
+
+73 **,
+ tsize_t
+ *, , );
+
+76 
+ $wšt_t
+ (*
+ t__gcÚv_btowc_fù
+è(
+ t__gcÚv_¡•
+ *, );
+
+79 (*
+ t__gcÚv_š™_fù
+è(
+ t__gcÚv_¡•
+ *);
+
+80 (*
+ t__gcÚv_’d_fù
+è(
+ t__gcÚv_¡•
+ *);
+
+84 (*
+ t__gcÚv_Œªs_fù
+è(
+ t__gcÚv_¡•
+ *,
+
+85 
+ t__gcÚv_¡•_d©a
+ *, *,
+
+86
+ t__cÚ¡
+ *,
+
+87
+ t__cÚ¡
+ **,
+
+88
+ t__cÚ¡
+ *, **,
+
+89
+ tsize_t
+ *);
+
+92 (*
+ t__gcÚv_Œªs_cÚ‹xt_fù
+è(*,
+ t__cÚ¡
+ *,
+
+93
+ t__cÚ¡
+ *,
+
+97 (*
+ t__gcÚv_Œªs_qu”y_fù
+è(
+ t__cÚ¡
+ *, __const ***,
+
+98
+ tsize_t
+ *);
+
+101 (*
+ t__gcÚv_Œªs_š™_fù
+) (**, const *);
+
+102 (*
+ t__gcÚv_Œªs_’d_fù
+) (*);
+
+104 
+ s__gcÚv_Œªs_d©a
+
+
+107
+__gcÚv_Œªs_fù
+
+__Œªs_fù
+;
+
+108
+__gcÚv_Œªs_cÚ‹xt_fù
+
+__Œªs_cÚ‹xt_fù
+;
+
+109
+__gcÚv_Œªs_’d_fù
+
+__Œªs_’d_fù
+;
+
+110 *
+__d©a
+;
+
+111 
+__gcÚv_Œªs_d©a
+ *
+__Ãxt
+;
+
+116 
+ s__gcÚv_¡•
+
+
+118 
+__gcÚv_lßded_objeù
+ *
+__shlib_hªdË
+;
+
+119
+__cÚ¡
+ *
+__modÇme
+;
+
+121 
+__couÁ”
+;
+
+123 *
+__äom_Çme
+;
+
+124 *
+__to_Çme
+;
+
+126
+__gcÚv_fù
+
+__fù
+;
+
+127
+__gcÚv_btowc_fù
+
+__btowc_fù
+;
+
+128
+__gcÚv_š™_fù
+
+__š™_fù
+;
+
+129
+__gcÚv_’d_fù
+
+__’d_fù
+;
+
+133 
+__mš_Ãeded_äom
+;
+
+134 
+__max_Ãeded_äom
+;
+
+135 
+__mš_Ãeded_to
+;
+
+136 
+__max_Ãeded_to
+;
+
+139 
+__¡©eful
+;
+
+141 *
+__d©a
+;
+
+146 
+ s__gcÚv_¡•_d©a
+
+
+148 *
+__outbuf
+;
+
+149 *
+__outbuãnd
+;
+
+153 
+__æags
+;
+
+157 
+__švoÿtiÚ_couÁ”
+;
+
+161 
+__š‹º®_u£
+;
+
+163
+__mb¡©e_t
+ *
+__¡©•
+;
+
+164
+__mb¡©e_t
+
+__¡©e
+;
+
+168 
+__gcÚv_Œªs_d©a
+ *
+__λs
+;
+
+173 
+ s__gcÚv_šfo
+
+
+175
+size_t
+
+__n¡•s
+;
+
+176 
+__gcÚv_¡•
+ *
+__¡•s
+;
+
+177
+__ex‹nsiÚ__
+ 
+__gcÚv_¡•_d©a
+
+__d©a
+
+__æex¬r
+;
+
+178 } *
+ t__gcÚv_t
+;
+
+ @/usr/include/gnu/stubs-32.h
+
+6 #ifdeà
+_LIBC
+
+
+7 #”rÜ
+AµliÿtiÚs
+
+may
+
+nÙ
+
+defše
+
+the
+
+maüo
+
+_LIBC
+
+
+10 
+ #__¡ub___k”Ãl_co¦
+
+
+ )
+
+11 
+ #__¡ub___k”Ãl_sšl
+
+
+ )
+
+12 
+ #__¡ub___k”Ãl_Æ
+
+
+ )
+
+13 
+ #__¡ub_chæags
+
+
+ )
+
+14 
+ #__¡ub_ç‰ach
+
+
+ )
+
+15 
+ #__¡ub_fchæags
+
+
+ )
+
+16 
+ #__¡ub_fd‘ach
+
+
+ )
+
+17 
+ #__¡ub_g‰y
+
+
+ )
+
+18 
+ #__¡ub_lchmod
+
+
+ )
+
+19 
+ #__¡ub_»voke
+
+
+ )
+
+20 
+ #__¡ub_£Žogš
+
+
+ )
+
+21 
+ #__¡ub_sig»tuº
+
+
+ )
+
+22 
+ #__¡ub_s¡k
+
+
+ )
+
+23 
+ #__¡ub_¡ty
+
+
+ )
+
+ @/usr/include/gnu/stubs-64.h
+
+6 #ifdeà
+_LIBC
+
+
+7 #”rÜ
+AµliÿtiÚs
+
+may
+
+nÙ
+
+defše
+
+the
+
+maüo
+
+_LIBC
+
+
+10 
+ #__¡ub_bdæush
+
+
+ )
+
+11 
+ #__¡ub_chæags
+
+
+ )
+
+12 
+ #__¡ub_ç‰ach
+
+
+ )
+
+13 
+ #__¡ub_fchæags
+
+
+ )
+
+14 
+ #__¡ub_fd‘ach
+
+
+ )
+
+15 
+ #__¡ub_g‘msg
+
+
+ )
+
+16 
+ #__¡ub_g‰y
+
+
+ )
+
+17 
+ #__¡ub_lchmod
+
+
+ )
+
+18 
+ #__¡ub_putmsg
+
+
+ )
+
+19 
+ #__¡ub_»voke
+
+
+ )
+
+20 
+ #__¡ub_£Žogš
+
+
+ )
+
+21 
+ #__¡ub_sig»tuº
+
+
+ )
+
+22 
+ #__¡ub_s¡k
+
+
+ )
+
+23 
+ #__¡ub_¡ty
+
+
+ )
+
+ @/usr/include/sys/types.h
+
+24 #iâdef
+_SYS_TYPES_H
+
+
+25 
+ #_SYS_TYPES_H
+ 1
+
+ )
+
+27 
+ ~<ã©u»s.h
+>
+
+29
+ g__BEGIN_DECLS
+
+
+31 
+ ~<b™s/ty³s.h
+>
+
+33 #ifdef
+__USE_BSD
+
+
+34 #iâdeà
+__u_ch¬_defšed
+
+
+35 
+__u_ch¬
+
+ tu_ch¬
+;
+
+36 
+__u_shÜt
+
+ tu_shÜt
+;
+
+37 
+__u_št
+
+ tu_št
+;
+
+38 
+__u_lÚg
+
+ tu_lÚg
+;
+
+39 
+__quad_t
+
+ tquad_t
+;
+
+40 
+__u_quad_t
+
+ tu_quad_t
+;
+
+41 
+__fsid_t
+
+ tfsid_t
+;
+
+42 
+ #__u_ch¬_defšed
+
+
+ )
+
+46 
+__loff_t
+
+ tloff_t
+;
+
+48 #iâdeà
+__šo_t_defšed
+
+
+49 #iâdeà
+__USE_FILE_OFFSET64
+
+
+50 
+__šo_t
+
+ tšo_t
+;
+
+52 
+__šo64_t
+
+ tšo_t
+;
+
+54 
+ #__šo_t_defšed
+
+
+ )
+
+56 #ià
+defšed
+
+__USE_LARGEFILE64
+ && !defšed
+__šo64_t_defšed
+
+
+57 
+__šo64_t
+
+ tšo64_t
+;
+
+58 
+ #__šo64_t_defšed
+
+
+ )
+
+61 #iâdeà
+__dev_t_defšed
+
+
+62 
+__dev_t
+
+ tdev_t
+;
+
+63 
+ #__dev_t_defšed
+
+
+ )
+
+66 #iâdeà
+__gid_t_defšed
+
+
+67 
+__gid_t
+
+ tgid_t
+;
+
+68 
+ #__gid_t_defšed
+
+
+ )
+
+71 #iâdeà
+__mode_t_defšed
+
+
+72 
+__mode_t
+
+ tmode_t
+;
+
+73 
+ #__mode_t_defšed
+
+
+ )
+
+76 #iâdeà
+__Æšk_t_defšed
+
+
+77 
+__Æšk_t
+
+ tÆšk_t
+;
+
+78 
+ #__Æšk_t_defšed
+
+
+ )
+
+81 #iâdeà
+__uid_t_defšed
+
+
+82 
+__uid_t
+
+ tuid_t
+;
+
+83 
+ #__uid_t_defšed
+
+
+ )
+
+86 #iâdeà
+__off_t_defšed
+
+
+87 #iâdeà
+__USE_FILE_OFFSET64
+
+
+88 
+__off_t
+
+ toff_t
+;
+
+90 
+__off64_t
+
+ toff_t
+;
+
+92 
+ #__off_t_defšed
+
+
+ )
+
+94 #ià
+defšed
+
+__USE_LARGEFILE64
+ && !defšed
+__off64_t_defšed
+
+
+95 
+__off64_t
+
+ toff64_t
+;
+
+96 
+ #__off64_t_defšed
+
+
+ )
+
+99 #iâdeà
+__pid_t_defšed
+
+
+100 
+__pid_t
+
+ tpid_t
+;
+
+101 
+ #__pid_t_defšed
+
+
+ )
+
+104 #ià(
+defšed
+
+__USE_SVID
+ || defšed
+__USE_XOPEN
+è&& !defšed
+__id_t_defšed
+
+
+105 
+__id_t
+
+ tid_t
+;
+
+106 
+ #__id_t_defšed
+
+
+ )
+
+109 #iâdeà
+__ssize_t_defšed
+
+
+110 
+__ssize_t
+
+ tssize_t
+;
+
+111 
+ #__ssize_t_defšed
+
+
+ )
+
+114 #ifdef
+__USE_BSD
+
+
+115 #iâdeà
+__daddr_t_defšed
+
+
+116 
+__daddr_t
+
+ tdaddr_t
+;
+
+117 
+__ÿddr_t
+
+ tÿddr_t
+;
+
+118 
+ #__daddr_t_defšed
+
+
+ )
+
+122 #ià(
+defšed
+
+__USE_SVID
+ || defšed
+__USE_XOPEN
+è&& !defšed
+__key_t_defšed
+
+
+123 
+__key_t
+
+ tkey_t
+;
+
+124 
+ #__key_t_defšed
+
+
+ )
+
+127 #ifdeà
+__USE_XOPEN
+
+
+128 
+ #__Ãed_þock_t
+
+
+ )
+
+130 
+ #__Ãed_time_t
+
+
+ )
+
+131 
+ #__Ãed_tim”_t
+
+
+ )
+
+132 
+ #__Ãed_þockid_t
+
+
+ )
+
+133 
+ ~<time.h
+>
+
+135 #ifdeà
+__USE_XOPEN
+
+
+136 #iâdeà
+__u£cÚds_t_defšed
+
+
+137 
+__u£cÚds_t
+
+ tu£cÚds_t
+;
+
+138 
+ #__u£cÚds_t_defšed
+
+
+ )
+
+140 #iâdeà
+__su£cÚds_t_defšed
+
+
+141 
+__su£cÚds_t
+
+ tsu£cÚds_t
+;
+
+142 
+ #__su£cÚds_t_defšed
+
+
+ )
+
+146 
+ #__Ãed_size_t
+
+
+ )
+
+147 
+ ~<¡ddef.h
+>
+
+149 #ifdeà
+__USE_MISC
+
+
+151 
+ tulÚg
+;
+
+152 
+ tushÜt
+;
+
+153 
+ tušt
+;
+
+158 #ià!
+__GNUC_PREREQ
+ (2, 7)
+
+161 #iâdeà
+__št8_t_defšed
+
+
+162 
+ #__št8_t_defšed
+
+
+ )
+
+163 
+ tšt8_t
+;
+
+164 
+ tšt16_t
+;
+
+165 
+ tšt32_t
+;
+
+166 #ià
+__WORDSIZE
+ == 64
+
+167 
+ tšt64_t
+;
+
+168 #–ià
+__GLIBC_HAVE_LONG_LONG
+
+
+169
+__ex‹nsiÚ__
+ 
+ tšt64_t
+;
+
+174 
+ tu_št8_t
+;
+
+175 
+ tu_št16_t
+;
+
+176 
+ tu_št32_t
+;
+
+177 #ià
+__WORDSIZE
+ == 64
+
+178 
+ tu_št64_t
+;
+
+179 #–ià
+__GLIBC_HAVE_LONG_LONG
+
+
+180
+__ex‹nsiÚ__
+ 
+ tu_št64_t
+;
+
+183 
+ t»gi¡”_t
+;
+
+188 
+ #__štN_t
+(
+N
+,
+MODE
+) \
+
+189 ##
+ tN
+##
+ t_t
+
+ t__©Œibu‹__
+ ((
+ t__mode__
+ (
+ tMODE
+)))
+
+ )
+
+190 
+ t__u_štN_t
+(
+ tN
+,
+ tMODE
+) \
+
+191 
+ tu_št
+##
+ tN
+##
+ t_t
+
+ t__©Œibu‹__
+ ((
+ t__mode__
+ (
+ tMODE
+)))
+
+ )
+
+193 #iâdeà
+ t__št8_t_defšed
+
+
+194 
+ t__št8_t_defšed
+
+
+ )
+
+195
+ t__štN_t
+ (8,
+ t__QI__
+);
+
+196
+__štN_t
+ (16,
+__HI__
+);
+
+197
+__štN_t
+ (32,
+__SI__
+);
+
+198
+__štN_t
+ (64,
+__DI__
+);
+
+201
+__u_štN_t
+ (8,
+__QI__
+);
+
+202
+__u_štN_t
+ (16,
+__HI__
+);
+
+203
+__u_štN_t
+ (32,
+__SI__
+);
+
+204
+__u_štN_t
+ (64,
+__DI__
+);
+
+206 
+ t»gi¡”_t
+
+ t__©Œibu‹__
+ ((
+ t__mode__
+ (
+ t__wÜd__
+)));
+
+212 
+ #__BIT_TYPES_DEFINED__
+ 1
+
+ )
+
+215 #ifdef
+__USE_BSD
+
+
+217 
+ ~<’dŸn.h
+>
+
+220 
+ ~<sys/£Ëù.h
+>
+
+223 
+ ~<sys/sysmaüos.h
+>
+
+227 #ià
+defšed
+
+__USE_UNIX98
+ && !defšed
+__blksize_t_defšed
+
+
+228 
+__blksize_t
+
+ tblksize_t
+;
+
+229 
+ #__blksize_t_defšed
+
+
+ )
+
+233 #iâdeà
+__USE_FILE_OFFSET64
+
+
+234 #iâdeà
+__blkút_t_defšed
+
+
+235 
+__blkút_t
+
+ tblkút_t
+;
+
+236 
+ #__blkút_t_defšed
+
+
+ )
+
+238 #iâdeà
+__fsblkút_t_defšed
+
+
+239 
+__fsblkút_t
+
+ tfsblkút_t
+;
+
+240 
+ #__fsblkút_t_defšed
+
+
+ )
+
+242 #iâdeà
+__fsfžút_t_defšed
+
+
+243 
+__fsfžút_t
+
+ tfsfžút_t
+;
+
+244 
+ #__fsfžút_t_defšed
+
+
+ )
+
+247 #iâdeà
+__blkút_t_defšed
+
+
+248 
+__blkút64_t
+
+ tblkút_t
+;
+
+249 
+ #__blkút_t_defšed
+
+
+ )
+
+251 #iâdeà
+__fsblkút_t_defšed
+
+
+252 
+__fsblkút64_t
+
+ tfsblkút_t
+;
+
+253 
+ #__fsblkút_t_defšed
+
+
+ )
+
+255 #iâdeà
+__fsfžút_t_defšed
+
+
+256 
+__fsfžút64_t
+
+ tfsfžút_t
+;
+
+257 
+ #__fsfžút_t_defšed
+
+
+ )
+
+261 #ifdeà
+__USE_LARGEFILE64
+
+
+262 
+__blkút64_t
+
+ tblkút64_t
+;
+
+263 
+__fsblkút64_t
+
+ tfsblkút64_t
+;
+
+264 
+__fsfžút64_t
+
+ tfsfžút64_t
+;
+
+269 #ià
+defšed
+
+__USE_POSIX199506
+ || defšed
+__USE_UNIX98
+
+
+270 
+ ~<b™s/±h»adty³s.h
+>
+
+273
+ g__END_DECLS
+
+
+ @/usr/include/wchar.h
+
+24 #iâdeà
+_WCHAR_H
+
+
+26 #ià!
+defšed
+
+__Ãed_mb¡©e_t
+ && !defšed
+__Ãed_wšt_t
+
+
+27 
+ #_WCHAR_H
+ 1
+
+ )
+
+28 
+ ~<ã©u»s.h
+>
+
+31 #ifdeà
+_WCHAR_H
+
+
+33 
+ #__Ãed___FILE
+
+
+ )
+
+34 #ià
+defšed
+
+__USE_UNIX98
+ || defšed
+__USE_XOPEN2K
+
+
+35 
+ #__Ãed_FILE
+
+
+ )
+
+37 
+ ~<¡dio.h
+>
+
+39 
+ #__Ãed___va_li¡
+
+
+ )
+
+40 
+ ~<¡d¬g.h
+>
+
+42 
+ ~<b™s/wch¬.h
+>
+
+45 
+ #__Ãed_size_t
+
+
+ )
+
+46 
+ #__Ãed_wch¬_t
+
+
+ )
+
+47 
+ #__Ãed_NULL
+
+
+ )
+
+49 #ià
+defšed
+
+_WCHAR_H
+ || defšed
+__Ãed_wšt_t
+ || !defšed
+__WINT_TYPE__
+
+
+50 #undeà
+__Ãed_wšt_t
+
+
+51 
+ #__Ãed_wšt_t
+
+
+ )
+
+52 
+ ~<¡ddef.h
+>
+
+55 #ià
+defšed
+
+__ýlu¥lus
+ &&
+__GNUC_PREREQ
+ (4, 4)
+
+56 
+ #__CORRECT_ISO_CPP_WCHAR_H_PROTO
+
+
+ )
+
+61 #iâdeà
+_WINT_T
+
+
+66 
+ #_WINT_T
+
+
+ )
+
+67 
+ twšt_t
+;
+
+71 #ià
+defšed
+
+__ýlu¥lus
+ && defšed
+_GLIBCPP_USE_NAMESPACES
+ \
+
+72 &&
+defšed
+
+__WINT_TYPE__
+
+
+73
+__BEGIN_NAMESPACE_STD
+
+
+74 
+__WINT_TYPE__
+
+ twšt_t
+;
+
+75
+ g__END_NAMESPACE_STD
+
+
+80 #ià(
+defšed
+
+_WCHAR_H
+ || defšed
+__Ãed_mb¡©e_t
+è&& !defšed
+__mb¡©e_t_defšed
+
+
+81 
+ #__mb¡©e_t_defšed
+ 1
+
+ )
+
+85 
+ m__couÁ
+;
+
+88 #ifdeà
+__WINT_TYPE__
+
+
+89
+__WINT_TYPE__
+
+ m__wch
+;
+
+91
+wšt_t
+
+ m__wch
+;
+
+93 
+ m__wchb
+[4];
+
+94 }
+ m__v®ue
+;
+
+95 }
+ t__mb¡©e_t
+;
+
+97 #undeà
+__Ãed_mb¡©e_t
+
+
+102 #ifdeà
+_WCHAR_H
+
+
+104
+__BEGIN_NAMESPACE_C99
+
+
+106 
+__mb¡©e_t
+
+ tmb¡©e_t
+;
+
+107
+ g__END_NAMESPACE_C99
+
+
+108 #ifdeà
+__USE_GNU
+
+
+109
+ $__USING_NAMESPACE_C99
+(
+mb¡©e_t
+)
+
+112 #iâdeà
+WCHAR_MIN
+
+
+114 
+ #WCHAR_MIN
+
+__WCHAR_MIN
+
+
+ )
+
+115 
+ #WCHAR_MAX
+
+__WCHAR_MAX
+
+
+ )
+
+118 #iâdeà
+WEOF
+
+
+119 
+ #WEOF
+ (0xffffffffu)
+
+ )
+
+124 #ià
+defšed
+
+__USE_XOPEN
+ && !defšed
+__USE_UNIX98
+
+
+125 
+ ~<wùy³.h
+>
+
+129
+__BEGIN_DECLS
+
+
+131
+__BEGIN_NAMESPACE_STD
+
+
+134 
+tm
+;
+
+135
+__END_NAMESPACE_STD
+
+
+139
+ $__USING_NAMESPACE_STD
+(
+tm
+)
+
+142
+__BEGIN_NAMESPACE_STD
+
+
+144
+wch¬_t
+ *
+ $wcsýy
+ (
+wch¬_t
+ *
+__»¡riù
+
+__de¡
+,
+
+145
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__¤c
+__THROW
+;
+
+147
+wch¬_t
+ *
+ $wc¢ýy
+ (
+wch¬_t
+ *
+__»¡riù
+
+__de¡
+,
+
+148
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__¤c
+,
+size_t
+
+__n
+)
+
+149
+__THROW
+;
+
+152
+wch¬_t
+ *
+ $wcsÿt
+ (
+wch¬_t
+ *
+__»¡riù
+
+__de¡
+,
+
+153
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__¤c
+__THROW
+;
+
+155
+wch¬_t
+ *
+ $wc¢ÿt
+ (
+wch¬_t
+ *
+__»¡riù
+
+__de¡
+,
+
+156
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__¤c
+,
+size_t
+
+__n
+)
+
+157
+__THROW
+;
+
+160 
+ $wcscmp
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__s1
+, __cÚ¡ wch¬_ˆ*
+__s2
+)
+
+161
+__THROW
+
+__©Œibu‹_pu»__
+;
+
+163 
+ $wc¢cmp
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__s1
+, __cÚ¡ wch¬_ˆ*
+__s2
+,
+size_t
+
+__n
+)
+
+164
+__THROW
+
+__©Œibu‹_pu»__
+;
+
+165
+__END_NAMESPACE_STD
+
+
+167 #ifdeà
+__USE_XOPEN2K8
+
+
+169 
+ $wcsÿ£cmp
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__s1
+, __cÚ¡ wch¬_ˆ*
+__s2
+__THROW
+;
+
+172 
+ $wc¢ÿ£cmp
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__s1
+, __cÚ¡ wch¬_ˆ*
+__s2
+,
+
+173
+size_t
+
+__n
+__THROW
+;
+
+177 
+ ~<xloÿË.h
+>
+
+179 
+ $wcsÿ£cmp_l
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__s1
+, __cÚ¡ wch¬_ˆ*
+__s2
+,
+
+180
+__loÿË_t
+
+__loc
+__THROW
+;
+
+182 
+ $wc¢ÿ£cmp_l
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__s1
+, __cÚ¡ wch¬_ˆ*
+__s2
+,
+
+183
+size_t
+
+__n
+,
+__loÿË_t
+
+__loc
+__THROW
+;
+
+186
+__BEGIN_NAMESPACE_STD
+
+
+189 
+ $wcscÞl
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__s1
+, __cÚ¡ wch¬_ˆ*
+__s2
+__THROW
+;
+
+193
+size_t
+
+ $wcsxäm
+ (
+wch¬_t
+ *
+__»¡riù
+
+__s1
+,
+
+194
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__s2
+,
+size_t
+
+__n
+__THROW
+;
+
+195
+__END_NAMESPACE_STD
+
+
+197 #ifdeà
+__USE_XOPEN2K8
+
+
+203 
+ $wcscÞl_l
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__s1
+, __cÚ¡ wch¬_ˆ*
+__s2
+,
+
+204
+__loÿË_t
+
+__loc
+__THROW
+;
+
+209
+size_t
+
+ $wcsxäm_l
+ (
+wch¬_t
+ *
+__s1
+,
+__cÚ¡
+ wch¬_ˆ*
+__s2
+,
+
+210
+size_t
+
+__n
+,
+__loÿË_t
+
+__loc
+__THROW
+;
+
+213
+wch¬_t
+ *
+ $wcsdup
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__s
+__THROW
+
+__©Œibu‹_m®loc__
+;
+
+216
+__BEGIN_NAMESPACE_STD
+
+
+218 #ifdeà
+__CORRECT_ISO_CPP_WCHAR_H_PROTO
+
+
+219 "C++"
+wch¬_t
+ *
+ $wcschr
+ (
+wch¬_t
+ *
+__wcs
+, wch¬_ˆ
+__wc
+)
+
+220
+__THROW
+
+ `__asm
+ ("wcschr"è
+__©Œibu‹_pu»__
+;
+
+221 "C++"
+__cÚ¡
+
+wch¬_t
+ *
+ $wcschr
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__wcs
+, wch¬_ˆ
+__wc
+)
+
+222
+__THROW
+
+ `__asm
+ ("wcschr"è
+__©Œibu‹_pu»__
+;
+
+224
+wch¬_t
+ *
+ $wcschr
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__wcs
+, wch¬_ˆ
+__wc
+)
+
+225
+__THROW
+
+__©Œibu‹_pu»__
+;
+
+228 #ifdeà
+__CORRECT_ISO_CPP_WCHAR_H_PROTO
+
+
+229 "C++"
+wch¬_t
+ *
+ $wc¤chr
+ (
+wch¬_t
+ *
+__wcs
+, wch¬_ˆ
+__wc
+)
+
+230
+__THROW
+
+ `__asm
+ ("wc¤chr"è
+__©Œibu‹_pu»__
+;
+
+231 "C++"
+__cÚ¡
+
+wch¬_t
+ *
+ $wc¤chr
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__wcs
+, wch¬_ˆ
+__wc
+)
+
+232
+__THROW
+
+ `__asm
+ ("wc¤chr"è
+__©Œibu‹_pu»__
+;
+
+234
+wch¬_t
+ *
+ $wc¤chr
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__wcs
+, wch¬_ˆ
+__wc
+)
+
+235
+__THROW
+
+__©Œibu‹_pu»__
+;
+
+237
+__END_NAMESPACE_STD
+
+
+239 #ifdeà
+__USE_GNU
+
+
+242
+wch¬_t
+ *
+ $wcschºul
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__s
+, wch¬_ˆ
+__wc
+)
+
+243
+__THROW
+
+__©Œibu‹_pu»__
+;
+
+246
+__BEGIN_NAMESPACE_STD
+
+
+249
+size_t
+
+ $wcsc¥n
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__wcs
+, __cÚ¡ wch¬_ˆ*
+__»jeù
+)
+
+250
+__THROW
+
+__©Œibu‹_pu»__
+;
+
+253
+size_t
+
+ $wcs¥n
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__wcs
+, __cÚ¡ wch¬_ˆ*
+__acû±
+)
+
+254
+__THROW
+
+__©Œibu‹_pu»__
+;
+
+256 #ifdeà
+__CORRECT_ISO_CPP_WCHAR_H_PROTO
+
+
+257 "C++"
+wch¬_t
+ *
+ $wc¥brk
+ (
+wch¬_t
+ *
+__wcs
+,
+__cÚ¡
+ wch¬_ˆ*
+__acû±
+)
+
+258
+__THROW
+
+ `__asm
+ ("wc¥brk"è
+__©Œibu‹_pu»__
+;
+
+259 "C++"
+__cÚ¡
+
+wch¬_t
+ *
+ $wc¥brk
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__wcs
+,
+
+260
+__cÚ¡
+
+wch¬_t
+ *
+__acû±
+)
+
+261
+__THROW
+
+ `__asm
+ ("wc¥brk"è
+__©Œibu‹_pu»__
+;
+
+263
+wch¬_t
+ *
+ $wc¥brk
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__wcs
+, __cÚ¡ wch¬_ˆ*
+__acû±
+)
+
+264
+__THROW
+
+__©Œibu‹_pu»__
+;
+
+267 #ifdeà
+__CORRECT_ISO_CPP_WCHAR_H_PROTO
+
+
+268 "C++"
+wch¬_t
+ *
+ $wcs¡r
+ (
+wch¬_t
+ *
+__hay¡ack
+,
+__cÚ¡
+ wch¬_ˆ*
+__ÃedË
+)
+
+269
+__THROW
+
+ `__asm
+ ("wcs¡r"è
+__©Œibu‹_pu»__
+;
+
+270 "C++"
+__cÚ¡
+
+wch¬_t
+ *
+ $wcs¡r
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__hay¡ack
+,
+
+271
+__cÚ¡
+
+wch¬_t
+ *
+__ÃedË
+)
+
+272
+__THROW
+
+ `__asm
+ ("wcs¡r"è
+__©Œibu‹_pu»__
+;
+
+274
+wch¬_t
+ *
+ $wcs¡r
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__hay¡ack
+, __cÚ¡ wch¬_ˆ*
+__ÃedË
+)
+
+275
+__THROW
+
+__©Œibu‹_pu»__
+;
+
+279
+wch¬_t
+ *
+ $wc¡ok
+ (
+wch¬_t
+ *
+__»¡riù
+
+__s
+,
+
+280
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__d–im
+,
+
+281
+wch¬_t
+ **
+__»¡riù
+
+__±r
+__THROW
+;
+
+284
+size_t
+
+ $wc¦’
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__s
+__THROW
+
+__©Œibu‹_pu»__
+;
+
+285
+__END_NAMESPACE_STD
+
+
+287 #ifdeà
+__USE_XOPEN
+
+
+289 #ifdeà
+__CORRECT_ISO_CPP_WCHAR_H_PROTO
+
+
+290 "C++"
+wch¬_t
+ *
+ $wcswcs
+ (
+wch¬_t
+ *
+__hay¡ack
+,
+__cÚ¡
+ wch¬_ˆ*
+__ÃedË
+)
+
+291
+__THROW
+
+ `__asm
+ ("wcswcs"è
+__©Œibu‹_pu»__
+;
+
+292 "C++"
+__cÚ¡
+
+wch¬_t
+ *
+ $wcswcs
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__hay¡ack
+,
+
+293
+__cÚ¡
+
+wch¬_t
+ *
+__ÃedË
+)
+
+294
+__THROW
+
+ `__asm
+ ("wcswcs"è
+__©Œibu‹_pu»__
+;
+
+296
+wch¬_t
+ *
+ $wcswcs
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__hay¡ack
+, __cÚ¡ wch¬_ˆ*
+__ÃedË
+)
+
+297
+__THROW
+
+__©Œibu‹_pu»__
+;
+
+301 #ifdeà
+__USE_XOPEN2K8
+
+
+303
+size_t
+
+ $wc¢Ën
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__s
+,
+size_t
+
+__maxËn
+)
+
+304
+__THROW
+
+__©Œibu‹_pu»__
+;
+
+308
+__BEGIN_NAMESPACE_STD
+
+
+310 #ifdeà
+__CORRECT_ISO_CPP_WCHAR_H_PROTO
+
+
+311 "C++"
+wch¬_t
+ *
+ $wmemchr
+ (
+wch¬_t
+ *
+__s
+, wch¬_ˆ
+__c
+,
+size_t
+
+__n
+)
+
+312
+__THROW
+
+ `__asm
+ ("wmemchr"è
+__©Œibu‹_pu»__
+;
+
+313 "C++"
+__cÚ¡
+
+wch¬_t
+ *
+ $wmemchr
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__s
+, wch¬_ˆ
+__c
+,
+
+314
+size_t
+
+__n
+)
+
+315
+__THROW
+
+ `__asm
+ ("wmemchr"è
+__©Œibu‹_pu»__
+;
+
+317
+wch¬_t
+ *
+ $wmemchr
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__s
+, wch¬_ˆ
+__c
+,
+size_t
+
+__n
+)
+
+318
+__THROW
+
+__©Œibu‹_pu»__
+;
+
+322 
+ $wmemcmp
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__s1
+,
+
+323
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__s2
+,
+size_t
+
+__n
+)
+
+324
+__THROW
+
+__©Œibu‹_pu»__
+;
+
+327
+wch¬_t
+ *
+ $wmemýy
+ (
+wch¬_t
+ *
+__»¡riù
+
+__s1
+,
+
+328
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__s2
+,
+size_t
+
+__n
+__THROW
+;
+
+332
+wch¬_t
+ *
+ $wmemmove
+ (
+wch¬_t
+ *
+__s1
+,
+__cÚ¡
+ wch¬_ˆ*
+__s2
+,
+size_t
+
+__n
+)
+
+333
+__THROW
+;
+
+336
+wch¬_t
+ *
+ $wmem£t
+ (
+wch¬_t
+ *
+__s
+, wch¬_ˆ
+__c
+,
+size_t
+
+__n
+__THROW
+;
+
+337
+__END_NAMESPACE_STD
+
+
+339 #ifdeà
+__USE_GNU
+
+
+342
+wch¬_t
+ *
+ $wmempýy
+ (
+wch¬_t
+ *
+__»¡riù
+
+__s1
+,
+
+343
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__s2
+,
+size_t
+
+__n
+)
+
+344
+__THROW
+;
+
+348
+__BEGIN_NAMESPACE_STD
+
+
+351
+wšt_t
+
+ $btowc
+ (
+__c
+__THROW
+;
+
+355 
+ $wùob
+ (
+wšt_t
+
+__c
+__THROW
+;
+
+359 
+ $mbsš™
+ (
+__cÚ¡
+
+mb¡©e_t
+ *
+__ps
+__THROW
+
+__©Œibu‹_pu»__
+;
+
+363
+size_t
+
+ $mb¹owc
+ (
+wch¬_t
+ *
+__»¡riù
+
+__pwc
+,
+
+364
+__cÚ¡
+ *
+__»¡riù
+
+__s
+,
+size_t
+
+__n
+,
+
+365
+mb¡©e_t
+ *
+__p
+__THROW
+;
+
+368
+size_t
+
+ $wütomb
+ (*
+__»¡riù
+
+__s
+,
+wch¬_t
+
+__wc
+,
+
+369
+mb¡©e_t
+ *
+__»¡riù
+
+__ps
+__THROW
+;
+
+372
+size_t
+
+ $__mb¾’
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__s
+,
+size_t
+
+__n
+,
+
+373
+mb¡©e_t
+ *
+__»¡riù
+
+__ps
+__THROW
+;
+
+374
+size_t
+
+ $mb¾’
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__s
+,
+size_t
+
+__n
+,
+
+375
+mb¡©e_t
+ *
+__»¡riù
+
+__ps
+__THROW
+;
+
+376
+__END_NAMESPACE_STD
+
+
+378 #ifdeà
+__USE_EXTERN_INLINES
+
+
+384
+wšt_t
+
+ $__btowc_®Ÿs
+ (
+__c
+ `__asm
+ ("btowc");
+
+385
+__ex‹º_šlše
+
+wšt_t
+
+
+386
+ `__NTH
+ (
+ $btowc
+ (
+__c
+))
+
+387 {  (
+ `__bužtš_cÚ¡ªt_p
+ (
+__c
+) && __c >= '\0' && __c <= '\x7f'
+
+388 ? (
+wšt_t
+__c
+ :
+ `__btowc_®Ÿs
+ (__c));
+ }
+}
+
+390 
+ $__wùob_®Ÿs
+ (
+wšt_t
+
+__c
+ `__asm
+ ("wctob");
+
+391
+__ex‹º_šlše
+ 
+
+392
+ `__NTH
+ (
+ $wùob
+ (
+wšt_t
+
+__wc
+))
+
+393 {  (
+ `__bužtš_cÚ¡ªt_p
+ (
+__wc
+è&& __wø>ð
+L
+'\0' && __wc <= L'\x7f'
+
+394 ? (è
+__wc
+ :
+ `__wùob_®Ÿs
+ (__wc));
+ }
+}
+
+396
+__ex‹º_šlše
+
+size_t
+
+
+397
+__NTH
+ (
+ $mb¾’
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__s
+,
+size_t
+
+__n
+,
+
+398
+mb¡©e_t
+ *
+__»¡riù
+
+__ps
+))
+
+399 {  (
+__ps
+ !ð
+NULL
+
+
+400 ?
+ `mb¹owc
+ (
+NULL
+,
+__s
+,
+__n
+,
+__ps
+è:
+ `__mb¾’
+ (__s, __n, NULL));
+ }
+}
+
+403
+__BEGIN_NAMESPACE_STD
+
+
+406
+size_t
+
+ $mb¤towcs
+ (
+wch¬_t
+ *
+__»¡riù
+
+__d¡
+,
+
+407
+__cÚ¡
+ **
+__»¡riù
+
+__¤c
+,
+size_t
+
+__Ën
+,
+
+408
+mb¡©e_t
+ *
+__»¡riù
+
+__ps
+__THROW
+;
+
+412
+size_t
+
+ $wc¤tombs
+ (*
+__»¡riù
+
+__d¡
+,
+
+413
+__cÚ¡
+
+wch¬_t
+ **
+__»¡riù
+
+__¤c
+,
+size_t
+
+__Ën
+,
+
+414
+mb¡©e_t
+ *
+__»¡riù
+
+__ps
+__THROW
+;
+
+415
+__END_NAMESPACE_STD
+
+
+418 #ifdef
+__USE_XOPEN2K8
+
+
+421
+size_t
+
+ $mb¢¹owcs
+ (
+wch¬_t
+ *
+__»¡riù
+
+__d¡
+,
+
+422
+__cÚ¡
+ **
+__»¡riù
+
+__¤c
+,
+size_t
+
+__nmc
+,
+
+423
+size_t
+
+__Ën
+,
+mb¡©e_t
+ *
+__»¡riù
+
+__ps
+__THROW
+;
+
+427
+size_t
+
+ $wc¢¹ombs
+ (*
+__»¡riù
+
+__d¡
+,
+
+428
+__cÚ¡
+
+wch¬_t
+ **
+__»¡riù
+
+__¤c
+,
+
+429
+size_t
+
+__nwc
+, size_ˆ
+__Ën
+,
+
+430
+mb¡©e_t
+ *
+__»¡riù
+
+__ps
+__THROW
+;
+
+435 #ifdeà
+__USE_XOPEN
+
+
+437 
+ $wcwidth
+ (
+wch¬_t
+
+__c
+__THROW
+;
+
+441 
+ $wcswidth
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__s
+,
+size_t
+
+__n
+__THROW
+;
+
+445
+__BEGIN_NAMESPACE_STD
+
+
+448 
+ $wc¡od
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__Ō
+,
+
+449
+wch¬_t
+ **
+__»¡riù
+
+__’d±r
+__THROW
+;
+
+450
+__END_NAMESPACE_STD
+
+
+452 #ifdeà
+__USE_ISOC99
+
+
+453
+__BEGIN_NAMESPACE_C99
+
+
+455 
+ $wc¡of
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__Ō
+,
+
+456
+wch¬_t
+ **
+__»¡riù
+
+__’d±r
+__THROW
+;
+
+457 
+ $wc¡Þd
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__Ō
+,
+
+458
+wch¬_t
+ **
+__»¡riù
+
+__’d±r
+__THROW
+;
+
+459
+__END_NAMESPACE_C99
+
+
+463
+__BEGIN_NAMESPACE_STD
+
+
+466 
+ $wc¡Þ
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__Ō
+,
+
+467
+wch¬_t
+ **
+__»¡riù
+
+__’d±r
+, 
+__ba£
+__THROW
+;
+
+471 
+ $wc¡oul
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__Ō
+,
+
+472
+wch¬_t
+ **
+__»¡riù
+
+__’d±r
+, 
+__ba£
+)
+
+473
+__THROW
+;
+
+474
+__END_NAMESPACE_STD
+
+
+476 #ià
+defšed
+
+__USE_ISOC99
+ || (defšed
+__GNUC__
+ && defšed
+__USE_GNU
+)
+
+477
+__BEGIN_NAMESPACE_C99
+
+
+480
+__ex‹nsiÚ__
+
+
+481 
+ $wc¡Þl
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__Ō
+,
+
+482
+wch¬_t
+ **
+__»¡riù
+
+__’d±r
+, 
+__ba£
+)
+
+483
+__THROW
+;
+
+487
+__ex‹nsiÚ__
+
+
+488 
+ $wc¡ouÎ
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__Ō
+,
+
+489
+wch¬_t
+ **
+__»¡riù
+
+__’d±r
+,
+
+490 
+__ba£
+__THROW
+;
+
+491
+__END_NAMESPACE_C99
+
+
+494 #ià
+defšed
+
+__GNUC__
+ && defšed
+__USE_GNU
+
+
+497
+__ex‹nsiÚ__
+
+
+498 
+ $wc¡oq
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__Ō
+,
+
+499
+wch¬_t
+ **
+__»¡riù
+
+__’d±r
+, 
+__ba£
+)
+
+500
+__THROW
+;
+
+504
+__ex‹nsiÚ__
+
+
+505 
+ $wc¡ouq
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__Ō
+,
+
+506
+wch¬_t
+ **
+__»¡riù
+
+__’d±r
+,
+
+507 
+__ba£
+__THROW
+;
+
+510 #ifdeà
+__USE_GNU
+
+
+524 
+ ~<xloÿË.h
+>
+
+528 
+ $wc¡Þ_l
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__Ō
+,
+
+529
+wch¬_t
+ **
+__»¡riù
+
+__’d±r
+, 
+__ba£
+,
+
+530
+__loÿË_t
+
+__loc
+__THROW
+;
+
+532 
+ $wc¡oul_l
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__Ō
+,
+
+533
+wch¬_t
+ **
+__»¡riù
+
+__’d±r
+,
+
+534 
+__ba£
+,
+__loÿË_t
+
+__loc
+__THROW
+;
+
+536
+__ex‹nsiÚ__
+
+
+537 
+ $wc¡Þl_l
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__Ō
+,
+
+538
+wch¬_t
+ **
+__»¡riù
+
+__’d±r
+,
+
+539 
+__ba£
+,
+__loÿË_t
+
+__loc
+__THROW
+;
+
+541
+__ex‹nsiÚ__
+
+
+542 
+ $wc¡ouÎ_l
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__Ō
+,
+
+543
+wch¬_t
+ **
+__»¡riù
+
+__’d±r
+,
+
+544 
+__ba£
+,
+__loÿË_t
+
+__loc
+)
+
+545
+__THROW
+;
+
+547 
+ $wc¡od_l
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__Ō
+,
+
+548
+wch¬_t
+ **
+__»¡riù
+
+__’d±r
+,
+__loÿË_t
+
+__loc
+)
+
+549
+__THROW
+;
+
+551 
+ $wc¡of_l
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__Ō
+,
+
+552
+wch¬_t
+ **
+__»¡riù
+
+__’d±r
+,
+__loÿË_t
+
+__loc
+)
+
+553
+__THROW
+;
+
+555 
+ $wc¡Þd_l
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__Ō
+,
+
+556
+wch¬_t
+ **
+__»¡riù
+
+__’d±r
+,
+
+557
+__loÿË_t
+
+__loc
+__THROW
+;
+
+561 #ifdef
+__USE_XOPEN2K8
+
+
+564
+wch¬_t
+ *
+ $wýýy
+ (
+wch¬_t
+ *
+__de¡
+,
+__cÚ¡
+ wch¬_ˆ*
+__¤c
+__THROW
+;
+
+568
+wch¬_t
+ *
+ $wýnýy
+ (
+wch¬_t
+ *
+__de¡
+,
+__cÚ¡
+ wch¬_ˆ*
+__¤c
+,
+size_t
+
+__n
+)
+
+569
+__THROW
+;
+
+575 #ifdef
+__USE_XOPEN2K8
+
+
+578
+__FILE
+ *
+ $Ý’_wmem¡»am
+ (
+wch¬_t
+ **
+__buæoc
+,
+size_t
+ *
+__siz–oc
+__THROW
+;
+
+581 #ià
+defšed
+
+__USE_ISOC95
+ || defšed
+__USE_UNIX98
+
+
+582
+__BEGIN_NAMESPACE_STD
+
+
+585 
+ $fwide
+ (
+__FILE
+ *
+__å
+, 
+__mode
+__THROW
+;
+
+592 
+ `fw´štf
+ (
+__FILE
+ *
+__»¡riù
+
+__¡»am
+,
+
+593
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fÜm©
+, ...)
+
+599 
+ `w´štf
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fÜm©
+, ...)
+
+602 
+ $sw´štf
+ (
+wch¬_t
+ *
+__»¡riù
+
+__s
+,
+size_t
+
+__n
+,
+
+603
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fÜm©
+, ...)
+
+604
+__THROW
+ ;
+
+610 
+ `vfw´štf
+ (
+__FILE
+ *
+__»¡riù
+
+__s
+,
+
+611
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fÜm©
+,
+
+612
+__gnuc_va_li¡
+
+__¬g
+)
+
+618 
+ `vw´štf
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fÜm©
+,
+
+619
+__gnuc_va_li¡
+
+__¬g
+)
+
+623 
+ $vsw´štf
+ (
+wch¬_t
+ *
+__»¡riù
+
+__s
+,
+size_t
+
+__n
+,
+
+624
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fÜm©
+,
+
+625
+__gnuc_va_li¡
+
+__¬g
+)
+
+626
+__THROW
+ ;
+
+633 
+ `fwsÿnf
+ (
+__FILE
+ *
+__»¡riù
+
+__¡»am
+,
+
+634
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fÜm©
+, ...)
+
+640 
+ `wsÿnf
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fÜm©
+, ...)
+
+643 
+ $swsÿnf
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__s
+,
+
+644
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fÜm©
+, ...)
+
+645
+__THROW
+ ;
+
+647 #ià
+defšed
+
+__USE_ISOC99
+ && !defšed
+__USE_GNU
+ \
+
+648 && (!
+defšed
+
+__LDBL_COMPAT
+ || !defšed
+__REDIRECT
+) \
+
+649 && (
+defšed
+
+__STRICT_ANSI__
+ || defšed
+__USE_XOPEN2K
+)
+
+650 #ifdeà
+__REDIRECT
+
+
+654 
+ `__REDIRECT
+ (
+fwsÿnf
+, (
+__FILE
+ *
+__»¡riù
+
+__¡»am
+,
+
+655
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fÜm©
+, ...),
+
+656
+__isoc99_fwsÿnf
+)
+
+658 
+ `__REDIRECT
+ (
+wsÿnf
+, (
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fÜm©
+, ...),
+
+659
+__isoc99_wsÿnf
+)
+
+661 
+ `__REDIRECT
+ (
+swsÿnf
+, (
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__s
+,
+
+662
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fÜm©
+, ...),
+
+663
+__isoc99_swsÿnf
+)
+
+664
+__THROW
+ ;
+
+666 
+ `__isoc99_fwsÿnf
+ (
+__FILE
+ *
+__»¡riù
+
+__¡»am
+,
+
+667
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fÜm©
+, ...);
+
+668 
+ `__isoc99_wsÿnf
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fÜm©
+, ...);
+
+669 
+ $__isoc99_swsÿnf
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__s
+,
+
+670
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fÜm©
+, ...)
+
+671
+__THROW
+;
+
+672 
+ #fwsÿnf
+
+__isoc99_fwsÿnf
+
+
+ )
+
+673 
+ #wsÿnf
+
+__isoc99_wsÿnf
+
+
+ )
+
+674 
+ #swsÿnf
+
+__isoc99_swsÿnf
+
+
+ )
+
+678
+__END_NAMESPACE_STD
+
+
+681 #ifdeà
+__USE_ISOC99
+
+
+682
+__BEGIN_NAMESPACE_C99
+
+
+687 
+ `vfwsÿnf
+ (
+__FILE
+ *
+__»¡riù
+
+__s
+,
+
+688
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fÜm©
+,
+
+689
+__gnuc_va_li¡
+
+__¬g
+)
+
+695 
+ `vwsÿnf
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fÜm©
+,
+
+696
+__gnuc_va_li¡
+
+__¬g
+)
+
+699 
+ $vswsÿnf
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__s
+,
+
+700
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fÜm©
+,
+
+701
+__gnuc_va_li¡
+
+__¬g
+)
+
+702
+__THROW
+ ;
+
+704 #ià!
+defšed
+
+__USE_GNU
+ \
+
+705 && (!
+defšed
+
+__LDBL_COMPAT
+ || !defšed
+__REDIRECT
+) \
+
+706 && (
+defšed
+
+__STRICT_ANSI__
+ || defšed
+__USE_XOPEN2K
+)
+
+707 #ifdeà
+__REDIRECT
+
+
+708 
+ `__REDIRECT
+ (
+vfwsÿnf
+, (
+__FILE
+ *
+__»¡riù
+
+__s
+,
+
+709
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fÜm©
+,
+
+710
+__gnuc_va_li¡
+
+__¬g
+),
+__isoc99_vfwsÿnf
+)
+
+712 
+ `__REDIRECT
+ (
+vwsÿnf
+, (
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fÜm©
+,
+
+713
+__gnuc_va_li¡
+
+__¬g
+),
+__isoc99_vwsÿnf
+)
+
+715 
+ `__REDIRECT
+ (
+vswsÿnf
+, (
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__s
+,
+
+716
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fÜm©
+,
+
+717
+__gnuc_va_li¡
+
+__¬g
+),
+__isoc99_vswsÿnf
+)
+
+718
+__THROW
+ ;
+
+720 
+ `__isoc99_vfwsÿnf
+ (
+__FILE
+ *
+__»¡riù
+
+__s
+,
+
+721
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fÜm©
+,
+
+722
+__gnuc_va_li¡
+
+__¬g
+);
+
+723 
+ `__isoc99_vwsÿnf
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fÜm©
+,
+
+724
+__gnuc_va_li¡
+
+__¬g
+);
+
+725 
+ $__isoc99_vswsÿnf
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__s
+,
+
+726
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fÜm©
+,
+
+727
+__gnuc_va_li¡
+
+__¬g
+__THROW
+;
+
+728 
+ #vfwsÿnf
+
+__isoc99_vfwsÿnf
+
+
+ )
+
+729 
+ #vwsÿnf
+
+__isoc99_vwsÿnf
+
+
+ )
+
+730 
+ #vswsÿnf
+
+__isoc99_vswsÿnf
+
+
+ )
+
+734
+__END_NAMESPACE_C99
+
+
+738
+__BEGIN_NAMESPACE_STD
+
+
+743
+wšt_t
+
+ `fg‘wc
+ (
+__FILE
+ *
+__¡»am
+);
+
+744
+wšt_t
+
+ `g‘wc
+ (
+__FILE
+ *
+__¡»am
+);
+
+750
+wšt_t
+
+ `g‘wch¬
+ ();
+
+757
+wšt_t
+
+ `åutwc
+ (
+wch¬_t
+
+__wc
+,
+__FILE
+ *
+__¡»am
+);
+
+758
+wšt_t
+
+ `putwc
+ (
+wch¬_t
+
+__wc
+,
+__FILE
+ *
+__¡»am
+);
+
+764
+wšt_t
+
+ `putwch¬
+ (
+wch¬_t
+
+__wc
+);
+
+772
+wch¬_t
+ *
+ `fg‘ws
+ (wch¬_ˆ*
+__»¡riù
+
+__ws
+, 
+__n
+,
+
+773
+__FILE
+ *
+__»¡riù
+
+__¡»am
+);
+
+779 
+ `åutws
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__ws
+,
+
+780
+__FILE
+ *
+__»¡riù
+
+__¡»am
+);
+
+787
+wšt_t
+
+ `ung‘wc
+ (wšt_ˆ
+__wc
+,
+__FILE
+ *
+__¡»am
+);
+
+788
+__END_NAMESPACE_STD
+
+
+791 #ifdeà
+__USE_GNU
+
+
+799
+wšt_t
+
+ `g‘wc_uÆocked
+ (
+__FILE
+ *
+__¡»am
+);
+
+800
+wšt_t
+
+ `g‘wch¬_uÆocked
+ ();
+
+808
+wšt_t
+
+ `fg‘wc_uÆocked
+ (
+__FILE
+ *
+__¡»am
+);
+
+816
+wšt_t
+
+ `åutwc_uÆocked
+ (
+wch¬_t
+
+__wc
+,
+__FILE
+ *
+__¡»am
+);
+
+825
+wšt_t
+
+ `putwc_uÆocked
+ (
+wch¬_t
+
+__wc
+,
+__FILE
+ *
+__¡»am
+);
+
+826
+wšt_t
+
+ `putwch¬_uÆocked
+ (
+wch¬_t
+
+__wc
+);
+
+835
+wch¬_t
+ *
+ `fg‘ws_uÆocked
+ (wch¬_ˆ*
+__»¡riù
+
+__ws
+, 
+__n
+,
+
+836
+__FILE
+ *
+__»¡riù
+
+__¡»am
+);
+
+844 
+ `åutws_uÆocked
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__ws
+,
+
+845
+__FILE
+ *
+__»¡riù
+
+__¡»am
+);
+
+849
+__BEGIN_NAMESPACE_C99
+
+
+853
+size_t
+
+ $wcsáime
+ (
+wch¬_t
+ *
+__»¡riù
+
+__s
+,
+size_t
+
+__maxsize
+,
+
+854
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fÜm©
+,
+
+855
+__cÚ¡
+ 
+tm
+ *
+__»¡riù
+
+__
+__THROW
+;
+
+856
+__END_NAMESPACE_C99
+
+
+858 #ifdeà
+__USE_GNU
+
+
+859 
+ ~<xloÿË.h
+>
+
+863
+size_t
+
+ $wcsáime_l
+ (
+wch¬_t
+ *
+__»¡riù
+
+__s
+,
+size_t
+
+__maxsize
+,
+
+864
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fÜm©
+,
+
+865
+__cÚ¡
+ 
+tm
+ *
+__»¡riù
+
+__
+,
+
+866
+__loÿË_t
+
+__loc
+__THROW
+;
+
+875 #ià
+defšed
+
+__USE_UNIX98
+ && !defšed
+__USE_GNU
+
+
+876 
+ #__Ãed_iswxxx
+
+
+ )
+
+877 
+ ~<wùy³.h
+>
+
+881 #ià
+__USE_FORTIFY_LEVEL
+ > 0 &&
+defšed
+
+__ex‹º_®ways_šlše
+
+
+882 
+ ~<b™s/wch¬2.h
+>
+
+885 #ifdeà
+__LDBL_COMPAT
+
+
+886 
+ ~<b™s/wch¬-ldbl.h
+>
+
+889
+__END_DECLS
+
+
+897 #undeà
+__Ãed_mb¡©e_t
+
+
+898 #undeà
+__Ãed_wšt_t
+
+
+ @/usr/include/bits/pthreadtypes.h
+
+20 #iâdeà
+_BITS_PTHREADTYPES_H
+
+
+21 
+ #_BITS_PTHREADTYPES_H
+ 1
+
+ )
+
+23 
+ ~<b™s/wÜdsize.h
+>
+
+25 #ià
+__WORDSIZE
+ == 64
+
+26 
+ #__SIZEOF_PTHREAD_ATTR_T
+ 56
+
+ )
+
+27 
+ #__SIZEOF_PTHREAD_MUTEX_T
+ 40
+
+ )
+
+28 
+ #__SIZEOF_PTHREAD_MUTEXATTR_T
+ 4
+
+ )
+
+29 
+ #__SIZEOF_PTHREAD_COND_T
+ 48
+
+ )
+
+30 
+ #__SIZEOF_PTHREAD_CONDATTR_T
+ 4
+
+ )
+
+31 
+ #__SIZEOF_PTHREAD_RWLOCK_T
+ 56
+
+ )
+
+32 
+ #__SIZEOF_PTHREAD_RWLOCKATTR_T
+ 8
+
+ )
+
+33 
+ #__SIZEOF_PTHREAD_BARRIER_T
+ 32
+
+ )
+
+34 
+ #__SIZEOF_PTHREAD_BARRIERATTR_T
+ 4
+
+ )
+
+36 
+ #__SIZEOF_PTHREAD_ATTR_T
+ 36
+
+ )
+
+37 
+ #__SIZEOF_PTHREAD_MUTEX_T
+ 24
+
+ )
+
+38 
+ #__SIZEOF_PTHREAD_MUTEXATTR_T
+ 4
+
+ )
+
+39 
+ #__SIZEOF_PTHREAD_COND_T
+ 48
+
+ )
+
+40 
+ #__SIZEOF_PTHREAD_CONDATTR_T
+ 4
+
+ )
+
+41 
+ #__SIZEOF_PTHREAD_RWLOCK_T
+ 32
+
+ )
+
+42 
+ #__SIZEOF_PTHREAD_RWLOCKATTR_T
+ 8
+
+ )
+
+43 
+ #__SIZEOF_PTHREAD_BARRIER_T
+ 20
+
+ )
+
+44 
+ #__SIZEOF_PTHREAD_BARRIERATTR_T
+ 4
+
+ )
+
+50 
+ t±h»ad_t
+;
+
+55 
+ m__size
+[
+__SIZEOF_PTHREAD_ATTR_T
+];
+
+56 
+ m__®ign
+;
+
+57 }
+ t±h»ad_©Œ_t
+;
+
+60 #ià
+__WORDSIZE
+ == 64
+
+61 
+ s__±h»ad_š‹º®_li¡
+
+
+63 
+__±h»ad_š‹º®_li¡
+ *
+ m__´ev
+;
+
+64 
+__±h»ad_š‹º®_li¡
+ *
+ m__Ãxt
+;
+
+65 }
+ t__±h»ad_li¡_t
+;
+
+67 
+ s__±h»ad_š‹º®_¦i¡
+
+
+69 
+__±h»ad_š‹º®_¦i¡
+ *
+ m__Ãxt
+;
+
+70 }
+ t__±h»ad_¦i¡_t
+;
+
+78 
+ s__±h»ad_mu‹x_s
+
+
+80 
+ m__lock
+;
+
+81 
+ m__couÁ
+;
+
+82 
+ m__owÃr
+;
+
+83 #ià
+__WORDSIZE
+ == 64
+
+84 
+ m__nu£rs
+;
+
+88 
+ m__kšd
+;
+
+89 #ià
+__WORDSIZE
+ == 64
+
+90 
+ m__¥šs
+;
+
+91
+__±h»ad_li¡_t
+
+ m__li¡
+;
+
+92 
+ #__PTHREAD_MUTEX_HAVE_PREV
+ 1
+
+ )
+
+94 
+ m__nu£rs
+;
+
+95
+__ex‹nsiÚ__
+ union
+
+97 
+ m__¥šs
+;
+
+98
+__±h»ad_¦i¡_t
+
+ m__li¡
+;
+
+101 }
+ m__d©a
+;
+
+102 
+ m__size
+[
+__SIZEOF_PTHREAD_MUTEX_T
+];
+
+103 
+ m__®ign
+;
+
+104 }
+ t±h»ad_mu‹x_t
+;
+
+108 
+ m__size
+[
+__SIZEOF_PTHREAD_MUTEXATTR_T
+];
+
+109 
+ m__®ign
+;
+
+110 }
+ t±h»ad_mu‹x©Œ_t
+;
+
+119 
+ m__lock
+;
+
+120 
+ m__fu‹x
+;
+
+121
+__ex‹nsiÚ__
+ 
+ m__tÙ®_£q
+;
+
+122
+__ex‹nsiÚ__
+ 
+ m__wakeup_£q
+;
+
+123
+__ex‹nsiÚ__
+ 
+ m__wok’_£q
+;
+
+124 *
+ m__mu‹x
+;
+
+125 
+ m__nwa™”s
+;
+
+126 
+ m__brßdÿ¡_£q
+;
+
+127 }
+ m__d©a
+;
+
+128 
+ m__size
+[
+__SIZEOF_PTHREAD_COND_T
+];
+
+129
+__ex‹nsiÚ__
+ 
+ m__®ign
+;
+
+130 }
+ t±h»ad_cÚd_t
+;
+
+134 
+ m__size
+[
+__SIZEOF_PTHREAD_CONDATTR_T
+];
+
+135 
+ m__®ign
+;
+
+136 }
+ t±h»ad_cÚd©Œ_t
+;
+
+140 
+ t±h»ad_key_t
+;
+
+144 
+ t±h»ad_Úû_t
+;
+
+147 #ià
+defšed
+
+__USE_UNIX98
+ || defšed
+__USE_XOPEN2K
+
+
+152 #ià
+__WORDSIZE
+ == 64
+
+155 
+ m__lock
+;
+
+156 
+ m__Ä_»ad”s
+;
+
+157 
+ m__»ad”s_wakeup
+;
+
+158 
+ m__wr™”_wakeup
+;
+
+159 
+ m__Ä_»ad”s_queued
+;
+
+160 
+ m__Ä_wr™”s_queued
+;
+
+161 
+ m__wr™”
+;
+
+162 
+ m__sh¬ed
+;
+
+163 
+ m__·d1
+;
+
+164 
+ m__·d2
+;
+
+167 
+ m__æags
+;
+
+168 }
+ m__d©a
+;
+
+172 
+ m__lock
+;
+
+173 
+ m__Ä_»ad”s
+;
+
+174 
+ m__»ad”s_wakeup
+;
+
+175 
+ m__wr™”_wakeup
+;
+
+176 
+ m__Ä_»ad”s_queued
+;
+
+177 
+ m__Ä_wr™”s_queued
+;
+
+180 
+ m__æags
+;
+
+181 
+ m__sh¬ed
+;
+
+182 
+ m__·d1
+;
+
+183 
+ m__·d2
+;
+
+184 
+ m__wr™”
+;
+
+185 }
+ m__d©a
+;
+
+187 
+ m__size
+[
+__SIZEOF_PTHREAD_RWLOCK_T
+];
+
+188 
+ m__®ign
+;
+
+189 }
+ t±h»ad_rwlock_t
+;
+
+193 
+ m__size
+[
+__SIZEOF_PTHREAD_RWLOCKATTR_T
+];
+
+194 
+ m__®ign
+;
+
+195 }
+ t±h»ad_rwlock©Œ_t
+;
+
+199 #ifdeà
+__USE_XOPEN2K
+
+
+201 vÞ©ž
+ t±h»ad_¥šlock_t
+;
+
+208 
+ m__size
+[
+__SIZEOF_PTHREAD_BARRIER_T
+];
+
+209 
+ m__®ign
+;
+
+210 }
+ t±h»ad_b¬r›r_t
+;
+
+214 
+ m__size
+[
+__SIZEOF_PTHREAD_BARRIERATTR_T
+];
+
+215 
+ m__®ign
+;
+
+216 }
+ t±h»ad_b¬r›¿‰r_t
+;
+
+220 #ià
+__WORDSIZE
+ == 32
+
+222 
+ #__þ—nup_fù_©Œibu‹
+
+ `__©Œibu‹__
+ ((
+ `__»g·rm__
+ (1)))
+
+ )
+
+ @/usr/include/bits/wchar-ldbl.h
+
+20 #iâdeà
+_WCHAR_H
+
+
+24 #ià
+defšed
+
+__USE_ISOC95
+ || defšed
+__USE_UNIX98
+
+
+25
+__BEGIN_NAMESPACE_C99
+
+
+26
+__LDBL_REDIR_DECL
+ (
+fw´štf
+);
+
+27
+__LDBL_REDIR_DECL
+ (
+w´štf
+);
+
+28
+__LDBL_REDIR_DECL
+ (
+sw´štf
+);
+
+29
+__LDBL_REDIR_DECL
+ (
+vfw´štf
+);
+
+30
+__LDBL_REDIR_DECL
+ (
+vw´štf
+);
+
+31
+__LDBL_REDIR_DECL
+ (
+vsw´štf
+);
+
+32 #ià
+defšed
+
+__USE_ISOC99
+ && !defšed
+__USE_GNU
+ \
+
+33 && !
+defšed
+
+ g__REDIRECT
+ \
+
+34 && (
+defšed
+
+ g__STRICT_ANSI__
+ || defšed
+ g__USE_XOPEN2K
+)
+
+35
+ $__LDBL_REDIR1_DECL
+ (
+fwsÿnf
+,
+__Ædbl___isoc99_fwsÿnf
+)
+
+36
+ $__LDBL_REDIR1_DECL
+ (
+wsÿnf
+,
+__Ædbl___isoc99_wsÿnf
+)
+
+37
+ $__LDBL_REDIR1_DECL
+ (
+swsÿnf
+,
+__Ædbl___isoc99_swsÿnf
+)
+
+39
+ `__LDBL_REDIR_DECL
+ (
+fwsÿnf
+);
+
+40
+ `__LDBL_REDIR_DECL
+ (
+wsÿnf
+);
+
+41
+ `__LDBL_REDIR_DECL
+ (
+swsÿnf
+);
+
+43
+__END_NAMESPACE_C99
+
+
+46 #ifdeà
+__USE_ISOC99
+
+
+47
+__BEGIN_NAMESPACE_C99
+
+
+48
+ `__LDBL_REDIR1_DECL
+ (
+wc¡Þd
+,
+wc¡od
+);
+
+49 #ià!
+defšed
+
+__USE_GNU
+ && !defšed
+__REDIRECT
+ \
+
+50 && (
+defšed
+
+__STRICT_ANSI__
+ || defšed
+__USE_XOPEN2K
+)
+
+51
+ $__LDBL_REDIR1_DECL
+ (
+vfwsÿnf
+,
+__Ædbl___isoc99_vfwsÿnf
+)
+
+52
+ $__LDBL_REDIR1_DECL
+ (
+vwsÿnf
+,
+__Ædbl___isoc99_vwsÿnf
+)
+
+53
+ $__LDBL_REDIR1_DECL
+ (
+vswsÿnf
+,
+__Ædbl___isoc99_vswsÿnf
+)
+
+55
+ `__LDBL_REDIR_DECL
+ (
+vfwsÿnf
+);
+
+56
+ `__LDBL_REDIR_DECL
+ (
+vwsÿnf
+);
+
+57
+ `__LDBL_REDIR_DECL
+ (
+vswsÿnf
+);
+
+59
+__END_NAMESPACE_C99
+
+
+62 #ifdeà
+__USE_GNU
+
+
+63
+ `__LDBL_REDIR1_DECL
+ (
+wc¡Þd_l
+,
+wc¡od_l
+);
+
+66 #ià
+__USE_FORTIFY_LEVEL
+ > 0 &&
+defšed
+
+__ex‹º_®ways_šlše
+
+
+67
+ $__LDBL_REDIR_DECL
+ (
+__sw´štf_chk
+)
+
+68
+ $__LDBL_REDIR_DECL
+ (
+__vsw´štf_chk
+)
+
+69 #ià
+__USE_FORTIFY_LEVEL
+ > 1
+
+70
+ $__LDBL_REDIR_DECL
+ (
+__fw´štf_chk
+)
+
+71
+ $__LDBL_REDIR_DECL
+ (
+__w´štf_chk
+)
+
+72
+ $__LDBL_REDIR_DECL
+ (
+__vfw´štf_chk
+)
+
+73
+ $__LDBL_REDIR_DECL
+ (
+__vw´štf_chk
+)
+
+ @/usr/include/bits/wchar.h
+
+20 #iâdeà
+_BITS_WCHAR_H
+
+
+21 
+ #_BITS_WCHAR_H
+ 1
+
+ )
+
+24 #ifdeà
+__WCHAR_MAX__
+
+
+25 
+ #__WCHAR_MAX
+
+__WCHAR_MAX__
+
+
+ )
+
+27 
+ #__WCHAR_MAX
+ (2147483647)
+
+ )
+
+32 #ifdeà
+__WCHAR_UNSIGNED__
+
+
+33 
+ #__WCHAR_MIN
+
+L
+'\0'
+
+ )
+
+37 #–ià
+L
+'\0' - 1 > 0
+
+38 
+ #__WCHAR_MIN
+
+L
+'\0'
+
+ )
+
+40 
+ #__WCHAR_MIN
+ (-
+__WCHAR_MAX
+ - 1)
+
+ )
+
+ @/usr/include/bits/wchar2.h
+
+20 #iâdeà
+_WCHAR_H
+
+
+25
+wch¬_t
+ *
+ $__wmemýy_chk
+ (
+wch¬_t
+ *
+__»¡riù
+
+__s1
+,
+
+26
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__s2
+,
+size_t
+
+__n
+,
+
+27
+size_t
+
+__ns1
+__THROW
+;
+
+28
+wch¬_t
+ *
+ `__REDIRECT_NTH
+ (
+__wmemýy_®Ÿs
+,
+
+29 (
+wch¬_t
+ *
+__»¡riù
+
+__s1
+,
+
+30
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__s2
+,
+size_t
+
+__n
+),
+
+31
+wmemýy
+);
+
+32
+wch¬_t
+ *
+ `__REDIRECT_NTH
+ (
+__wmemýy_chk_w¬n
+,
+
+33 (
+wch¬_t
+ *
+__»¡riù
+
+__s1
+,
+
+34
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__s2
+,
+size_t
+
+__n
+,
+
+35
+size_t
+
+__ns1
+),
+__wmemýy_chk
+)
+
+36
+ `__w¬Ç‰r
+ ("wmemcpy called with†ength biggerhan size of destination "
+
+39
+__ex‹º_®ways_šlše
+
+wch¬_t
+ *
+
+40
+ `__NTH
+ (
+ $wmemýy
+ (
+wch¬_t
+ *
+__»¡riù
+
+__s1
+,
+__cÚ¡
+ wch¬_ˆ*__»¡riù
+__s2
+,
+
+41
+size_t
+
+__n
+))
+
+43 ià(
+ `__bos0
+ (
+__s1
+è!ð(
+size_t
+) -1)
+
+45 ià(!
+ `__bužtš_cÚ¡ªt_p
+ (
+__n
+))
+
+46 
+ `__wmemýy_chk
+ (
+__s1
+,
+__s2
+,
+__n
+,
+
+47
+ `__bos0
+ (
+__s1
+è/  (
+wch¬_t
+));
+
+49 ià(
+__n
+ >
+ `__bos0
+ (
+__s1
+è/  (
+wch¬_t
+))
+
+50 
+ `__wmemýy_chk_w¬n
+ (
+__s1
+,
+__s2
+,
+__n
+,
+
+51
+ `__bos0
+ (
+__s1
+è/  (
+wch¬_t
+));
+
+53 
+ `__wmemýy_®Ÿs
+ (
+__s1
+,
+__s2
+,
+__n
+);
+
+54
+ }
+}
+
+57
+wch¬_t
+ *
+ $__wmemmove_chk
+ (
+wch¬_t
+ *
+__s1
+,
+__cÚ¡
+ wch¬_ˆ*
+__s2
+,
+
+58
+size_t
+
+__n
+, size_ˆ
+__ns1
+__THROW
+;
+
+59
+wch¬_t
+ *
+ `__REDIRECT_NTH
+ (
+__wmemmove_®Ÿs
+, (wch¬_ˆ*
+__s1
+,
+
+60
+__cÚ¡
+
+wch¬_t
+ *
+__s2
+,
+
+61
+size_t
+
+__n
+),
+wmemmove
+);
+
+62
+wch¬_t
+ *
+ `__REDIRECT_NTH
+ (
+__wmemmove_chk_w¬n
+,
+
+63 (
+wch¬_t
+ *
+__»¡riù
+
+__s1
+,
+
+64
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__s2
+,
+size_t
+
+__n
+,
+
+65
+size_t
+
+__ns1
+),
+__wmemmove_chk
+)
+
+66
+ `__w¬Ç‰r
+ ("wmemmove called with†ength biggerhan size of destination "
+
+69
+__ex‹º_®ways_šlše
+
+wch¬_t
+ *
+
+70
+ `__NTH
+ (
+ $wmemmove
+ (
+wch¬_t
+ *
+__»¡riù
+
+__s1
+,
+__cÚ¡
+ wch¬_ˆ*__»¡riù
+__s2
+,
+
+71
+size_t
+
+__n
+))
+
+73 ià(
+ `__bos0
+ (
+__s1
+è!ð(
+size_t
+) -1)
+
+75 ià(!
+ `__bužtš_cÚ¡ªt_p
+ (
+__n
+))
+
+76 
+ `__wmemmove_chk
+ (
+__s1
+,
+__s2
+,
+__n
+,
+
+77
+ `__bos0
+ (
+__s1
+è/  (
+wch¬_t
+));
+
+79 ià(
+__n
+ >
+ `__bos0
+ (
+__s1
+è/  (
+wch¬_t
+))
+
+80 
+ `__wmemmove_chk_w¬n
+ (
+__s1
+,
+__s2
+,
+__n
+,
+
+81
+ `__bos0
+ (
+__s1
+è/  (
+wch¬_t
+));
+
+83 
+ `__wmemmove_®Ÿs
+ (
+__s1
+,
+__s2
+,
+__n
+);
+
+84
+ }
+}
+
+87 #ifdeà
+__USE_GNU
+
+
+88
+wch¬_t
+ *
+ $__wmempýy_chk
+ (
+wch¬_t
+ *
+__»¡riù
+
+__s1
+,
+
+89
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__s2
+,
+size_t
+
+__n
+,
+
+90
+size_t
+
+__ns1
+__THROW
+;
+
+91
+wch¬_t
+ *
+ `__REDIRECT_NTH
+ (
+__wmempýy_®Ÿs
+,
+
+92 (
+wch¬_t
+ *
+__»¡riù
+
+__s1
+,
+
+93
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__s2
+,
+
+94
+size_t
+
+__n
+),
+wmempýy
+);
+
+95
+wch¬_t
+ *
+ `__REDIRECT_NTH
+ (
+__wmempýy_chk_w¬n
+,
+
+96 (
+wch¬_t
+ *
+__»¡riù
+
+__s1
+,
+
+97
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__s2
+,
+size_t
+
+__n
+,
+
+98
+size_t
+
+__ns1
+),
+__wmempýy_chk
+)
+
+99
+ `__w¬Ç‰r
+ ("wmempcpy called with†ength biggerhan size of destination "
+
+102
+__ex‹º_®ways_šlše
+
+wch¬_t
+ *
+
+103
+ `__NTH
+ (
+ $wmempýy
+ (
+wch¬_t
+ *
+__»¡riù
+
+__s1
+,
+__cÚ¡
+ wch¬_ˆ*__»¡riù
+__s2
+,
+
+104
+size_t
+
+__n
+))
+
+106 ià(
+ `__bos0
+ (
+__s1
+è!ð(
+size_t
+) -1)
+
+108 ià(!
+ `__bužtš_cÚ¡ªt_p
+ (
+__n
+))
+
+109 
+ `__wmempýy_chk
+ (
+__s1
+,
+__s2
+,
+__n
+,
+
+110
+ `__bos0
+ (
+__s1
+è/  (
+wch¬_t
+));
+
+112 ià(
+__n
+ >
+ `__bos0
+ (
+__s1
+è/  (
+wch¬_t
+))
+
+113 
+ `__wmempýy_chk_w¬n
+ (
+__s1
+,
+__s2
+,
+__n
+,
+
+114
+ `__bos0
+ (
+__s1
+è/  (
+wch¬_t
+));
+
+116 
+ `__wmempýy_®Ÿs
+ (
+__s1
+,
+__s2
+,
+__n
+);
+
+117
+ }
+}
+
+121
+wch¬_t
+ *
+ $__wmem£t_chk
+ (
+wch¬_t
+ *
+__s
+, wch¬_ˆ
+__c
+,
+size_t
+
+__n
+,
+
+122
+size_t
+
+__ns
+__THROW
+;
+
+123
+wch¬_t
+ *
+ `__REDIRECT_NTH
+ (
+__wmem£t_®Ÿs
+, (wch¬_ˆ*
+__s
+, wch¬_ˆ
+__c
+,
+
+124
+size_t
+
+__n
+),
+wmem£t
+);
+
+125
+wch¬_t
+ *
+ `__REDIRECT_NTH
+ (
+__wmem£t_chk_w¬n
+,
+
+126 (
+wch¬_t
+ *
+__s
+, wch¬_ˆ
+__c
+,
+size_t
+
+__n
+,
+
+127
+size_t
+
+__ns
+),
+__wmem£t_chk
+)
+
+128
+ `__w¬Ç‰r
+ ("wmemset called with†ength biggerhan size of destination "
+
+131
+__ex‹º_®ways_šlše
+
+wch¬_t
+ *
+
+132
+ `__NTH
+ (
+ $wmem£t
+ (
+wch¬_t
+ *
+__»¡riù
+
+__s
+, wch¬_ˆ
+__c
+,
+size_t
+
+__n
+))
+
+134 ià(
+ `__bos0
+ (
+__s
+è!ð(
+size_t
+) -1)
+
+136 ià(!
+ `__bužtš_cÚ¡ªt_p
+ (
+__n
+))
+
+137 
+ `__wmem£t_chk
+ (
+__s
+,
+__c
+,
+__n
+,
+ `__bos0
+ (__sè/  (
+wch¬_t
+));
+
+139 ià(
+__n
+ >
+ `__bos0
+ (
+__s
+è/  (
+wch¬_t
+))
+
+140 
+ `__wmem£t_chk_w¬n
+ (
+__s
+,
+__c
+,
+__n
+,
+
+141
+ `__bos0
+ (
+__s
+è/  (
+wch¬_t
+));
+
+143 
+ `__wmem£t_®Ÿs
+ (
+__s
+,
+__c
+,
+__n
+);
+
+144
+ }
+}
+
+147
+wch¬_t
+ *
+ $__wcsýy_chk
+ (
+wch¬_t
+ *
+__»¡riù
+
+__de¡
+,
+
+148
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__¤c
+,
+
+149
+size_t
+
+__n
+__THROW
+;
+
+150
+wch¬_t
+ *
+ `__REDIRECT_NTH
+ (
+__wcsýy_®Ÿs
+,
+
+151 (
+wch¬_t
+ *
+__»¡riù
+
+__de¡
+,
+
+152
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__¤c
+),
+wcsýy
+);
+
+154
+__ex‹º_®ways_šlše
+
+wch¬_t
+ *
+
+155
+ `__NTH
+ (
+ $wcsýy
+ (
+wch¬_t
+ *
+__de¡
+,
+__cÚ¡
+ wch¬_ˆ*
+__¤c
+))
+
+157 ià(
+ `__bos
+ (
+__de¡
+è!ð(
+size_t
+) -1)
+
+158 
+ `__wcsýy_chk
+ (
+__de¡
+,
+__¤c
+,
+ `__bos
+ (__de¡è/  (
+wch¬_t
+));
+
+159 
+ `__wcsýy_®Ÿs
+ (
+__de¡
+,
+__¤c
+);
+
+160
+ }
+}
+
+163
+wch¬_t
+ *
+ $__wýýy_chk
+ (
+wch¬_t
+ *
+__de¡
+,
+__cÚ¡
+ wch¬_ˆ*
+__¤c
+,
+
+164
+size_t
+
+__de¡Ën
+__THROW
+;
+
+165
+wch¬_t
+ *
+ `__REDIRECT_NTH
+ (
+__wýýy_®Ÿs
+, (wch¬_ˆ*
+__de¡
+,
+
+166
+__cÚ¡
+
+wch¬_t
+ *
+__¤c
+),
+
+167
+wýýy
+);
+
+169
+__ex‹º_®ways_šlše
+
+wch¬_t
+ *
+
+170
+ `__NTH
+ (
+ $wýýy
+ (
+wch¬_t
+ *
+__de¡
+,
+__cÚ¡
+ wch¬_ˆ*
+__¤c
+))
+
+172 ià(
+ `__bos
+ (
+__de¡
+è!ð(
+size_t
+) -1)
+
+173 
+ `__wýýy_chk
+ (
+__de¡
+,
+__¤c
+,
+ `__bos
+ (__de¡è/  (
+wch¬_t
+));
+
+174 
+ `__wýýy_®Ÿs
+ (
+__de¡
+,
+__¤c
+);
+
+175
+ }
+}
+
+178
+wch¬_t
+ *
+ $__wc¢ýy_chk
+ (
+wch¬_t
+ *
+__»¡riù
+
+__de¡
+,
+
+179
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__¤c
+,
+size_t
+
+__n
+,
+
+180
+size_t
+
+__de¡Ën
+__THROW
+;
+
+181
+wch¬_t
+ *
+ `__REDIRECT_NTH
+ (
+__wc¢ýy_®Ÿs
+,
+
+182 (
+wch¬_t
+ *
+__»¡riù
+
+__de¡
+,
+
+183
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__¤c
+,
+
+184
+size_t
+
+__n
+),
+wc¢ýy
+);
+
+185
+wch¬_t
+ *
+ `__REDIRECT_NTH
+ (
+__wc¢ýy_chk_w¬n
+,
+
+186 (
+wch¬_t
+ *
+__»¡riù
+
+__de¡
+,
+
+187
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__¤c
+,
+
+188
+size_t
+
+__n
+, size_ˆ
+__de¡Ën
+),
+__wc¢ýy_chk
+)
+
+189
+ `__w¬Ç‰r
+ ("wcsncpy called with†ength biggerhan size of destination "
+
+192
+__ex‹º_®ways_šlše
+
+wch¬_t
+ *
+
+193
+ `__NTH
+ (
+ $wc¢ýy
+ (
+wch¬_t
+ *
+__de¡
+,
+__cÚ¡
+ wch¬_ˆ*
+__¤c
+,
+size_t
+
+__n
+))
+
+195 ià(
+ `__bos
+ (
+__de¡
+è!ð(
+size_t
+) -1)
+
+197 ià(!
+ `__bužtš_cÚ¡ªt_p
+ (
+__n
+))
+
+198 
+ `__wc¢ýy_chk
+ (
+__de¡
+,
+__¤c
+,
+__n
+,
+
+199
+ `__bos
+ (
+__de¡
+è/  (
+wch¬_t
+));
+
+200 ià(
+__n
+ >
+ `__bos
+ (
+__de¡
+è/  (
+wch¬_t
+))
+
+201 
+ `__wc¢ýy_chk_w¬n
+ (
+__de¡
+,
+__¤c
+,
+__n
+,
+
+202
+ `__bos
+ (
+__de¡
+è/  (
+wch¬_t
+));
+
+204 
+ `__wc¢ýy_®Ÿs
+ (
+__de¡
+,
+__¤c
+,
+__n
+);
+
+205
+ }
+}
+
+208
+wch¬_t
+ *
+ $__wýnýy_chk
+ (
+wch¬_t
+ *
+__»¡riù
+
+__de¡
+,
+
+209
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__¤c
+,
+size_t
+
+__n
+,
+
+210
+size_t
+
+__de¡Ën
+__THROW
+;
+
+211
+wch¬_t
+ *
+ `__REDIRECT_NTH
+ (
+__wýnýy_®Ÿs
+,
+
+212 (
+wch¬_t
+ *
+__»¡riù
+
+__de¡
+,
+
+213
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__¤c
+,
+
+214
+size_t
+
+__n
+),
+wýnýy
+);
+
+215
+wch¬_t
+ *
+ `__REDIRECT_NTH
+ (
+__wýnýy_chk_w¬n
+,
+
+216 (
+wch¬_t
+ *
+__»¡riù
+
+__de¡
+,
+
+217
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__¤c
+,
+
+218
+size_t
+
+__n
+, size_ˆ
+__de¡Ën
+),
+__wýnýy_chk
+)
+
+219
+ `__w¬Ç‰r
+ ("wcpncpy called with†ength biggerhan size of destination "
+
+222
+__ex‹º_®ways_šlše
+
+wch¬_t
+ *
+
+223
+ `__NTH
+ (
+ $wýnýy
+ (
+wch¬_t
+ *
+__de¡
+,
+__cÚ¡
+ wch¬_ˆ*
+__¤c
+,
+size_t
+
+__n
+))
+
+225 ià(
+ `__bos
+ (
+__de¡
+è!ð(
+size_t
+) -1)
+
+227 ià(!
+ `__bužtš_cÚ¡ªt_p
+ (
+__n
+))
+
+228 
+ `__wýnýy_chk
+ (
+__de¡
+,
+__¤c
+,
+__n
+,
+
+229
+ `__bos
+ (
+__de¡
+è/  (
+wch¬_t
+));
+
+230 ià(
+__n
+ >
+ `__bos
+ (
+__de¡
+è/  (
+wch¬_t
+))
+
+231 
+ `__wýnýy_chk_w¬n
+ (
+__de¡
+,
+__¤c
+,
+__n
+,
+
+232
+ `__bos
+ (
+__de¡
+è/  (
+wch¬_t
+));
+
+234 
+ `__wýnýy_®Ÿs
+ (
+__de¡
+,
+__¤c
+,
+__n
+);
+
+235
+ }
+}
+
+238
+wch¬_t
+ *
+ $__wcsÿt_chk
+ (
+wch¬_t
+ *
+__»¡riù
+
+__de¡
+,
+
+239
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__¤c
+,
+
+240
+size_t
+
+__de¡Ën
+__THROW
+;
+
+241
+wch¬_t
+ *
+ `__REDIRECT_NTH
+ (
+__wcsÿt_®Ÿs
+,
+
+242 (
+wch¬_t
+ *
+__»¡riù
+
+__de¡
+,
+
+243
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__¤c
+),
+wcsÿt
+);
+
+245
+__ex‹º_®ways_šlše
+
+wch¬_t
+ *
+
+246
+ `__NTH
+ (
+ $wcsÿt
+ (
+wch¬_t
+ *
+__de¡
+,
+__cÚ¡
+ wch¬_ˆ*
+__¤c
+))
+
+248 ià(
+ `__bos
+ (
+__de¡
+è!ð(
+size_t
+) -1)
+
+249 
+ `__wcsÿt_chk
+ (
+__de¡
+,
+__¤c
+,
+ `__bos
+ (__de¡è/  (
+wch¬_t
+));
+
+250 
+ `__wcsÿt_®Ÿs
+ (
+__de¡
+,
+__¤c
+);
+
+251
+ }
+}
+
+254
+wch¬_t
+ *
+ $__wc¢ÿt_chk
+ (
+wch¬_t
+ *
+__»¡riù
+
+__de¡
+,
+
+255
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__¤c
+,
+
+256
+size_t
+
+__n
+, size_ˆ
+__de¡Ën
+__THROW
+;
+
+257
+wch¬_t
+ *
+ `__REDIRECT_NTH
+ (
+__wc¢ÿt_®Ÿs
+,
+
+258 (
+wch¬_t
+ *
+__»¡riù
+
+__de¡
+,
+
+259
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__¤c
+,
+
+260
+size_t
+
+__n
+),
+wc¢ÿt
+);
+
+262
+__ex‹º_®ways_šlše
+
+wch¬_t
+ *
+
+263
+ `__NTH
+ (
+ $wc¢ÿt
+ (
+wch¬_t
+ *
+__de¡
+,
+__cÚ¡
+ wch¬_ˆ*
+__¤c
+,
+size_t
+
+__n
+))
+
+265 ià(
+ `__bos
+ (
+__de¡
+è!ð(
+size_t
+) -1)
+
+266 
+ `__wc¢ÿt_chk
+ (
+__de¡
+,
+__¤c
+,
+__n
+,
+
+267
+ `__bos
+ (
+__de¡
+è/  (
+wch¬_t
+));
+
+268 
+ `__wc¢ÿt_®Ÿs
+ (
+__de¡
+,
+__¤c
+,
+__n
+);
+
+269
+ }
+}
+
+272 
+ $__sw´štf_chk
+ (
+wch¬_t
+ *
+__»¡riù
+
+__s
+,
+size_t
+
+__n
+,
+
+273 
+__æag
+,
+size_t
+
+__s_Ën
+,
+
+274
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fÜm©
+, ...)
+
+275
+__THROW
+ ;
+
+277 
+ `__REDIRECT_NTH_LDBL
+ (
+__sw´štf_®Ÿs
+,
+
+278 (
+wch¬_t
+ *
+__»¡riù
+
+__s
+,
+size_t
+
+__n
+,
+
+279
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fmt
+, ...),
+
+280
+sw´štf
+);
+
+282 #ifdeà
+__va_¬g_·ck
+
+
+283
+__ex‹º_®ways_šlše
+ 
+
+284
+ `__NTH
+ (
+ $sw´štf
+ (
+wch¬_t
+ *
+__»¡riù
+
+__s
+,
+size_t
+
+__n
+,
+
+285
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fmt
+, ...))
+
+287 ià(
+ `__bos
+ (
+__s
+è!ð(
+size_t
+è-1 ||
+__USE_FORTIFY_LEVEL
+ > 1)
+
+288 
+ `__sw´štf_chk
+ (
+__s
+,
+__n
+,
+__USE_FORTIFY_LEVEL
+ - 1,
+
+289
+ `__bos
+ (
+__s
+è/  (
+wch¬_t
+),
+
+290
+__fmt
+,
+ `__va_¬g_·ck
+ ());
+
+291 
+ `__sw´štf_®Ÿs
+ (
+__s
+,
+__n
+,
+__fmt
+,
+ `__va_¬g_·ck
+ ());
+
+292
+ }
+}
+
+293 #–ià!
+defšed
+
+__ýlu¥lus
+
+
+295 
+ #sw´štf
+(
+s
+,
+n
+, ...) \
+
+296 (
+ `__bos
+ (
+s
+è!ð(
+size_t
+è-1 ||
+__USE_FORTIFY_LEVEL
+ > 1 \
+
+297 ?
+ `__sw´štf_chk
+ (
+s
+,
+n
+,
+__USE_FORTIFY_LEVEL
+ - 1, \
+
+298
+ `__bos
+ (
+s
+è/  (
+wch¬_t
+),
+__VA_ARGS__
+) \
+
+299 :
+ `sw´štf
+ (
+s
+,
+n
+,
+__VA_ARGS__
+))
+
+ )
+
+302 
+ $__vsw´štf_chk
+ (
+wch¬_t
+ *
+__»¡riù
+
+__s
+,
+size_t
+
+__n
+,
+
+303 
+__æag
+,
+size_t
+
+__s_Ën
+,
+
+304
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fÜm©
+,
+
+305
+__gnuc_va_li¡
+
+__¬g
+)
+
+306
+__THROW
+ ;
+
+308 
+ `__REDIRECT_NTH_LDBL
+ (
+__vsw´štf_®Ÿs
+,
+
+309 (
+wch¬_t
+ *
+__»¡riù
+
+__s
+,
+size_t
+
+__n
+,
+
+310
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fmt
+,
+
+311
+__gnuc_va_li¡
+
+__­
+),
+vsw´štf
+);
+
+313
+__ex‹º_®ways_šlše
+ 
+
+314
+ `__NTH
+ (
+ $vsw´štf
+ (
+wch¬_t
+ *
+__»¡riù
+
+__s
+,
+size_t
+
+__n
+,
+
+315
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fmt
+,
+__gnuc_va_li¡
+
+__­
+))
+
+317 ià(
+ `__bos
+ (
+__s
+è!ð(
+size_t
+è-1 ||
+__USE_FORTIFY_LEVEL
+ > 1)
+
+318 
+ `__vsw´štf_chk
+ (
+__s
+,
+__n
+,
+__USE_FORTIFY_LEVEL
+ - 1,
+
+319
+ `__bos
+ (
+__s
+è/  (
+wch¬_t
+),
+__fmt
+,
+__­
+);
+
+320 
+ `__vsw´štf_®Ÿs
+ (
+__s
+,
+__n
+,
+__fmt
+,
+__­
+);
+
+321
+ }
+}
+
+324 #ià
+__USE_FORTIFY_LEVEL
+ > 1
+
+326 
+__fw´štf_chk
+ (
+__FILE
+ *
+__»¡riù
+
+__¡»am
+, 
+__æag
+,
+
+327
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fÜm©
+, ...);
+
+328 
+__w´štf_chk
+ (
+__æag
+,
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fÜm©
+,
+
+330 
+__vfw´štf_chk
+ (
+__FILE
+ *
+__»¡riù
+
+__¡»am
+, 
+__æag
+,
+
+331
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fÜm©
+,
+
+332
+__gnuc_va_li¡
+
+__­
+);
+
+333 
+__vw´štf_chk
+ (
+__æag
+,
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fÜm©
+,
+
+334
+__gnuc_va_li¡
+
+__­
+);
+
+336 #ifdeà
+__va_¬g_·ck
+
+
+337
+__ex‹º_®ways_šlše
+ 
+
+338
+ $w´štf
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fmt
+, ...)
+
+340 
+ `__w´štf_chk
+ (
+__USE_FORTIFY_LEVEL
+ - 1,
+__fmt
+,
+ `__va_¬g_·ck
+ ());
+
+341
+ }
+}
+
+343
+__ex‹º_®ways_šlše
+ 
+
+344
+ $fw´štf
+ (
+__FILE
+ *
+__»¡riù
+
+__¡»am
+,
+__cÚ¡
+
+wch¬_t
+ *__»¡riù
+__fmt
+, ...)
+
+346 
+ `__fw´štf_chk
+ (
+__¡»am
+,
+__USE_FORTIFY_LEVEL
+ - 1,
+__fmt
+,
+
+347
+ `__va_¬g_·ck
+ ());
+
+348
+ }
+}
+
+349 #–ià!
+defšed
+
+__ýlu¥lus
+
+
+350 
+ #w´štf
+(...) \
+
+351
+ `__w´štf_chk
+ (
+__USE_FORTIFY_LEVEL
+ - 1,
+__VA_ARGS__
+)
+
+ )
+
+352 
+ #fw´štf
+(
+¡»am
+, ...) \
+
+353
+ `__fw´štf_chk
+ (
+¡»am
+,
+__USE_FORTIFY_LEVEL
+ - 1,
+__VA_ARGS__
+)
+
+ )
+
+356
+__ex‹º_®ways_šlše
+ 
+
+357
+ $vw´štf
+ (
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fmt
+,
+__gnuc_va_li¡
+
+__­
+)
+
+359 
+ `__vw´štf_chk
+ (
+__USE_FORTIFY_LEVEL
+ - 1,
+__fmt
+,
+__­
+);
+
+360
+ }
+}
+
+362
+__ex‹º_®ways_šlše
+ 
+
+363
+ $vfw´štf
+ (
+__FILE
+ *
+__»¡riù
+
+__¡»am
+,
+
+364
+__cÚ¡
+
+wch¬_t
+ *
+__»¡riù
+
+__fmt
+,
+__gnuc_va_li¡
+
+__­
+)
+
+366 
+ `__vfw´štf_chk
+ (
+__¡»am
+,
+__USE_FORTIFY_LEVEL
+ - 1,
+__fmt
+,
+__­
+);
+
+367
+ }
+}
+
+371
+wch¬_t
+ *
+ $__fg‘ws_chk
+ (
+wch¬_t
+ *
+__»¡riù
+
+__s
+,
+size_t
+
+__size
+, 
+__n
+,
+
+372
+__FILE
+ *
+__»¡riù
+
+__¡»am
+__wur
+;
+
+373
+wch¬_t
+ *
+ `__REDIRECT
+ (
+__fg‘ws_®Ÿs
+,
+
+374 (
+wch¬_t
+ *
+__»¡riù
+
+__s
+, 
+__n
+,
+
+375
+__FILE
+ *
+__»¡riù
+
+__¡»am
+),
+fg‘ws
+__wur
+;
+
+376
+wch¬_t
+ *
+ `__REDIRECT
+ (
+__fg‘ws_chk_w¬n
+,
+
+377 (
+wch¬_t
+ *
+__»¡riù
+
+__s
+,
+size_t
+
+__size
+, 
+__n
+,
+
+378
+__FILE
+ *
+__»¡riù
+
+__¡»am
+),
+__fg‘ws_chk
+)
+
+379
+__wur
+
+ `__w¬Ç‰r
+ ("fgetws called with bigger sizehan†ength "
+
+382
+__ex‹º_®ways_šlše
+
+__wur
+
+wch¬_t
+ *
+
+383
+ $fg‘ws
+ (
+wch¬_t
+ *
+__»¡riù
+
+__s
+, 
+__n
+,
+__FILE
+ *__»¡riù
+__¡»am
+)
+
+385 ià(
+ `__bos
+ (
+__s
+è!ð(
+size_t
+) -1)
+
+387 ià(!
+ `__bužtš_cÚ¡ªt_p
+ (
+__n
+) || __n <= 0)
+
+388 
+ `__fg‘ws_chk
+ (
+__s
+,
+ `__bos
+ (__sè/  (
+wch¬_t
+),
+
+389
+__n
+,
+__¡»am
+);
+
+391 ià((
+size_t
+__n
+ >
+ `__bos
+ (
+__s
+è/  (
+wch¬_t
+))
+
+392 
+ `__fg‘ws_chk_w¬n
+ (
+__s
+,
+ `__bos
+ (__sè/  (
+wch¬_t
+),
+
+393
+__n
+,
+__¡»am
+);
+
+395 
+ `__fg‘ws_®Ÿs
+ (
+__s
+,
+__n
+,
+__¡»am
+);
+
+396
+ }
+}
+
+398 #ifdeà
+__USE_GNU
+
+
+399
+wch¬_t
+ *
+ $__fg‘ws_uÆocked_chk
+ (
+wch¬_t
+ *
+__»¡riù
+
+__s
+,
+size_t
+
+__size
+,
+
+400 
+__n
+,
+__FILE
+ *
+__»¡riù
+
+__¡»am
+)
+
+401
+__wur
+;
+
+402
+wch¬_t
+ *
+ `__REDIRECT
+ (
+__fg‘ws_uÆocked_®Ÿs
+,
+
+403 (
+wch¬_t
+ *
+__»¡riù
+
+__s
+, 
+__n
+,
+
+404
+__FILE
+ *
+__»¡riù
+
+__¡»am
+),
+fg‘ws_uÆocked
+)
+
+405
+__wur
+;
+
+406
+wch¬_t
+ *
+ `__REDIRECT
+ (
+__fg‘ws_uÆocked_chk_w¬n
+,
+
+407 (
+wch¬_t
+ *
+__»¡riù
+
+__s
+,
+size_t
+
+__size
+, 
+__n
+,
+
+408
+__FILE
+ *
+__»¡riù
+
+__¡»am
+),
+
+409
+__fg‘ws_uÆocked_chk
+)
+
+410
+__wur
+
+ `__w¬Ç‰r
+ ("fgetws_unlocked called with bigger sizehan†ength "
+
+413
+__ex‹º_®ways_šlše
+
+__wur
+
+wch¬_t
+ *
+
+414
+ $fg‘ws_uÆocked
+ (
+wch¬_t
+ *
+__»¡riù
+
+__s
+, 
+__n
+,
+__FILE
+ *__»¡riù
+__¡»am
+)
+
+416 ià(
+ `__bos
+ (
+__s
+è!ð(
+size_t
+) -1)
+
+418 ià(!
+ `__bužtš_cÚ¡ªt_p
+ (
+__n
+) || __n <= 0)
+
+419 
+ `__fg‘ws_uÆocked_chk
+ (
+__s
+,
+ `__bos
+ (__sè/  (
+wch¬_t
+),
+
+420
+__n
+,
+__¡»am
+);
+
+422 ià((
+size_t
+__n
+ >
+ `__bos
+ (
+__s
+è/  (
+wch¬_t
+))
+
+423 
+ `__fg‘ws_uÆocked_chk_w¬n
+ (
+__s
+,
+ `__bos
+ (__sè/  (
+wch¬_t
+),
+
+424
+__n
+,
+__¡»am
+);
+
+426 
+ `__fg‘ws_uÆocked_®Ÿs
+ (
+__s
+,
+__n
+,
+__¡»am
+);
+
+427
+ }
+}
+
+431
+size_t
+
+ $__wütomb_chk
+ (*
+__s
+,
+wch¬_t
+
+__wch¬
+,
+mb¡©e_t
+ *
+__p
+,
+
+432
+size_t
+
+__buæ’
+__THROW
+
+__wur
+;
+
+433
+size_t
+
+ `__REDIRECT_NTH
+ (
+__wütomb_®Ÿs
+,
+
+434 (*
+__»¡riù
+
+__s
+,
+wch¬_t
+
+__wch¬
+,
+
+435
+mb¡©e_t
+ *
+__»¡riù
+
+__ps
+),
+wütomb
+__wur
+;
+
+437
+__ex‹º_®ways_šlše
+
+__wur
+
+size_t
+
+
+438
+ `__NTH
+ (
+ $wütomb
+ (*
+__s
+,
+wch¬_t
+
+__wch¬
+,
+mb¡©e_t
+ *
+__ps
+))
+
+443 
+ #__WCHAR_MB_LEN_MAX
+ 16
+
+ )
+
+444 #ià
+defšed
+
+MB_LEN_MAX
+ && MB_LEN_MAX !ð
+__WCHAR_MB_LEN_MAX
+
+
+447 ià(
+ `__bos
+ (
+__s
+è!ð(
+size_t
+è-1 &&
+__WCHAR_MB_LEN_MAX
+ > __bos (__s))
+
+448 
+ `__wütomb_chk
+ (
+__s
+,
+__wch¬
+,
+__ps
+,
+ `__bos
+ (__s));
+
+449 
+ `__wütomb_®Ÿs
+ (
+__s
+,
+__wch¬
+,
+__ps
+);
+
+450
+ }
+}
+
+453
+size_t
+
+ $__mb¤towcs_chk
+ (
+wch¬_t
+ *
+__»¡riù
+
+__d¡
+,
+
+454
+__cÚ¡
+ **
+__»¡riù
+
+__¤c
+,
+
+455
+size_t
+
+__Ën
+,
+mb¡©e_t
+ *
+__»¡riù
+
+__ps
+,
+
+456
+size_t
+
+__d¡Ën
+__THROW
+;
+
+457
+size_t
+
+ `__REDIRECT_NTH
+ (
+__mb¤towcs_®Ÿs
+,
+
+458 (
+wch¬_t
+ *
+__»¡riù
+
+__d¡
+,
+
+459
+__cÚ¡
+ **
+__»¡riù
+
+__¤c
+,
+
+460
+size_t
+
+__Ën
+,
+mb¡©e_t
+ *
+__»¡riù
+
+__ps
+),
+
+461
+mb¤towcs
+);
+
+462
+size_t
+
+ `__REDIRECT_NTH
+ (
+__mb¤towcs_chk_w¬n
+,
+
+463 (
+wch¬_t
+ *
+__»¡riù
+
+__d¡
+,
+
+464
+__cÚ¡
+ **
+__»¡riù
+
+__¤c
+,
+
+465
+size_t
+
+__Ën
+,
+mb¡©e_t
+ *
+__»¡riù
+
+__ps
+,
+
+466
+size_t
+
+__d¡Ën
+),
+__mb¤towcs_chk
+)
+
+467
+ `__w¬Ç‰r
+ ("mbsrtowcs called with dst buffer smallerhan†en "
+
+470
+__ex‹º_®ways_šlše
+
+size_t
+
+
+471
+ `__NTH
+ (
+ $mb¤towcs
+ (
+wch¬_t
+ *
+__»¡riù
+
+__d¡
+,
+__cÚ¡
+ **__»¡riù
+__¤c
+,
+
+472
+size_t
+
+__Ën
+,
+mb¡©e_t
+ *
+__»¡riù
+
+__ps
+))
+
+474 ià(
+ `__bos
+ (
+__d¡
+è!ð(
+size_t
+) -1)
+
+476 ià(!
+ `__bužtš_cÚ¡ªt_p
+ (
+__Ën
+))
+
+477 
+ `__mb¤towcs_chk
+ (
+__d¡
+,
+__¤c
+,
+__Ën
+,
+__ps
+,
+
+478
+ `__bos
+ (
+__d¡
+è/  (
+wch¬_t
+));
+
+480 ià(
+__Ën
+ >
+ `__bos
+ (
+__d¡
+è/  (
+wch¬_t
+))
+
+481 
+ `__mb¤towcs_chk_w¬n
+ (
+__d¡
+,
+__¤c
+,
+__Ën
+,
+__ps
+,
+
+482
+ `__bos
+ (
+__d¡
+è/  (
+wch¬_t
+));
+
+484 
+ `__mb¤towcs_®Ÿs
+ (
+__d¡
+,
+__¤c
+,
+__Ën
+,
+__ps
+);
+
+485
+ }
+}
+
+488
+size_t
+
+ $__wc¤tombs_chk
+ (*
+__»¡riù
+
+__d¡
+,
+
+489
+__cÚ¡
+
+wch¬_t
+ **
+__»¡riù
+
+__¤c
+,
+
+490
+size_t
+
+__Ën
+,
+mb¡©e_t
+ *
+__»¡riù
+
+__ps
+,
+
+491
+size_t
+
+__d¡Ën
+__THROW
+;
+
+492
+size_t
+
+ `__REDIRECT_NTH
+ (
+__wc¤tombs_®Ÿs
+,
+
+493 (*
+__»¡riù
+
+__d¡
+,
+
+494
+__cÚ¡
+
+wch¬_t
+ **
+__»¡riù
+
+__¤c
+,
+
+495
+size_t
+
+__Ën
+,
+mb¡©e_t
+ *
+__»¡riù
+
+__ps
+),
+
+496
+wc¤tombs
+);
+
+497
+size_t
+
+ `__REDIRECT_NTH
+ (
+__wc¤tombs_chk_w¬n
+,
+
+498 (*
+__»¡riù
+
+__d¡
+,
+
+499
+__cÚ¡
+
+wch¬_t
+ **
+__»¡riù
+
+__¤c
+,
+
+500
+size_t
+
+__Ën
+,
+mb¡©e_t
+ *
+__»¡riù
+
+__ps
+,
+
+501
+size_t
+
+__d¡Ën
+),
+__wc¤tombs_chk
+)
+
+502
+ `__w¬Ç‰r
+ ("wcsrtombs called with dst buffer smallerhan†en");
+
+504
+__ex‹º_®ways_šlše
+
+size_t
+
+
+505
+ `__NTH
+ (
+ $wc¤tombs
+ (*
+__»¡riù
+
+__d¡
+,
+__cÚ¡
+
+wch¬_t
+ **__»¡riù
+__¤c
+,
+
+506
+size_t
+
+__Ën
+,
+mb¡©e_t
+ *
+__»¡riù
+
+__ps
+))
+
+508 ià(
+ `__bos
+ (
+__d¡
+è!ð(
+size_t
+) -1)
+
+510 ià(!
+ `__bužtš_cÚ¡ªt_p
+ (
+__Ën
+))
+
+511 
+ `__wc¤tombs_chk
+ (
+__d¡
+,
+__¤c
+,
+__Ën
+,
+__ps
+,
+ `__bos
+ (__dst));
+
+513 ià(
+__Ën
+ >
+ `__bos
+ (
+__d¡
+))
+
+514 
+ `__wc¤tombs_chk_w¬n
+ (
+__d¡
+,
+__¤c
+,
+__Ën
+,
+__ps
+,
+ `__bos
+ (__dst));
+
+516 
+ `__wc¤tombs_®Ÿs
+ (
+__d¡
+,
+__¤c
+,
+__Ën
+,
+__ps
+);
+
+517
+ }
+}
+
+520 #ifdeà
+__USE_GNU
+
+
+521
+size_t
+
+ $__mb¢¹owcs_chk
+ (
+wch¬_t
+ *
+__»¡riù
+
+__d¡
+,
+
+522
+__cÚ¡
+ **
+__»¡riù
+
+__¤c
+,
+size_t
+
+__nmc
+,
+
+523
+size_t
+
+__Ën
+,
+mb¡©e_t
+ *
+__»¡riù
+
+__ps
+,
+
+524
+size_t
+
+__d¡Ën
+__THROW
+;
+
+525
+size_t
+
+ `__REDIRECT_NTH
+ (
+__mb¢¹owcs_®Ÿs
+,
+
+526 (
+wch¬_t
+ *
+__»¡riù
+
+__d¡
+,
+
+527
+__cÚ¡
+ **
+__»¡riù
+
+__¤c
+,
+size_t
+
+__nmc
+,
+
+528
+size_t
+
+__Ën
+,
+mb¡©e_t
+ *
+__»¡riù
+
+__ps
+),
+
+529
+mb¢¹owcs
+);
+
+530
+size_t
+
+ `__REDIRECT_NTH
+ (
+__mb¢¹owcs_chk_w¬n
+,
+
+531 (
+wch¬_t
+ *
+__»¡riù
+
+__d¡
+,
+
+532
+__cÚ¡
+ **
+__»¡riù
+
+__¤c
+,
+size_t
+
+__nmc
+,
+
+533
+size_t
+
+__Ën
+,
+mb¡©e_t
+ *
+__»¡riù
+
+__ps
+,
+
+534
+size_t
+
+__d¡Ën
+),
+__mb¢¹owcs_chk
+)
+
+535
+ `__w¬Ç‰r
+ ("mbsnrtowcs called with dst buffer smallerhan†en "
+
+538
+__ex‹º_®ways_šlše
+
+size_t
+
+
+539
+ `__NTH
+ (
+ $mb¢¹owcs
+ (
+wch¬_t
+ *
+__»¡riù
+
+__d¡
+,
+__cÚ¡
+ **__»¡riù
+__¤c
+,
+
+540
+size_t
+
+__nmc
+, size_ˆ
+__Ën
+,
+mb¡©e_t
+ *
+__»¡riù
+
+__ps
+))
+
+542 ià(
+ `__bos
+ (
+__d¡
+è!ð(
+size_t
+) -1)
+
+544 ià(!
+ `__bužtš_cÚ¡ªt_p
+ (
+__Ën
+))
+
+545 
+ `__mb¢¹owcs_chk
+ (
+__d¡
+,
+__¤c
+,
+__nmc
+,
+__Ën
+,
+__ps
+,
+
+546
+ `__bos
+ (
+__d¡
+è/  (
+wch¬_t
+));
+
+548 ià(
+__Ën
+ >
+ `__bos
+ (
+__d¡
+è/  (
+wch¬_t
+))
+
+549 
+ `__mb¢¹owcs_chk_w¬n
+ (
+__d¡
+,
+__¤c
+,
+__nmc
+,
+__Ën
+,
+__ps
+,
+
+550
+ `__bos
+ (
+__d¡
+è/  (
+wch¬_t
+));
+
+552 
+ `__mb¢¹owcs_®Ÿs
+ (
+__d¡
+,
+__¤c
+,
+__nmc
+,
+__Ën
+,
+__ps
+);
+
+553
+ }
+}
+
+556
+size_t
+
+ $__wc¢¹ombs_chk
+ (*
+__»¡riù
+
+__d¡
+,
+
+557
+__cÚ¡
+
+wch¬_t
+ **
+__»¡riù
+
+__¤c
+,
+
+558
+size_t
+
+__nwc
+, size_ˆ
+__Ën
+,
+
+559
+mb¡©e_t
+ *
+__»¡riù
+
+__ps
+,
+size_t
+
+__d¡Ën
+)
+
+560
+__THROW
+;
+
+561
+size_t
+
+ `__REDIRECT_NTH
+ (
+__wc¢¹ombs_®Ÿs
+,
+
+562 (*
+__»¡riù
+
+__d¡
+,
+
+563
+__cÚ¡
+
+wch¬_t
+ **
+__»¡riù
+
+__¤c
+,
+
+564
+size_t
+
+__nwc
+, size_ˆ
+__Ën
+,
+
+565
+mb¡©e_t
+ *
+__»¡riù
+
+__ps
+),
+wc¢¹ombs
+);
+
+566
+size_t
+
+ `__REDIRECT_NTH
+ (
+__wc¢¹ombs_chk_w¬n
+,
+
+567 (*
+__»¡riù
+
+__d¡
+,
+
+568
+__cÚ¡
+
+wch¬_t
+ **
+__»¡riù
+
+__¤c
+,
+
+569
+size_t
+
+__nwc
+, size_ˆ
+__Ën
+,
+
+570
+mb¡©e_t
+ *
+__»¡riù
+
+__ps
+,
+
+571
+size_t
+
+__d¡Ën
+),
+__wc¢¹ombs_chk
+)
+
+572
+ `__w¬Ç‰r
+ ("wcsnrtombs called with dst buffer smallerhan†en");
+
+574
+__ex‹º_®ways_šlše
+
+size_t
+
+
+575
+ `__NTH
+ (
+ $wc¢¹ombs
+ (*
+__»¡riù
+
+__d¡
+,
+__cÚ¡
+
+wch¬_t
+ **__»¡riù
+__¤c
+,
+
+576
+size_t
+
+__nwc
+, size_ˆ
+__Ën
+,
+mb¡©e_t
+ *
+__»¡riù
+
+__ps
+))
+
+578 ià(
+ `__bos
+ (
+__d¡
+è!ð(
+size_t
+) -1)
+
+580 ià(!
+ `__bužtš_cÚ¡ªt_p
+ (
+__Ën
+))
+
+581 
+ `__wc¢¹ombs_chk
+ (
+__d¡
+,
+__¤c
+,
+__nwc
+,
+__Ën
+,
+__ps
+,
+
+582
+ `__bos
+ (
+__d¡
+));
+
+584 ià(
+__Ën
+ >
+ `__bos
+ (
+__d¡
+))
+
+585 
+ `__wc¢¹ombs_chk_w¬n
+ (
+__d¡
+,
+__¤c
+,
+__nwc
+,
+__Ën
+,
+__ps
+,
+
+586
+ `__bos
+ (
+__d¡
+));
+
+588 
+ `__wc¢¹ombs_®Ÿs
+ (
+__d¡
+,
+__¤c
+,
+__nwc
+,
+__Ën
+,
+__ps
+);
+
+589
+ }
+}
+
+ @/usr/include/errno.h
+
+23 #iâdef
+_ERRNO_H
+
+
+27 #iâdef
+__Ãed_Em©h
+
+
+28 
+ #_ERRNO_H
+ 1
+
+ )
+
+29 
+ ~<ã©u»s.h
+>
+
+32
+ g__BEGIN_DECLS
+
+
+36 
+ ~<b™s/”ºo.h
+>
+
+37 #undeà
+__Ãed_Em©h
+
+
+39 #ifdef
+_ERRNO_H
+
+
+46 #iâdef
+Ӽo
+
+
+47 
+Ӽo
+;
+
+50 #ifdeà
+__USE_GNU
+
+
+55 *
+´og¿m_švoÿtiÚ_Çme
+, *
+´og¿m_švoÿtiÚ_shÜt_Çme
+;
+
+59
+ g__END_DECLS
+
+
+67 #ià
+defšed
+
+__USE_GNU
+ || defšed
+__Ãed_”rÜ_t
+
+
+68 #iâdeà
+__”rÜ_t_defšed
+
+
+69 
+ t”rÜ_t
+;
+
+70 
+ #__”rÜ_t_defšed
+ 1
+
+ )
+
+72 #undeà
+__Ãed_”rÜ_t
+
+
+ @/usr/include/gnu/option-groups.h
+
+10 #iâdeà
+__GNU_OPTION_GROUPS_H
+
+
+11 
+ #__GNU_OPTION_GROUPS_H
+
+
+ )
+
+13 
+ #__OPTION_EGLIBC_ADVANCED_INET6
+ 1
+
+ )
+
+14 
+ #__OPTION_EGLIBC_BACKTRACE
+ 1
+
+ )
+
+15 
+ #__OPTION_EGLIBC_BIG_MACROS
+ 1
+
+ )
+
+16 
+ #__OPTION_EGLIBC_BSD
+ 1
+
+ )
+
+17 
+ #__OPTION_EGLIBC_CATGETS
+ 1
+
+ )
+
+18 
+ #__OPTION_EGLIBC_CHARSETS
+ 1
+
+ )
+
+19 
+ #__OPTION_EGLIBC_CXX_TESTS
+ 1
+
+ )
+
+20 
+ #__OPTION_EGLIBC_DB_ALIASES
+ 1
+
+ )
+
+21 
+ #__OPTION_EGLIBC_ENVZ
+ 1
+
+ )
+
+22 
+ #__OPTION_EGLIBC_FCVT
+ 1
+
+ )
+
+23 
+ #__OPTION_EGLIBC_FMTMSG
+ 1
+
+ )
+
+24 
+ #__OPTION_EGLIBC_FSTAB
+ 1
+
+ )
+
+25 
+ #__OPTION_EGLIBC_FTRAVERSE
+ 1
+
+ )
+
+26 
+ #__OPTION_EGLIBC_GETLOGIN
+ 1
+
+ )
+
+27 
+ #__OPTION_EGLIBC_INET
+ 1
+
+ )
+
+28 
+ #__OPTION_EGLIBC_LIBM
+ 1
+
+ )
+
+29 
+ #__OPTION_EGLIBC_LOCALES
+ 1
+
+ )
+
+30 
+ #__OPTION_EGLIBC_LOCALE_CODE
+ 1
+
+ )
+
+31 
+ #__OPTION_EGLIBC_MEMUSAGE
+ 1
+
+ )
+
+32 
+ #__OPTION_EGLIBC_NIS
+ 1
+
+ )
+
+33 
+ #__OPTION_EGLIBC_NSSWITCH
+ 1
+
+ )
+
+34 
+ #__OPTION_EGLIBC_RCMD
+ 1
+
+ )
+
+35 
+ #__OPTION_EGLIBC_SPAWN
+ 1
+
+ )
+
+36 
+ #__OPTION_EGLIBC_STREAMS
+ 1
+
+ )
+
+37 
+ #__OPTION_EGLIBC_SUNRPC
+ 1
+
+ )
+
+38 
+ #__OPTION_EGLIBC_UTMP
+ 1
+
+ )
+
+39 
+ #__OPTION_EGLIBC_UTMPX
+ 1
+
+ )
+
+40 
+ #__OPTION_EGLIBC_WORDEXP
+ 1
+
+ )
+
+41 
+ #__OPTION_POSIX_C_LANG_WIDE_CHAR
+ 1
+
+ )
+
+42 
+ #__OPTION_POSIX_REGEXP
+ 1
+
+ )
+
+43 
+ #__OPTION_POSIX_REGEXP_GLIBC
+ 1
+
+ )
+
+44 
+ #__OPTION_POSIX_WIDE_CHAR_DEVICE_IO
+ 1
+
+ )
+
+ @/usr/include/pthread.h
+
+20 #iâdeà
+_PTHREAD_H
+
+
+21 
+ #_PTHREAD_H
+ 1
+
+ )
+
+23 
+ ~<ã©u»s.h
+>
+
+24 
+ ~<’dŸn.h
+>
+
+25 
+ ~<sched.h
+>
+
+26 
+ ~<time.h
+>
+
+28 
+ #__Ãed_sig£t_t
+
+
+ )
+
+29 
+ ~<sigÇl.h
+>
+
+30 
+ ~<b™s/±h»adty³s.h
+>
+
+31 
+ ~<b™s/£tjmp.h
+>
+
+32 
+ ~<b™s/wÜdsize.h
+>
+
+38
+ mPTHREAD_CREATE_JOINABLE
+,
+
+39 
+ #PTHREAD_CREATE_JOINABLE
+
+PTHREAD_CREATE_JOINABLE
+
+
+ )
+
+40
+ mPTHREAD_CREATE_DETACHED
+
+
+41 
+ #PTHREAD_CREATE_DETACHED
+
+PTHREAD_CREATE_DETACHED
+
+
+ )
+
+48
+ mPTHREAD_MUTEX_TIMED_NP
+,
+
+49
+ mPTHREAD_MUTEX_RECURSIVE_NP
+,
+
+50
+ mPTHREAD_MUTEX_ERRORCHECK_NP
+,
+
+51
+ mPTHREAD_MUTEX_ADAPTIVE_NP
+
+
+52 #ifdeà
+__USE_UNIX98
+
+
+54
+ mPTHREAD_MUTEX_NORMAL
+ =
+PTHREAD_MUTEX_TIMED_NP
+,
+
+55
+ mPTHREAD_MUTEX_RECURSIVE
+ =
+PTHREAD_MUTEX_RECURSIVE_NP
+,
+
+56
+ mPTHREAD_MUTEX_ERRORCHECK
+ =
+PTHREAD_MUTEX_ERRORCHECK_NP
+,
+
+57
+ mPTHREAD_MUTEX_DEFAULT
+ =
+PTHREAD_MUTEX_NORMAL
+
+
+59 #ifdeà
+__USE_GNU
+
+
+61 ,
+ mPTHREAD_MUTEX_FAST_NP
+ =
+PTHREAD_MUTEX_TIMED_NP
+
+
+66 #ifdeà
+__USE_XOPEN2K
+
+
+70
+ mPTHREAD_MUTEX_STALLED
+,
+
+71
+ mPTHREAD_MUTEX_STALLED_NP
+ =
+PTHREAD_MUTEX_STALLED
+,
+
+72
+ mPTHREAD_MUTEX_ROBUST
+,
+
+73
+ mPTHREAD_MUTEX_ROBUST_NP
+ =
+PTHREAD_MUTEX_ROBUST
+
+
+78 #ifdeà
+__USE_UNIX98
+
+
+82
+ mPTHREAD_PRIO_NONE
+,
+
+83
+ mPTHREAD_PRIO_INHERIT
+,
+
+84
+ mPTHREAD_PRIO_PROTECT
+
+
+90 #ià
+__WORDSIZE
+ == 64
+
+91 
+ #PTHREAD_MUTEX_INITIALIZER
+ \
+
+92 { { 0, 0, 0, 0, 0, 0, { 0, 0 } } }
+
+ )
+
+93 #ifdeà
+__USE_GNU
+
+
+94 
+ #PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
+ \
+
+95 { { 0, 0, 0, 0,
+PTHREAD_MUTEX_RECURSIVE_NP
+, 0, { 0, 0 } } }
+
+ )
+
+96 
+ #PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP
+ \
+
+97 { { 0, 0, 0, 0,
+PTHREAD_MUTEX_ERRORCHECK_NP
+, 0, { 0, 0 } } }
+
+ )
+
+98 
+ #PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP
+ \
+
+99 { { 0, 0, 0, 0,
+PTHREAD_MUTEX_ADAPTIVE_NP
+, 0, { 0, 0 } } }
+
+ )
+
+102 
+ #PTHREAD_MUTEX_INITIALIZER
+ \
+
+103 { { 0, 0, 0, 0, 0, { 0 } } }
+
+ )
+
+104 #ifdeà
+__USE_GNU
+
+
+105 
+ #PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
+ \
+
+106 { { 0, 0, 0,
+PTHREAD_MUTEX_RECURSIVE_NP
+, 0, { 0 } } }
+
+ )
+
+107 
+ #PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP
+ \
+
+108 { { 0, 0, 0,
+PTHREAD_MUTEX_ERRORCHECK_NP
+, 0, { 0 } } }
+
+ )
+
+109 
+ #PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP
+ \
+
+110 { { 0, 0, 0,
+PTHREAD_MUTEX_ADAPTIVE_NP
+, 0, { 0 } } }
+
+ )
+
+116 #ià
+defšed
+
+__USE_UNIX98
+ || defšed
+__USE_XOPEN2K
+
+
+119
+ mPTHREAD_RWLOCK_PREFER_READER_NP
+,
+
+120
+ mPTHREAD_RWLOCK_PREFER_WRITER_NP
+,
+
+121
+ mPTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP
+,
+
+122
+ mPTHREAD_RWLOCK_DEFAULT_NP
+ =
+PTHREAD_RWLOCK_PREFER_READER_NP
+
+
+126 
+ #PTHREAD_RWLOCK_INITIALIZER
+ \
+
+127 { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
+
+ )
+
+128 #ifdeà
+__USE_GNU
+
+
+129 #ià
+__WORDSIZE
+ == 64
+
+130 
+ #PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP
+ \
+
+132
+PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP
+ } }
+
+ )
+
+134 #ià
+__BYTE_ORDER
+ =ð
+__LITTLE_ENDIAN
+
+
+135 
+ #PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP
+ \
+
+136 { { 0, 0, 0, 0, 0, 0,
+PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP
+, \
+
+137 0, 0, 0, 0 } }
+
+ )
+
+139 
+ #PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP
+ \
+
+140 { { 0, 0, 0, 0, 0, 0, 0, 0, 0,
+PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP
+,\
+
+141 0 } }
+
+ )
+
+151
+ mPTHREAD_INHERIT_SCHED
+,
+
+152 
+ #PTHREAD_INHERIT_SCHED
+
+PTHREAD_INHERIT_SCHED
+
+
+ )
+
+153
+ mPTHREAD_EXPLICIT_SCHED
+
+
+154 
+ #PTHREAD_EXPLICIT_SCHED
+
+PTHREAD_EXPLICIT_SCHED
+
+
+ )
+
+161
+ mPTHREAD_SCOPE_SYSTEM
+,
+
+162 
+ #PTHREAD_SCOPE_SYSTEM
+
+PTHREAD_SCOPE_SYSTEM
+
+
+ )
+
+163
+ mPTHREAD_SCOPE_PROCESS
+
+
+164 
+ #PTHREAD_SCOPE_PROCESS
+
+PTHREAD_SCOPE_PROCESS
+
+
+ )
+
+171
+ mPTHREAD_PROCESS_PRIVATE
+,
+
+172 
+ #PTHREAD_PROCESS_PRIVATE
+
+PTHREAD_PROCESS_PRIVATE
+
+
+ )
+
+173
+ mPTHREAD_PROCESS_SHARED
+
+
+174 
+ #PTHREAD_PROCESS_SHARED
+
+PTHREAD_PROCESS_SHARED
+
+
+ )
+
+180 
+ #PTHREAD_COND_INITIALIZER
+ { { 0, 0, 0, 0, 0, (*è0, 0, 0 } }
+
+ )
+
+184 
+ s_±h»ad_þ—nup_bufãr
+
+
+186 (*
+ m__routše
+) (*);
+
+187 *
+ m__¬g
+;
+
+188 
+ m__ÿnûÉy³
+;
+
+189 
+_±h»ad_þ—nup_bufãr
+ *
+ m__´ev
+;
+
+195
+ mPTHREAD_CANCEL_ENABLE
+,
+
+196 
+ #PTHREAD_CANCEL_ENABLE
+
+PTHREAD_CANCEL_ENABLE
+
+
+ )
+
+197
+ mPTHREAD_CANCEL_DISABLE
+
+
+198 
+ #PTHREAD_CANCEL_DISABLE
+
+PTHREAD_CANCEL_DISABLE
+
+
+ )
+
+202
+ mPTHREAD_CANCEL_DEFERRED
+,
+
+203 
+ #PTHREAD_CANCEL_DEFERRED
+
+PTHREAD_CANCEL_DEFERRED
+
+
+ )
+
+204
+ mPTHREAD_CANCEL_ASYNCHRONOUS
+
+
+205 
+ #PTHREAD_CANCEL_ASYNCHRONOUS
+
+PTHREAD_CANCEL_ASYNCHRONOUS
+
+
+ )
+
+207 
+ #PTHREAD_CANCELED
+ ((*è-1)
+
+ )
+
+211 
+ #PTHREAD_ONCE_INIT
+ 0
+
+ )
+
+214 #ifdeà
+__USE_XOPEN2K
+
+
+218 
+ #PTHREAD_BARRIER_SERIAL_THREAD
+ -1
+
+ )
+
+222
+__BEGIN_DECLS
+
+
+227 
+±h»ad_ü—‹
+ (
+±h»ad_t
+ *
+__»¡riù
+
+__Ãwth»ad
+,
+
+228
+__cÚ¡
+
+±h»ad_©Œ_t
+ *
+__»¡riù
+
+__©Œ
+,
+
+229 *(*
+__¡¬t_routše
+) (*),
+
+230 *
+__»¡riù
+
+__¬g
+__THROW
+
+__nÚnuÎ
+ ((1, 3));
+
+236 
+ $±h»ad_ex™
+ (*
+__»tv®
+ `__©Œibu‹__
+ ((
+__nÜ‘uº__
+));
+
+244 
+ `±h»ad_još
+ (
+±h»ad_t
+
+__th
+, **
+__th»ad_»tuº
+);
+
+246 #ifdeà
+__USE_GNU
+
+
+249 
+ $±h»ad_Œyjoš_Å
+ (
+±h»ad_t
+
+__th
+, **
+__th»ad_»tuº
+__THROW
+;
+
+257 
+ `±h»ad_timedjoš_Å
+ (
+±h»ad_t
+
+__th
+, **
+__th»ad_»tuº
+,
+
+258
+__cÚ¡
+ 
+time¥ec
+ *
+__ab¡ime
+);
+
+265 
+ $±h»ad_d‘ach
+ (
+±h»ad_t
+
+__th
+__THROW
+;
+
+269
+±h»ad_t
+
+ $±h»ad_£lf
+ (è
+__THROW
+
+ `__©Œibu‹__
+ ((
+__cÚ¡__
+));
+
+272 
+ $±h»ad_equ®
+ (
+±h»ad_t
+
+__th»ad1
+,…th»ad_ˆ
+__th»ad2
+__THROW
+;
+
+280 
+ $±h»ad_©Œ_š™
+ (
+±h»ad_©Œ_t
+ *
+__©Œ
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+283 
+ $±h»ad_©Œ_de¡roy
+ (
+±h»ad_©Œ_t
+ *
+__©Œ
+)
+
+284
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+287 
+ $±h»ad_©Œ_g‘d‘ach¡©e
+ (
+__cÚ¡
+
+±h»ad_©Œ_t
+ *
+__©Œ
+,
+
+288 *
+__d‘ach¡©e
+)
+
+289
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+292 
+ $±h»ad_©Œ_£td‘ach¡©e
+ (
+±h»ad_©Œ_t
+ *
+__©Œ
+,
+
+293 
+__d‘ach¡©e
+)
+
+294
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+298 
+ $±h»ad_©Œ_g‘gu¬dsize
+ (
+__cÚ¡
+
+±h»ad_©Œ_t
+ *
+__©Œ
+,
+
+299
+size_t
+ *
+__gu¬dsize
+)
+
+300
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+303 
+ $±h»ad_©Œ_£tgu¬dsize
+ (
+±h»ad_©Œ_t
+ *
+__©Œ
+,
+
+304
+size_t
+
+__gu¬dsize
+)
+
+305
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+309 
+ $±h»ad_©Œ_g‘sched·¿m
+ (
+__cÚ¡
+
+±h»ad_©Œ_t
+ *
+__»¡riù
+
+
+310
+__©Œ
+,
+
+311 
+sched_·¿m
+ *
+__»¡riù
+
+__·¿m
+)
+
+312
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+315 
+ $±h»ad_©Œ_£tsched·¿m
+ (
+±h»ad_©Œ_t
+ *
+__»¡riù
+
+__©Œ
+,
+
+316
+__cÚ¡
+ 
+sched_·¿m
+ *
+__»¡riù
+
+
+317
+__·¿m
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+320 
+ $±h»ad_©Œ_g‘schedpÞicy
+ (
+__cÚ¡
+
+±h»ad_©Œ_t
+ *
+__»¡riù
+
+
+321
+__©Œ
+, *
+__»¡riù
+
+__pÞicy
+)
+
+322
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+325 
+ $±h»ad_©Œ_£tschedpÞicy
+ (
+±h»ad_©Œ_t
+ *
+__©Œ
+, 
+__pÞicy
+)
+
+326
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+329 
+ $±h»ad_©Œ_g‘šh”™sched
+ (
+__cÚ¡
+
+±h»ad_©Œ_t
+ *
+__»¡riù
+
+
+330
+__©Œ
+, *
+__»¡riù
+
+__šh”™
+)
+
+331
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+334 
+ $±h»ad_©Œ_£tšh”™sched
+ (
+±h»ad_©Œ_t
+ *
+__©Œ
+,
+
+335 
+__šh”™
+)
+
+336
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+340 
+ $±h»ad_©Œ_g‘scÝe
+ (
+__cÚ¡
+
+±h»ad_©Œ_t
+ *
+__»¡riù
+
+__©Œ
+,
+
+341 *
+__»¡riù
+
+__scÝe
+)
+
+342
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+345 
+ $±h»ad_©Œ_£tscÝe
+ (
+±h»ad_©Œ_t
+ *
+__©Œ
+, 
+__scÝe
+)
+
+346
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+349 
+ $±h»ad_©Œ_g‘¡ackaddr
+ (
+__cÚ¡
+
+±h»ad_©Œ_t
+ *
+__»¡riù
+
+
+350
+__©Œ
+, **
+__»¡riù
+
+__¡ackaddr
+)
+
+351
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2)è
+__©Œibu‹_d•»ÿ‹d__
+;
+
+357 
+ $±h»ad_©Œ_£t¡ackaddr
+ (
+±h»ad_©Œ_t
+ *
+__©Œ
+,
+
+358 *
+__¡ackaddr
+)
+
+359
+__THROW
+
+ `__nÚnuÎ
+ ((1)è
+__©Œibu‹_d•»ÿ‹d__
+;
+
+362 
+ $±h»ad_©Œ_g‘¡acksize
+ (
+__cÚ¡
+
+±h»ad_©Œ_t
+ *
+__»¡riù
+
+
+363
+__©Œ
+,
+size_t
+ *
+__»¡riù
+
+__¡acksize
+)
+
+364
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+369 
+ $±h»ad_©Œ_£t¡acksize
+ (
+±h»ad_©Œ_t
+ *
+__©Œ
+,
+
+370
+size_t
+
+__¡acksize
+)
+
+371
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+373 #ifdeà
+__USE_XOPEN2K
+
+
+375 
+ $±h»ad_©Œ_g‘¡ack
+ (
+__cÚ¡
+
+±h»ad_©Œ_t
+ *
+__»¡riù
+
+__©Œ
+,
+
+376 **
+__»¡riù
+
+__¡ackaddr
+,
+
+377
+size_t
+ *
+__»¡riù
+
+__¡acksize
+)
+
+378
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2, 3));
+
+383 
+ $±h»ad_©Œ_£t¡ack
+ (
+±h»ad_©Œ_t
+ *
+__©Œ
+, *
+__¡ackaddr
+,
+
+384
+size_t
+
+__¡acksize
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+387 #ifdeà
+__USE_GNU
+
+
+390 
+ $±h»ad_©Œ_£ffš™y_Å
+ (
+±h»ad_©Œ_t
+ *
+__©Œ
+,
+
+391
+size_t
+
+__ýu£tsize
+,
+
+392
+__cÚ¡
+
+ýu_£t_t
+ *
+__ýu£t
+)
+
+393
+__THROW
+
+ `__nÚnuÎ
+ ((1, 3));
+
+397 
+ $±h»ad_©Œ_g‘affš™y_Å
+ (
+__cÚ¡
+
+±h»ad_©Œ_t
+ *
+__©Œ
+,
+
+398
+size_t
+
+__ýu£tsize
+,
+
+399
+ýu_£t_t
+ *
+__ýu£t
+)
+
+400
+__THROW
+
+ `__nÚnuÎ
+ ((1, 3));
+
+406 
+ $±h»ad_g‘©Œ_Å
+ (
+±h»ad_t
+
+__th
+,
+±h»ad_©Œ_t
+ *
+__©Œ
+)
+
+407
+__THROW
+
+ `__nÚnuÎ
+ ((2));
+
+415 
+ $±h»ad_£tsched·¿m
+ (
+±h»ad_t
+
+__rg‘_th»ad
+, 
+__pÞicy
+,
+
+416
+__cÚ¡
+ 
+sched_·¿m
+ *
+__·¿m
+)
+
+417
+__THROW
+
+ `__nÚnuÎ
+ ((3));
+
+420 
+ $±h»ad_g‘sched·¿m
+ (
+±h»ad_t
+
+__rg‘_th»ad
+,
+
+421 *
+__»¡riù
+
+__pÞicy
+,
+
+422 
+sched_·¿m
+ *
+__»¡riù
+
+__·¿m
+)
+
+423
+__THROW
+
+ `__nÚnuÎ
+ ((2, 3));
+
+426 
+ $±h»ad_£tsched´io
+ (
+±h»ad_t
+
+__rg‘_th»ad
+, 
+__´io
+)
+
+427
+__THROW
+;
+
+430 #ifdeà
+__USE_UNIX98
+
+
+432 
+ $±h»ad_g‘cÚcu¼’cy
+ (è
+__THROW
+;
+
+435 
+ $±h»ad_£tcÚcu¼’cy
+ (
+__Ëv–
+__THROW
+;
+
+438 #ifdeà
+__USE_GNU
+
+
+443 
+ $±h»ad_y›ld
+ (è
+__THROW
+;
+
+448 
+ $±h»ad_£ffš™y_Å
+ (
+±h»ad_t
+
+__th
+,
+size_t
+
+__ýu£tsize
+,
+
+449
+__cÚ¡
+
+ýu_£t_t
+ *
+__ýu£t
+)
+
+450
+__THROW
+
+ `__nÚnuÎ
+ ((3));
+
+453 
+ $±h»ad_g‘affš™y_Å
+ (
+±h»ad_t
+
+__th
+,
+size_t
+
+__ýu£tsize
+,
+
+454
+ýu_£t_t
+ *
+__ýu£t
+)
+
+455
+__THROW
+
+ `__nÚnuÎ
+ ((3));
+
+468 
+ `±h»ad_Úû
+ (
+±h»ad_Úû_t
+ *
+__Úû_cÚŒÞ
+,
+
+469 (*
+__š™_routše
+è()è
+ `__nÚnuÎ
+ ((1, 2));
+
+480 
+ `±h»ad_£tÿnûl¡©e
+ (
+__¡©e
+, *
+__Þd¡©e
+);
+
+484 
+ `±h»ad_£tÿnûÉy³
+ (
+__ty³
+, *
+__Þdty³
+);
+
+487 
+ `±h»ad_ÿnûl
+ (
+±h»ad_t
+
+__th
+);
+
+492 
+ `±h»ad_‹¡ÿnûl
+ ();
+
+501
+__jmp_buf
+
+__ÿnûl_jmp_buf
+;
+
+502 
+__mask_was_§ved
+;
+
+503 }
+__ÿnûl_jmp_buf
+[1];
+
+504 *
+__·d
+[4];
+
+505 }
+ t__±h»ad_unwšd_buf_t
+
+ t__©Œibu‹__
+ ((
+ t__®igÃd__
+));
+
+508 #iâdeà
+__þ—nup_fù_©Œibu‹
+
+
+509 
+ #__þ—nup_fù_©Œibu‹
+
+
+ )
+
+514 
+ s__±h»ad_þ—nup_äame
+
+
+516 (*
+__ÿnûl_routše
+) (*);
+
+517 *
+__ÿnûl_¬g
+;
+
+518 
+__do_™
+;
+
+519 
+__ÿnûl_ty³
+;
+
+522 #ià
+defšed
+
+__GNUC__
+ && defšed
+__EXCEPTIONS
+
+
+523 #ifdeà
+__ýlu¥lus
+
+
+525 þas 
+ c__±h»ad_þ—nup_þass
+
+
+527 (*
+__ÿnûl_routše
+) (*);
+
+528 *
+__ÿnûl_¬g
+;
+
+529 
+__do_™
+;
+
+530 
+__ÿnûl_ty³
+;
+
+532
+public
+:
+
+533
+ `__±h»ad_þ—nup_þass
+ ((*
+__fù
+è(*), *
+__¬g
+)
+
+534 :
+ `__ÿnûl_routše
+ (
+__fù
+),
+ `__ÿnûl_¬g
+ (
+__¬g
+),
+ $__do_™
+ (1) { }
+
+535 ~
+ $__±h»ad_þ—nup_þass
+ (è{ ià(
+__do_™
+ `__ÿnûl_routše
+ (
+__ÿnûl_¬g
+);
+ }
+}
+
+536 
+ $__£tdo™
+ (
+__Ãwv®
+è{
+__do_™
+ = __Ãwv®;
+ }
+}
+
+537 
+ $__deãr
+ (è{
+ `±h»ad_£tÿnûÉy³
+ (
+PTHREAD_CANCEL_DEFERRED
+,
+
+538 &
+__ÿnûl_ty³
+);
+ }
+}
+
+539 
+ $__»¡Üe
+ (ècÚ¡ {
+ `±h»ad_£tÿnûÉy³
+ (
+__ÿnûl_ty³
+, 0);
+ }
+}
+
+549 
+ #±h»ad_þ—nup_push
+(
+routše
+,
+¬g
+) \
+
+551
+__±h»ad_þ—nup_þass
+
+ `__þäame
+ (
+routše
+,
+¬g
+)
+
+ )
+
+555 
+ #±h»ad_þ—nup_pÝ
+(
+execu‹
+) \
+
+556
+__þäame
+.
+ `__£tdo™
+ (
+execu‹
+); \
+
+557 } 0)
+
+ )
+
+559 #ifdeà
+__USE_GNU
+
+
+563 
+ #±h»ad_þ—nup_push_deãr_Å
+(
+routše
+,
+¬g
+) \
+
+565
+__±h»ad_þ—nup_þass
+
+ `__þäame
+ (
+routše
+,
+¬g
+); \
+
+566
+__þäame
+.
+ `__deãr
+ ()
+
+ )
+
+571 
+ #±h»ad_þ—nup_pÝ_»¡Üe_Å
+(
+execu‹
+) \
+
+572
+__þäame
+.
+ `__»¡Üe
+ (); \
+
+573
+__þäame
+.
+ `__£tdo™
+ (
+execu‹
+); \
+
+574 } 0)
+
+ )
+
+581
+__ex‹º_šlše
+ 
+
+582
+ $__±h»ad_þ—nup_routše
+ (
+__±h»ad_þ—nup_äame
+ *
+__äame
+)
+
+584 ià(
+__äame
+->
+__do_™
+)
+
+585
+__äame
+->
+ `__ÿnûl_routše
+ (__äame->
+__ÿnûl_¬g
+);
+
+586
+ }
+}
+
+595 
+ #±h»ad_þ—nup_push
+(
+routše
+,
+¬g
+) \
+
+597 
+__±h»ad_þ—nup_äame
+
+__þäame
+ \
+
+598
+ `__©Œibu‹__
+ ((
+ `__þ—nup__
+ (
+__±h»ad_þ—nup_routše
+))) \
+
+599 ð{ .
+__ÿnûl_routše
+ = (
+routše
+), .
+__ÿnûl_¬g
+ = (
+¬g
+), \
+
+600 .
+__do_™
+ = 1 };
+
+ )
+
+604 
+ #±h»ad_þ—nup_pÝ
+(
+execu‹
+) \
+
+605
+__þäame
+.
+__do_™
+ = (
+execu‹
+); \
+
+606 } 0)
+
+ )
+
+608 #ifdeà
+__USE_GNU
+
+
+612 
+ #±h»ad_þ—nup_push_deãr_Å
+(
+routše
+,
+¬g
+) \
+
+614 
+__±h»ad_þ—nup_äame
+
+__þäame
+ \
+
+615
+ `__©Œibu‹__
+ ((
+ `__þ—nup__
+ (
+__±h»ad_þ—nup_routše
+))) \
+
+616 ð{ .
+__ÿnûl_routše
+ = (
+routše
+), .
+__ÿnûl_¬g
+ = (
+¬g
+), \
+
+617 .
+__do_™
+ = 1 }; \
+
+618 (è
+ `±h»ad_£tÿnûÉy³
+ (
+PTHREAD_CANCEL_DEFERRED
+, \
+
+619 &
+__þäame
+.
+__ÿnûl_ty³
+)
+
+ )
+
+624 
+ #±h»ad_þ—nup_pÝ_»¡Üe_Å
+(
+execu‹
+) \
+
+625 (è
+ `±h»ad_£tÿnûÉy³
+ (
+__þäame
+.
+__ÿnûl_ty³
+,
+NULL
+); \
+
+626
+__þäame
+.
+__do_™
+ = (
+execu‹
+); \
+
+627 } 0)
+
+ )
+
+638 
+ #±h»ad_þ—nup_push
+(
+routše
+,
+¬g
+) \
+
+640
+__±h»ad_unwšd_buf_t
+
+__ÿnûl_buf
+; \
+
+641 (*
+__ÿnûl_routše
+è(*èð(
+routše
+); \
+
+642 *
+__ÿnûl_¬g
+ = (
+¬g
+); \
+
+643 
+nÙ_fœ¡_ÿÎ
+ =
+ `__sig£tjmp
+ ((
+__jmp_buf_g
+ *) (*) \
+
+644
+__ÿnûl_buf
+.
+__ÿnûl_jmp_buf
+, 0); \
+
+645 ià(
+ `__bužtš_ex³ù
+ (
+nÙ_fœ¡_ÿÎ
+, 0)) \
+
+647
+ `__ÿnûl_routše
+ (
+__ÿnûl_¬g
+); \
+
+648
+ `__±h»ad_unwšd_Ãxt
+ (&
+__ÿnûl_buf
+); \
+
+652
+ `__±h»ad_»gi¡”_ÿnûl
+ (&
+__ÿnûl_buf
+); \
+
+653 dØ{
+
+ )
+
+654 
+__±h»ad_»gi¡”_ÿnûl
+ (
+__±h»ad_unwšd_buf_t
+ *
+__buf
+)
+
+655
+__þ—nup_fù_©Œibu‹
+;
+
+659 
+ #±h»ad_þ—nup_pÝ
+(
+execu‹
+) \
+
+662
+ `__±h»ad_uÄegi¡”_ÿnûl
+ (&
+__ÿnûl_buf
+); \
+
+663 ià(
+execu‹
+) \
+
+664
+ `__ÿnûl_routše
+ (
+__ÿnûl_¬g
+); \
+
+665 } 0)
+
+ )
+
+666 
+ $__±h»ad_uÄegi¡”_ÿnûl
+ (
+__±h»ad_unwšd_buf_t
+ *
+__buf
+)
+
+667
+__þ—nup_fù_©Œibu‹
+;
+
+669 #ifdeà
+__USE_GNU
+
+
+673 
+ #±h»ad_þ—nup_push_deãr_Å
+(
+routše
+,
+¬g
+) \
+
+675
+__±h»ad_unwšd_buf_t
+
+__ÿnûl_buf
+; \
+
+676 (*
+__ÿnûl_routše
+è(*èð(
+routše
+); \
+
+677 *
+__ÿnûl_¬g
+ = (
+¬g
+); \
+
+678 
+nÙ_fœ¡_ÿÎ
+ =
+ `__sig£tjmp
+ ((
+__jmp_buf_g
+ *) (*) \
+
+679
+__ÿnûl_buf
+.
+__ÿnûl_jmp_buf
+, 0); \
+
+680 ià(
+ `__bužtš_ex³ù
+ (
+nÙ_fœ¡_ÿÎ
+, 0)) \
+
+682
+ `__ÿnûl_routše
+ (
+__ÿnûl_¬g
+); \
+
+683
+ `__±h»ad_unwšd_Ãxt
+ (&
+__ÿnûl_buf
+); \
+
+687
+ `__±h»ad_»gi¡”_ÿnûl_deãr
+ (&
+__ÿnûl_buf
+); \
+
+688 dØ{
+
+ )
+
+689 
+ `__±h»ad_»gi¡”_ÿnûl_deãr
+ (
+__±h»ad_unwšd_buf_t
+ *
+__buf
+)
+
+690
+__þ—nup_fù_©Œibu‹
+;
+
+695 
+ #±h»ad_þ—nup_pÝ_»¡Üe_Å
+(
+execu‹
+) \
+
+698
+ `__±h»ad_uÄegi¡”_ÿnûl_»¡Üe
+ (&
+__ÿnûl_buf
+); \
+
+699 ià(
+execu‹
+) \
+
+700
+ `__ÿnûl_routše
+ (
+__ÿnûl_¬g
+); \
+
+701
+ }
+} 0)
+
+ )
+
+702 
+ $__±h»ad_uÄegi¡”_ÿnûl_»¡Üe
+ (
+__±h»ad_unwšd_buf_t
+ *
+__buf
+)
+
+703
+__þ—nup_fù_©Œibu‹
+;
+
+707 
+ $__±h»ad_unwšd_Ãxt
+ (
+__±h»ad_unwšd_buf_t
+ *
+__buf
+)
+
+708
+__þ—nup_fù_©Œibu‹
+
+ `__©Œibu‹__
+ ((
+__nÜ‘uº__
+))
+
+709 #iâdeà
+SHARED
+
+
+710
+ `__©Œibu‹__
+ ((
+__w—k__
+))
+
+716 
+__jmp_buf_g
+;
+
+717 
+ $__sig£tjmp
+ (
+__jmp_buf_g
+ *
+__’v
+, 
+__§vemask
+__THROW
+;
+
+723 
+ $±h»ad_mu‹x_š™
+ (
+±h»ad_mu‹x_t
+ *
+__mu‹x
+,
+
+724
+__cÚ¡
+
+±h»ad_mu‹x©Œ_t
+ *
+__mu‹x©Œ
+)
+
+725
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+728 
+ $±h»ad_mu‹x_de¡roy
+ (
+±h»ad_mu‹x_t
+ *
+__mu‹x
+)
+
+729
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+732 
+ $±h»ad_mu‹x_Œylock
+ (
+±h»ad_mu‹x_t
+ *
+__mu‹x
+)
+
+733
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+736 
+ $±h»ad_mu‹x_lock
+ (
+±h»ad_mu‹x_t
+ *
+__mu‹x
+)
+
+737
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+739 #ifdeà
+__USE_XOPEN2K
+
+
+741 
+ $±h»ad_mu‹x_timedlock
+ (
+±h»ad_mu‹x_t
+ *
+__»¡riù
+
+__mu‹x
+,
+
+742
+__cÚ¡
+ 
+time¥ec
+ *
+__»¡riù
+
+
+743
+__ab¡ime
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+747 
+ $±h»ad_mu‹x_uÆock
+ (
+±h»ad_mu‹x_t
+ *
+__mu‹x
+)
+
+748
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+751 #ifdeà
+__USE_UNIX98
+
+
+753 
+ $±h»ad_mu‹x_g‘´ioûžšg
+ (
+__cÚ¡
+
+±h»ad_mu‹x_t
+ *
+
+754
+__»¡riù
+
+__mu‹x
+,
+
+755 *
+__»¡riù
+
+__´ioûžšg
+)
+
+756
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+760 
+ $±h»ad_mu‹x_£rioûžšg
+ (
+±h»ad_mu‹x_t
+ *
+__»¡riù
+
+__mu‹x
+,
+
+761 
+__´ioûžšg
+,
+
+762 *
+__»¡riù
+
+__Þd_ûžšg
+)
+
+763
+__THROW
+
+ `__nÚnuÎ
+ ((1, 3));
+
+767 #ifdeà
+__USE_XOPEN2K8
+
+
+769 
+ $±h»ad_mu‹x_cÚsi¡’t_Å
+ (
+±h»ad_mu‹x_t
+ *
+__mu‹x
+)
+
+770
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+771 #ifdeà
+__USE_GNU
+
+
+772 
+ $±h»ad_mu‹x_cÚsi¡’t_Å
+ (
+±h»ad_mu‹x_t
+ *
+__mu‹x
+)
+
+773
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+782 
+ $±h»ad_mu‹x©Œ_š™
+ (
+±h»ad_mu‹x©Œ_t
+ *
+__©Œ
+)
+
+783
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+786 
+ $±h»ad_mu‹x©Œ_de¡roy
+ (
+±h»ad_mu‹x©Œ_t
+ *
+__©Œ
+)
+
+787
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+790 
+ $±h»ad_mu‹x©Œ_g‘psh¬ed
+ (
+__cÚ¡
+
+±h»ad_mu‹x©Œ_t
+ *
+
+791
+__»¡riù
+
+__©Œ
+,
+
+792 *
+__»¡riù
+
+__psh¬ed
+)
+
+793
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+796 
+ $±h»ad_mu‹x©Œ_£sh¬ed
+ (
+±h»ad_mu‹x©Œ_t
+ *
+__©Œ
+,
+
+797 
+__psh¬ed
+)
+
+798
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+800 #ifdeà
+__USE_UNIX98
+
+
+802 
+ $±h»ad_mu‹x©Œ_g‘ty³
+ (
+__cÚ¡
+
+±h»ad_mu‹x©Œ_t
+ *
+__»¡riù
+
+
+803
+__©Œ
+, *
+__»¡riù
+
+__kšd
+)
+
+804
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+809 
+ $±h»ad_mu‹x©Œ_£‰y³
+ (
+±h»ad_mu‹x©Œ_t
+ *
+__©Œ
+, 
+__kšd
+)
+
+810
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+813 
+ $±h»ad_mu‹x©Œ_g‘´ÙocÞ
+ (
+__cÚ¡
+
+±h»ad_mu‹x©Œ_t
+ *
+
+814
+__»¡riù
+
+__©Œ
+,
+
+815 *
+__»¡riù
+
+__´ÙocÞ
+)
+
+816
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+820 
+ $±h»ad_mu‹x©Œ_£rÙocÞ
+ (
+±h»ad_mu‹x©Œ_t
+ *
+__©Œ
+,
+
+821 
+__´ÙocÞ
+)
+
+822
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+825 
+ $±h»ad_mu‹x©Œ_g‘´ioûžšg
+ (
+__cÚ¡
+
+±h»ad_mu‹x©Œ_t
+ *
+
+826
+__»¡riù
+
+__©Œ
+,
+
+827 *
+__»¡riù
+
+__´ioûžšg
+)
+
+828
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+831 
+ $±h»ad_mu‹x©Œ_£rioûžšg
+ (
+±h»ad_mu‹x©Œ_t
+ *
+__©Œ
+,
+
+832 
+__´ioûžšg
+)
+
+833
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+836 #ifdeà
+__USE_XOPEN2K
+
+
+838 
+ $±h»ad_mu‹x©Œ_g‘robu¡
+ (
+__cÚ¡
+
+±h»ad_mu‹x©Œ_t
+ *
+__©Œ
+,
+
+839 *
+__robu¡Ãss
+)
+
+840
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+841 #ifdeà
+__USE_GNU
+
+
+842 
+ $±h»ad_mu‹x©Œ_g‘robu¡_Å
+ (
+__cÚ¡
+
+±h»ad_mu‹x©Œ_t
+ *
+__©Œ
+,
+
+843 *
+__robu¡Ãss
+)
+
+844
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+848 
+ $±h»ad_mu‹x©Œ_£Œobu¡
+ (
+±h»ad_mu‹x©Œ_t
+ *
+__©Œ
+,
+
+849 
+__robu¡Ãss
+)
+
+850
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+851 #ifdeà
+__USE_GNU
+
+
+852 
+ $±h»ad_mu‹x©Œ_£Œobu¡_Å
+ (
+±h»ad_mu‹x©Œ_t
+ *
+__©Œ
+,
+
+853 
+__robu¡Ãss
+)
+
+854
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+859 #ià
+defšed
+
+__USE_UNIX98
+ || defšed
+__USE_XOPEN2K
+
+
+864 
+ $±h»ad_rwlock_š™
+ (
+±h»ad_rwlock_t
+ *
+__»¡riù
+
+__rwlock
+,
+
+865
+__cÚ¡
+
+±h»ad_rwlock©Œ_t
+ *
+__»¡riù
+
+
+866
+__©Œ
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+869 
+ $±h»ad_rwlock_de¡roy
+ (
+±h»ad_rwlock_t
+ *
+__rwlock
+)
+
+870
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+873 
+ $±h»ad_rwlock_rdlock
+ (
+±h»ad_rwlock_t
+ *
+__rwlock
+)
+
+874
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+877 
+ $±h»ad_rwlock_Œyrdlock
+ (
+±h»ad_rwlock_t
+ *
+__rwlock
+)
+
+878
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+880 #ifdeà
+__USE_XOPEN2K
+
+
+882 
+ $±h»ad_rwlock_timedrdlock
+ (
+±h»ad_rwlock_t
+ *
+__»¡riù
+
+__rwlock
+,
+
+883
+__cÚ¡
+ 
+time¥ec
+ *
+__»¡riù
+
+
+884
+__ab¡ime
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+888 
+ $±h»ad_rwlock_w¾ock
+ (
+±h»ad_rwlock_t
+ *
+__rwlock
+)
+
+889
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+892 
+ $±h»ad_rwlock_Œyw¾ock
+ (
+±h»ad_rwlock_t
+ *
+__rwlock
+)
+
+893
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+895 #ifdeà
+__USE_XOPEN2K
+
+
+897 
+ $±h»ad_rwlock_timedw¾ock
+ (
+±h»ad_rwlock_t
+ *
+__»¡riù
+
+__rwlock
+,
+
+898
+__cÚ¡
+ 
+time¥ec
+ *
+__»¡riù
+
+
+899
+__ab¡ime
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+903 
+ $±h»ad_rwlock_uÆock
+ (
+±h»ad_rwlock_t
+ *
+__rwlock
+)
+
+904
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+910 
+ $±h»ad_rwlock©Œ_š™
+ (
+±h»ad_rwlock©Œ_t
+ *
+__©Œ
+)
+
+911
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+914 
+ $±h»ad_rwlock©Œ_de¡roy
+ (
+±h»ad_rwlock©Œ_t
+ *
+__©Œ
+)
+
+915
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+918 
+ $±h»ad_rwlock©Œ_g‘psh¬ed
+ (
+__cÚ¡
+
+±h»ad_rwlock©Œ_t
+ *
+
+919
+__»¡riù
+
+__©Œ
+,
+
+920 *
+__»¡riù
+
+__psh¬ed
+)
+
+921
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+924 
+ $±h»ad_rwlock©Œ_£sh¬ed
+ (
+±h»ad_rwlock©Œ_t
+ *
+__©Œ
+,
+
+925 
+__psh¬ed
+)
+
+926
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+929 
+ $±h»ad_rwlock©Œ_g‘kšd_Å
+ (
+__cÚ¡
+
+±h»ad_rwlock©Œ_t
+ *
+
+930
+__»¡riù
+
+__©Œ
+,
+
+931 *
+__»¡riù
+
+__´ef
+)
+
+932
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+935 
+ $±h»ad_rwlock©Œ_£tkšd_Å
+ (
+±h»ad_rwlock©Œ_t
+ *
+__©Œ
+,
+
+936 
+__´ef
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+944 
+ $±h»ad_cÚd_š™
+ (
+±h»ad_cÚd_t
+ *
+__»¡riù
+
+__cÚd
+,
+
+945
+__cÚ¡
+
+±h»ad_cÚd©Œ_t
+ *
+__»¡riù
+
+
+946
+__cÚd_©Œ
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+949 
+ $±h»ad_cÚd_de¡roy
+ (
+±h»ad_cÚd_t
+ *
+__cÚd
+)
+
+950
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+953 
+ $±h»ad_cÚd_sigÇl
+ (
+±h»ad_cÚd_t
+ *
+__cÚd
+)
+
+954
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+957 
+ $±h»ad_cÚd_brßdÿ¡
+ (
+±h»ad_cÚd_t
+ *
+__cÚd
+)
+
+958
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+965 
+ $±h»ad_cÚd_wa™
+ (
+±h»ad_cÚd_t
+ *
+__»¡riù
+
+__cÚd
+,
+
+966
+±h»ad_mu‹x_t
+ *
+__»¡riù
+
+__mu‹x
+)
+
+967
+ `__nÚnuÎ
+ ((1, 2));
+
+976 
+ $±h»ad_cÚd_timedwa™
+ (
+±h»ad_cÚd_t
+ *
+__»¡riù
+
+__cÚd
+,
+
+977
+±h»ad_mu‹x_t
+ *
+__»¡riù
+
+__mu‹x
+,
+
+978
+__cÚ¡
+ 
+time¥ec
+ *
+__»¡riù
+
+
+979
+__ab¡ime
+ `__nÚnuÎ
+ ((1, 2, 3));
+
+984 
+ $±h»ad_cÚd©Œ_š™
+ (
+±h»ad_cÚd©Œ_t
+ *
+__©Œ
+)
+
+985
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+988 
+ $±h»ad_cÚd©Œ_de¡roy
+ (
+±h»ad_cÚd©Œ_t
+ *
+__©Œ
+)
+
+989
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+992 
+ $±h»ad_cÚd©Œ_g‘psh¬ed
+ (
+__cÚ¡
+
+±h»ad_cÚd©Œ_t
+ *
+
+993
+__»¡riù
+
+__©Œ
+,
+
+994 *
+__»¡riù
+
+__psh¬ed
+)
+
+995
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+998 
+ $±h»ad_cÚd©Œ_£sh¬ed
+ (
+±h»ad_cÚd©Œ_t
+ *
+__©Œ
+,
+
+999 
+__psh¬ed
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+1001 #ifdeà
+__USE_XOPEN2K
+
+
+1003 
+ $±h»ad_cÚd©Œ_g‘þock
+ (
+__cÚ¡
+
+±h»ad_cÚd©Œ_t
+ *
+
+1004
+__»¡riù
+
+__©Œ
+,
+
+1005
+__þockid_t
+ *
+__»¡riù
+
+__þock_id
+)
+
+1006
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+1009 
+ $±h»ad_cÚd©Œ_£tþock
+ (
+±h»ad_cÚd©Œ_t
+ *
+__©Œ
+,
+
+1010
+__þockid_t
+
+__þock_id
+)
+
+1011
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+1015 #ifdeà
+__USE_XOPEN2K
+
+
+1020 
+ $±h»ad_¥š_š™
+ (
+±h»ad_¥šlock_t
+ *
+__lock
+, 
+__psh¬ed
+)
+
+1021
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+1024 
+ $±h»ad_¥š_de¡roy
+ (
+±h»ad_¥šlock_t
+ *
+__lock
+)
+
+1025
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+1028 
+ $±h»ad_¥š_lock
+ (
+±h»ad_¥šlock_t
+ *
+__lock
+)
+
+1029
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+1032 
+ $±h»ad_¥š_Œylock
+ (
+±h»ad_¥šlock_t
+ *
+__lock
+)
+
+1033
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+1036 
+ $±h»ad_¥š_uÆock
+ (
+±h»ad_¥šlock_t
+ *
+__lock
+)
+
+1037
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+1044 
+ $±h»ad_b¬r›r_š™
+ (
+±h»ad_b¬r›r_t
+ *
+__»¡riù
+
+__b¬r›r
+,
+
+1045
+__cÚ¡
+
+±h»ad_b¬r›¿‰r_t
+ *
+__»¡riù
+
+
+1046
+__©Œ
+, 
+__couÁ
+)
+
+1047
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+1050 
+ $±h»ad_b¬r›r_de¡roy
+ (
+±h»ad_b¬r›r_t
+ *
+__b¬r›r
+)
+
+1051
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+1054 
+ $±h»ad_b¬r›r_wa™
+ (
+±h»ad_b¬r›r_t
+ *
+__b¬r›r
+)
+
+1055
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+1059 
+ $±h»ad_b¬r›¿‰r_š™
+ (
+±h»ad_b¬r›¿‰r_t
+ *
+__©Œ
+)
+
+1060
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+1063 
+ $±h»ad_b¬r›¿‰r_de¡roy
+ (
+±h»ad_b¬r›¿‰r_t
+ *
+__©Œ
+)
+
+1064
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+1067 
+ $±h»ad_b¬r›¿‰r_g‘psh¬ed
+ (
+__cÚ¡
+
+±h»ad_b¬r›¿‰r_t
+ *
+
+1068
+__»¡riù
+
+__©Œ
+,
+
+1069 *
+__»¡riù
+
+__psh¬ed
+)
+
+1070
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2));
+
+1073 
+ $±h»ad_b¬r›¿‰r_£sh¬ed
+ (
+±h»ad_b¬r›¿‰r_t
+ *
+__©Œ
+,
+
+1074 
+__psh¬ed
+)
+
+1075
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+1087 
+ `±h»ad_key_ü—‹
+ (
+±h»ad_key_t
+ *
+__key
+,
+
+1088 (*
+__de¡r_funùiÚ
+) (*))
+
+1089
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+1092 
+ $±h»ad_key_d–‘e
+ (
+±h»ad_key_t
+
+__key
+__THROW
+;
+
+1095 *
+ $±h»ad_g‘¥ecific
+ (
+±h»ad_key_t
+
+__key
+__THROW
+;
+
+1098 
+ $±h»ad_£t¥ecific
+ (
+±h»ad_key_t
+
+__key
+,
+
+1099
+__cÚ¡
+ *
+__poš‹r
+__THROW
+ ;
+
+1102 #ifdeà
+__USE_XOPEN2K
+
+
+1104 
+ $±h»ad_g‘ýuþockid
+ (
+±h»ad_t
+
+__th»ad_id
+,
+
+1105
+__þockid_t
+ *
+__þock_id
+)
+
+1106
+__THROW
+
+ `__nÚnuÎ
+ ((2));
+
+1121 
+ `±h»ad_©fÜk
+ ((*
+__´•¬e
+) (),
+
+1122 (*
+__·»Á
+) (),
+
+1123 (*
+__chžd
+è()è
+__THROW
+;
+
+1126 #ifdeà
+__USE_EXTERN_INLINES
+
+
+1128
+__ex‹º_šlše
+ 
+
+1129
+ `__NTH
+ (
+ $±h»ad_equ®
+ (
+±h»ad_t
+
+__th»ad1
+,…th»ad_ˆ
+__th»ad2
+))
+
+1131 
+__th»ad1
+ =ð
+__th»ad2
+;
+
+1132
+ }
+}
+
+1135
+ g__END_DECLS
+
+
+ @/usr/include/sys/select.h
+
+22 #iâdeà
+_SYS_SELECT_H
+
+
+23 
+ #_SYS_SELECT_H
+ 1
+
+ )
+
+25 
+ ~<ã©u»s.h
+>
+
+28 
+ ~<b™s/ty³s.h
+>
+
+31 
+ ~<b™s/£Ëù.h
+>
+
+34 
+ ~<b™s/sig£t.h
+>
+
+36 #iâdeà
+__sig£t_t_defšed
+
+
+37 
+ #__sig£t_t_defšed
+
+
+ )
+
+38 
+__sig£t_t
+
+ tsig£t_t
+;
+
+42 
+ #__Ãed_time_t
+
+
+ )
+
+43 
+ #__Ãed_time¥ec
+
+
+ )
+
+44 
+ ~<time.h
+>
+
+45 
+ #__Ãed_timev®
+
+
+ )
+
+46 
+ ~<b™s/time.h
+>
+
+48 #iâdeà
+__su£cÚds_t_defšed
+
+
+49 
+__su£cÚds_t
+
+ tsu£cÚds_t
+;
+
+50 
+ #__su£cÚds_t_defšed
+
+
+ )
+
+55 
+ t__fd_mask
+;
+
+58 #undeà
+__NFDBITS
+
+
+59 #undeà
+__FDELT
+
+
+60 #undeà
+__FDMASK
+
+
+62 
+ #__NFDBITS
+ (8 * (è (
+__fd_mask
+))
+
+ )
+
+63 
+ #__FDELT
+(
+d
+è((dè/
+__NFDBITS
+)
+
+ )
+
+64 
+ #__FDMASK
+(
+d
+è((
+__fd_mask
+è1 << ((dè%
+__NFDBITS
+))
+
+ )
+
+71 #ifdeà
+__USE_XOPEN
+
+
+72
+__fd_mask
+
+ mfds_b™s
+[
+__FD_SETSIZE
+ /
+__NFDBITS
+];
+
+73 
+ #__FDS_BITS
+(
+£t
+è((£t)->
+fds_b™s
+)
+
+ )
+
+75
+__fd_mask
+
+ m__fds_b™s
+[
+__FD_SETSIZE
+ /
+__NFDBITS
+];
+
+76 
+ #__FDS_BITS
+(
+£t
+è((£t)->
+__fds_b™s
+)
+
+ )
+
+78 }
+ tfd_£t
+;
+
+81 
+ #FD_SETSIZE
+
+__FD_SETSIZE
+
+
+ )
+
+83 #ifdeà
+__USE_MISC
+
+
+85 
+__fd_mask
+
+ tfd_mask
+;
+
+88 
+ #NFDBITS
+
+__NFDBITS
+
+
+ )
+
+93 
+ #FD_SET
+(
+fd
+,
+fd£
+ `__FD_SET
+ (fd, fd£)
+
+ )
+
+94 
+ #FD_CLR
+(
+fd
+,
+fd£
+ `__FD_CLR
+ (fd, fd£)
+
+ )
+
+95 
+ #FD_ISSET
+(
+fd
+,
+fd£
+ `__FD_ISSET
+ (fd, fd£)
+
+ )
+
+96 
+ #FD_ZERO
+(
+fd£
+ `__FD_ZERO
+ (fd£)
+
+ )
+
+99
+__BEGIN_DECLS
+
+
+109 
+£Ëù
+ (
+__nfds
+,
+fd_£t
+ *
+__»¡riù
+
+__»adfds
+,
+
+110
+fd_£t
+ *
+__»¡riù
+
+__wr™efds
+,
+
+111
+fd_£t
+ *
+__»¡riù
+
+__exû±fds
+,
+
+112 
+timev®
+ *
+__»¡riù
+
+__timeout
+);
+
+114 #ifdeà
+__USE_XOPEN2K
+
+
+121 
+p£Ëù
+ (
+__nfds
+,
+fd_£t
+ *
+__»¡riù
+
+__»adfds
+,
+
+122
+fd_£t
+ *
+__»¡riù
+
+__wr™efds
+,
+
+123
+fd_£t
+ *
+__»¡riù
+
+__exû±fds
+,
+
+124 cÚ¡ 
+time¥ec
+ *
+__»¡riù
+
+__timeout
+,
+
+125 cÚ¡
+__sig£t_t
+ *
+__»¡riù
+
+__sigmask
+);
+
+128
+ g__END_DECLS
+
+
+ @/usr/include/sys/sysmacros.h
+
+21 #iâdeà
+_SYS_SYSMACROS_H
+
+
+22 
+ #_SYS_SYSMACROS_H
+ 1
+
+ )
+
+24 
+ ~<ã©u»s.h
+>
+
+29 #ifdeà
+__GLIBC_HAVE_LONG_LONG
+
+
+30
+__ex‹nsiÚ__
+
+
+31 
+ $gnu_dev_majÜ
+ (
+__dev
+)
+
+32
+__THROW
+;
+
+33
+__ex‹nsiÚ__
+
+
+34 
+ $gnu_dev_mšÜ
+ (
+__dev
+)
+
+35
+__THROW
+;
+
+36
+__ex‹nsiÚ__
+
+
+37 
+ $gnu_dev_makedev
+ (
+__majÜ
+,
+
+38 
+__mšÜ
+)
+
+39
+__THROW
+;
+
+41 #ià
+defšed
+
+__GNUC__
+ && __GNUC__ >ð2 && defšed
+__USE_EXTERN_INLINES
+
+
+42
+__ex‹nsiÚ__
+
+__ex‹º_šlše
+ 
+
+43
+ `__NTH
+ (
+ $gnu_dev_majÜ
+ (
+__dev
+))
+
+45  ((
+__dev
+ >> 8) & 0xfff) | (() (__dev >> 32) & ~0xfff);
+
+46
+ }
+}
+
+48
+__ex‹nsiÚ__
+
+__ex‹º_šlše
+ 
+
+49
+__NTH
+ (
+ $gnu_dev_mšÜ
+ (
+__dev
+))
+
+51  (
+__dev
+ & 0xff) | (() (__dev >> 12) & ~0xff);
+
+52
+ }
+}
+
+54
+__ex‹nsiÚ__
+
+__ex‹º_šlše
+ 
+
+55
+__NTH
+ (
+ $gnu_dev_makedev
+ (
+__majÜ
+, 
+__mšÜ
+))
+
+57  ((
+__mšÜ
+ & 0xffè| ((
+__majÜ
+ & 0xfff) << 8)
+
+58 | (((è(
+__mšÜ
+ & ~0xff)) << 12)
+
+59 | (((è(
+__majÜ
+ & ~0xfff)) << 32));
+
+60
+ }
+}
+
+65 
+ #majÜ
+(
+dev
+ `gnu_dev_majÜ
+ (dev)
+
+ )
+
+66 
+ #mšÜ
+(
+dev
+ `gnu_dev_mšÜ
+ (dev)
+
+ )
+
+67 
+ #makedev
+(
+maj
+,
+mš
+ `gnu_dev_makedev
+ (maj, mš)
+
+ )
+
+ @/usr/include/time.h
+
+23 #iâdef
+_TIME_H
+
+
+25 #ià(!
+defšed
+
+__Ãed_time_t
+ && !defšed
+__Ãed_þock_t
+ && \
+
+26 !
+defšed
+
+ g__Ãed_time¥ec
+)
+
+27 
+ #_TIME_H
+ 1
+
+ )
+
+28 
+ ~<ã©u»s.h
+>
+
+30
+ g__BEGIN_DECLS
+
+
+34 #ifdef
+_TIME_H
+
+
+36 
+ #__Ãed_size_t
+
+
+ )
+
+37 
+ #__Ãed_NULL
+
+
+ )
+
+38 
+ ~<¡ddef.h
+>
+
+42 
+ ~<b™s/time.h
+>
+
+45 #ià!
+defšed
+
+__STRICT_ANSI__
+ && !defšed
+__USE_XOPEN2K
+
+
+46 #iâdeà
+CLK_TCK
+
+
+47 
+ #CLK_TCK
+
+CLOCKS_PER_SEC
+
+
+ )
+
+53 #ià!
+defšed
+
+__þock_t_defšed
+ && (defšed
+_TIME_H
+ || defšed
+__Ãed_þock_t
+)
+
+54 
+ #__þock_t_defšed
+ 1
+
+ )
+
+56 
+ ~<b™s/ty³s.h
+>
+
+58
+__BEGIN_NAMESPACE_STD
+
+
+60 
+__þock_t
+
+ tþock_t
+;
+
+61
+ g__END_NAMESPACE_STD
+
+
+62 #ià
+defšed
+
+__USE_XOPEN
+ || defšed
+__USE_POSIX
+ || defšed
+__USE_MISC
+
+
+63
+ $__USING_NAMESPACE_STD
+(
+þock_t
+)
+
+67 #undeà
+__Ãed_þock_t
+
+
+69 #ià!
+defšed
+
+__time_t_defšed
+ && (defšed
+_TIME_H
+ || defšed
+__Ãed_time_t
+)
+
+70 
+ #__time_t_defšed
+ 1
+
+ )
+
+72 
+ ~<b™s/ty³s.h
+>
+
+74
+__BEGIN_NAMESPACE_STD
+
+
+76 
+__time_t
+
+ ttime_t
+;
+
+77
+__END_NAMESPACE_STD
+
+
+78 #ià
+defšed
+
+__USE_POSIX
+ || defšed
+__USE_MISC
+ || defšed
+__USE_SVID
+
+
+79
+ $__USING_NAMESPACE_STD
+(
+time_t
+)
+
+83 #undeà
+__Ãed_time_t
+
+
+85 #ià!
+defšed
+
+__þockid_t_defšed
+ && \
+
+86 ((
+defšed
+
+_TIME_H
+ && defšed
+__USE_POSIX199309
+è|| defšed
+__Ãed_þockid_t
+)
+
+87 
+ #__þockid_t_defšed
+ 1
+
+ )
+
+89 
+ ~<b™s/ty³s.h
+>
+
+92 
+__þockid_t
+
+ tþockid_t
+;
+
+95 #undeà
+__þockid_time_t
+
+
+97 #ià!
+defšed
+
+__tim”_t_defšed
+ && \
+
+98 ((
+defšed
+
+_TIME_H
+ && defšed
+__USE_POSIX199309
+è|| defšed
+__Ãed_tim”_t
+)
+
+99 
+ #__tim”_t_defšed
+ 1
+
+ )
+
+101 
+ ~<b™s/ty³s.h
+>
+
+104 
+__tim”_t
+
+ ttim”_t
+;
+
+107 #undeà
+__Ãed_tim”_t
+
+
+110 #ià!
+defšed
+
+__time¥ec_defšed
+ && \
+
+111 ((
+defšed
+
+_TIME_H
+ && \
+
+112 (
+defšed
+
+__USE_POSIX199309
+ || defšed
+__USE_MISC
+)) || \
+
+113
+defšed
+
+__Ãed_time¥ec
+)
+
+114 
+ #__time¥ec_defšed
+ 1
+
+ )
+
+116 
+ ~<b™s/ty³s.h
+>
+
+120 
+ stime¥ec
+
+
+122
+__time_t
+
+tv_£c
+;
+
+123 
+tv_n£c
+;
+
+127 #undeà
+__Ãed_time¥ec
+
+
+130 #ifdef
+_TIME_H
+
+
+131
+__BEGIN_NAMESPACE_STD
+
+
+133 
+ stm
+
+
+135 
+tm_£c
+;
+
+136 
+tm_mš
+;
+
+137 
+tm_hour
+;
+
+138 
+tm_mday
+;
+
+139 
+tm_mÚ
+;
+
+140 
+tm_y—r
+;
+
+141 
+tm_wday
+;
+
+142 
+tm_yday
+;
+
+143 
+tm_isd¡
+;
+
+145 #ifdef
+__USE_BSD
+
+
+146 
+tm_gmtoff
+;
+
+147
+__cÚ¡
+ *
+tm_zÚe
+;
+
+149 
+__tm_gmtoff
+;
+
+150
+__cÚ¡
+ *
+__tm_zÚe
+;
+
+153
+__END_NAMESPACE_STD
+
+
+154 #ià
+defšed
+
+__USE_XOPEN
+ || defšed
+__USE_POSIX
+ || defšed
+__USE_MISC
+
+
+155
+ $__USING_NAMESPACE_STD
+(
+tm
+)
+
+159 #ifdeà
+__USE_POSIX199309
+
+
+161 
+ s™im”¥ec
+
+
+163 
+time¥ec
+
+™_š‹rv®
+;
+
+164 
+time¥ec
+
+™_v®ue
+;
+
+168 
+sigev’t
+;
+
+172 #ifdeà
+__USE_XOPEN2K
+
+
+173 #iâdeà
+__pid_t_defšed
+
+
+174 
+__pid_t
+
+ tpid_t
+;
+
+175 
+ #__pid_t_defšed
+
+
+ )
+
+180
+__BEGIN_NAMESPACE_STD
+
+
+183
+þock_t
+
+ $þock
+ (è
+__THROW
+;
+
+186
+time_t
+
+ $time
+ (
+time_t
+ *
+__tim”
+__THROW
+;
+
+189 
+ $difáime
+ (
+time_t
+
+__time1
+,ime_ˆ
+__time0
+)
+
+190
+__THROW
+
+ `__©Œibu‹__
+ ((
+__cÚ¡__
+));
+
+193
+time_t
+
+ $mktime
+ (
+tm
+ *
+__
+__THROW
+;
+
+199
+size_t
+
+ $¡ráime
+ (*
+__»¡riù
+
+__s
+,
+size_t
+
+__maxsize
+,
+
+200
+__cÚ¡
+ *
+__»¡riù
+
+__fÜm©
+,
+
+201
+__cÚ¡
+ 
+tm
+ *
+__»¡riù
+
+__
+__THROW
+;
+
+202
+__END_NAMESPACE_STD
+
+
+204 #ifdeà
+__USE_XOPEN
+
+
+207 *
+ $¡½time
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__s
+,
+
+208
+__cÚ¡
+ *
+__»¡riù
+
+__fmt
+, 
+tm
+ *
+__
+)
+
+209
+__THROW
+;
+
+212 #ifdeà
+__USE_XOPEN2K8
+
+
+215 
+ ~<xloÿË.h
+>
+
+217
+size_t
+
+ $¡ráime_l
+ (*
+__»¡riù
+
+__s
+,
+size_t
+
+__maxsize
+,
+
+218
+__cÚ¡
+ *
+__»¡riù
+
+__fÜm©
+,
+
+219
+__cÚ¡
+ 
+tm
+ *
+__»¡riù
+
+__
+,
+
+220
+__loÿË_t
+
+__loc
+__THROW
+;
+
+223 #ifdeà
+__USE_GNU
+
+
+224 *
+ $¡½time_l
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__s
+,
+
+225
+__cÚ¡
+ *
+__»¡riù
+
+__fmt
+, 
+tm
+ *
+__
+,
+
+226
+__loÿË_t
+
+__loc
+__THROW
+;
+
+230
+__BEGIN_NAMESPACE_STD
+
+
+233 
+tm
+ *
+ $gmtime
+ (
+__cÚ¡
+
+time_t
+ *
+__tim”
+__THROW
+;
+
+237 
+tm
+ *
+ $loÿÉime
+ (
+__cÚ¡
+
+time_t
+ *
+__tim”
+__THROW
+;
+
+238
+__END_NAMESPACE_STD
+
+
+240 #ià
+defšed
+
+__USE_POSIX
+ || defšed
+__USE_MISC
+
+
+243 
+tm
+ *
+ $gmtime_r
+ (
+__cÚ¡
+
+time_t
+ *
+__»¡riù
+
+__tim”
+,
+
+244 
+tm
+ *
+__»¡riù
+
+__
+__THROW
+;
+
+248 
+tm
+ *
+ $loÿÉime_r
+ (
+__cÚ¡
+
+time_t
+ *
+__»¡riù
+
+__tim”
+,
+
+249 
+tm
+ *
+__»¡riù
+
+__
+__THROW
+;
+
+252
+__BEGIN_NAMESPACE_STD
+
+
+255 *
+ $asùime
+ (
+__cÚ¡
+ 
+tm
+ *
+__
+__THROW
+;
+
+258 *
+ $ùime
+ (
+__cÚ¡
+
+time_t
+ *
+__tim”
+__THROW
+;
+
+259
+__END_NAMESPACE_STD
+
+
+261 #ià
+defšed
+
+__USE_POSIX
+ || defšed
+__USE_MISC
+
+
+266 *
+ $asùime_r
+ (
+__cÚ¡
+ 
+tm
+ *
+__»¡riù
+
+__
+,
+
+267 *
+__»¡riù
+
+__buf
+__THROW
+;
+
+270 *
+ $ùime_r
+ (
+__cÚ¡
+
+time_t
+ *
+__»¡riù
+
+__tim”
+,
+
+271 *
+__»¡riù
+
+__buf
+__THROW
+;
+
+276 *
+__tzÇme
+[2];
+
+277 
+__daylight
+;
+
+278 
+__timezÚe
+;
+
+281 #ifdef
+__USE_POSIX
+
+
+283 *
+tzÇme
+[2];
+
+287 
+ $tz£t
+ (è
+__THROW
+;
+
+290 #ià
+defšed
+
+__USE_SVID
+ || defšed
+__USE_XOPEN
+
+
+291 
+daylight
+;
+
+292 
+timezÚe
+;
+
+295 #ifdeà
+__USE_SVID
+
+
+298 
+ $¡ime
+ (
+__cÚ¡
+
+time_t
+ *
+__wh’
+__THROW
+;
+
+304 
+ #__i¦—p
+(
+y—r
+) \
+
+305 ((
+y—r
+è% 4 =ð0 && ((y—rè% 100 !ð0 || (y—rè% 400 =ð0))
+
+ )
+
+308 #ifdeà
+__USE_MISC
+
+
+313
+time_t
+
+ $timegm
+ (
+tm
+ *
+__
+__THROW
+;
+
+316
+time_t
+
+ $tim–oÿl
+ (
+tm
+ *
+__
+__THROW
+;
+
+319 
+ $dysize
+ (
+__y—r
+__THROW
+
+ `__©Œibu‹__
+ ((
+__cÚ¡__
+));
+
+323 #ifdeà
+__USE_POSIX199309
+
+
+328 
+ `Çno¦“p
+ (
+__cÚ¡
+ 
+time¥ec
+ *
+__»que¡ed_time
+,
+
+329 
+time¥ec
+ *
+__»maššg
+);
+
+333 
+ $þock_g‘»s
+ (
+þockid_t
+
+__þock_id
+, 
+time¥ec
+ *
+__»s
+__THROW
+;
+
+336 
+ $þock_g‘time
+ (
+þockid_t
+
+__þock_id
+, 
+time¥ec
+ *
+__
+__THROW
+;
+
+339 
+ $þock_£‰ime
+ (
+þockid_t
+
+__þock_id
+,
+__cÚ¡
+ 
+time¥ec
+ *
+__
+)
+
+340
+__THROW
+;
+
+342 #ifdeà
+__USE_XOPEN2K
+
+
+347 
+ `þock_Çno¦“p
+ (
+þockid_t
+
+__þock_id
+, 
+__æags
+,
+
+348
+__cÚ¡
+ 
+time¥ec
+ *
+__»q
+,
+
+349 
+time¥ec
+ *
+__»m
+);
+
+352 
+ $þock_g‘ýuþockid
+ (
+pid_t
+
+__pid
+,
+þockid_t
+ *
+__þock_id
+__THROW
+;
+
+357 
+ $tim”_ü—‹
+ (
+þockid_t
+
+__þock_id
+,
+
+358 
+sigev’t
+ *
+__»¡riù
+
+__evp
+,
+
+359
+tim”_t
+ *
+__»¡riù
+
+__tim”id
+__THROW
+;
+
+362 
+ $tim”_d–‘e
+ (
+tim”_t
+
+__tim”id
+__THROW
+;
+
+365 
+ $tim”_£‰ime
+ (
+tim”_t
+
+__tim”id
+, 
+__æags
+,
+
+366
+__cÚ¡
+ 
+™im”¥ec
+ *
+__»¡riù
+
+__v®ue
+,
+
+367 
+™im”¥ec
+ *
+__»¡riù
+
+__ov®ue
+__THROW
+;
+
+370 
+ $tim”_g‘time
+ (
+tim”_t
+
+__tim”id
+, 
+™im”¥ec
+ *
+__v®ue
+)
+
+371
+__THROW
+;
+
+374 
+ $tim”_g‘ov”run
+ (
+tim”_t
+
+__tim”id
+__THROW
+;
+
+378 #ifdeà
+__USE_XOPEN_EXTENDED
+
+
+390 
+g‘d©e_”r
+;
+
+399 
+tm
+ *
+ `g‘d©e
+ (
+__cÚ¡
+ *
+__¡ršg
+);
+
+402 #ifdeà
+__USE_GNU
+
+
+413 
+ `g‘d©e_r
+ (
+__cÚ¡
+ *
+__»¡riù
+
+__¡ršg
+,
+
+414 
+tm
+ *
+__»¡riù
+
+__»sbuå
+);
+
+417
+__END_DECLS
+
+
+ @/usr/include/wctype.h
+
+24 #iâdeà
+_WCTYPE_H
+
+
+26 
+ ~<ã©u»s.h
+>
+
+27 
+ ~<b™s/ty³s.h
+>
+
+29 #iâdeà
+__Ãed_iswxxx
+
+
+30 
+ #_WCTYPE_H
+ 1
+
+ )
+
+33 
+ #__Ãed_wšt_t
+
+
+ )
+
+34 
+ ~<¡ddef.h
+>
+
+38 #iâdeà
+WEOF
+
+
+39 
+ #WEOF
+ (0xffffffffu)
+
+ )
+
+42 #undeà
+__Ãed_iswxxx
+
+
+47 #iâdeà
+__iswxxx_defšed
+
+
+48 
+ #__iswxxx_defšed
+ 1
+
+ )
+
+50
+__BEGIN_NAMESPACE_C99
+
+
+53 
+ twùy³_t
+;
+
+54
+ g__END_NAMESPACE_C99
+
+
+56 #iâdeà
+_ISwb™
+
+
+61 
+ ~<’dŸn.h
+>
+
+62 #ià
+__BYTE_ORDER
+ =ð
+__BIG_ENDIAN
+
+
+63 
+ #_ISwb™
+(
+b™
+è(1 << (b™))
+
+ )
+
+65 
+ #_ISwb™
+(
+b™
+) \
+
+66 ((
+b™
+) < 8 ? () ((1UL << (bit)) << 24) \
+
+67 : ((
+b™
+) < 16 ? () ((1UL << (bit)) << 8) \
+
+68 : ((
+b™
+) < 24 ? () ((1UL << (bit)) >> 8) \
+
+69 : (è((1UL << (
+b™
+)è>> 24))))
+
+ )
+
+74
+ m__ISwuµ”
+ = 0,
+
+75
+ m__ISwlow”
+ = 1,
+
+76
+ m__ISw®pha
+ = 2,
+
+77
+ m__ISwdig™
+ = 3,
+
+78
+ m__ISwxdig™
+ = 4,
+
+79
+ m__ISw¥aû
+ = 5,
+
+80
+ m__ISw´št
+ = 6,
+
+81
+ m__ISwg¿ph
+ = 7,
+
+82
+ m__ISwbÏnk
+ = 8,
+
+83
+ m__ISwúŒl
+ = 9,
+
+84
+ m__ISwpunù
+ = 10,
+
+85
+ m__ISw®num
+ = 11,
+
+87
+ m_ISwuµ”
+ =
+_ISwb™
+ (
+__ISwuµ”
+),
+
+88
+ m_ISwlow”
+ =
+_ISwb™
+ (
+__ISwlow”
+),
+
+89
+ m_ISw®pha
+ =
+_ISwb™
+ (
+__ISw®pha
+),
+
+90
+ m_ISwdig™
+ =
+_ISwb™
+ (
+__ISwdig™
+),
+
+91
+ m_ISwxdig™
+ =
+_ISwb™
+ (
+__ISwxdig™
+),
+
+92
+ m_ISw¥aû
+ =
+_ISwb™
+ (
+__ISw¥aû
+),
+
+93
+ m_ISw´št
+ =
+_ISwb™
+ (
+__ISw´št
+),
+
+94
+ m_ISwg¿ph
+ =
+_ISwb™
+ (
+__ISwg¿ph
+),
+
+95
+ m_ISwbÏnk
+ =
+_ISwb™
+ (
+__ISwbÏnk
+),
+
+96
+ m_ISwúŒl
+ =
+_ISwb™
+ (
+__ISwúŒl
+),
+
+97
+ m_ISwpunù
+ =
+_ISwb™
+ (
+__ISwpunù
+),
+
+98
+ m_ISw®num
+ =
+_ISwb™
+ (
+__ISw®num
+)
+
+103
+__BEGIN_DECLS
+
+
+105
+__BEGIN_NAMESPACE_C99
+
+
+112 
+ $isw®num
+ (
+wšt_t
+
+__wc
+__THROW
+;
+
+118 
+ $isw®pha
+ (
+wšt_t
+
+__wc
+__THROW
+;
+
+121 
+ $iswúŒl
+ (
+wšt_t
+
+__wc
+__THROW
+;
+
+125 
+ $iswdig™
+ (
+wšt_t
+
+__wc
+__THROW
+;
+
+129 
+ $iswg¿ph
+ (
+wšt_t
+
+__wc
+__THROW
+;
+
+134 
+ $iswlow”
+ (
+wšt_t
+
+__wc
+__THROW
+;
+
+137 
+ $isw´št
+ (
+wšt_t
+
+__wc
+__THROW
+;
+
+142 
+ $iswpunù
+ (
+wšt_t
+
+__wc
+__THROW
+;
+
+147 
+ $isw¥aû
+ (
+wšt_t
+
+__wc
+__THROW
+;
+
+152 
+ $iswuµ”
+ (
+wšt_t
+
+__wc
+__THROW
+;
+
+157 
+ $iswxdig™
+ (
+wšt_t
+
+__wc
+__THROW
+;
+
+162 #ifdeà
+__USE_ISOC99
+
+
+163 
+ $iswbÏnk
+ (
+wšt_t
+
+__wc
+__THROW
+;
+
+172
+wùy³_t
+
+ $wùy³
+ (
+__cÚ¡
+ *
+__´Ý”ty
+__THROW
+;
+
+176 
+ $iswùy³
+ (
+wšt_t
+
+__wc
+,
+wùy³_t
+
+__desc
+__THROW
+;
+
+177
+__END_NAMESPACE_C99
+
+
+184
+__BEGIN_NAMESPACE_C99
+
+
+187 
+__cÚ¡
+
+ t__št32_t
+ *
+ twù¿ns_t
+;
+
+188
+__END_NAMESPACE_C99
+
+
+189 #ifdeà
+__USE_GNU
+
+
+190
+ $__USING_NAMESPACE_C99
+(
+wù¿ns_t
+)
+
+193
+__BEGIN_NAMESPACE_C99
+
+
+195
+wšt_t
+
+ $towlow”
+ (
+wšt_t
+
+__wc
+__THROW
+;
+
+198
+wšt_t
+
+ $towuµ”
+ (
+wšt_t
+
+__wc
+__THROW
+;
+
+199
+__END_NAMESPACE_C99
+
+
+201
+__END_DECLS
+
+
+208 #ifdeà
+_WCTYPE_H
+
+
+214
+__BEGIN_DECLS
+
+
+216
+__BEGIN_NAMESPACE_C99
+
+
+219
+wù¿ns_t
+
+ $wù¿ns
+ (
+__cÚ¡
+ *
+__´Ý”ty
+__THROW
+;
+
+222
+wšt_t
+
+ $towù¿ns
+ (
+wšt_t
+
+__wc
+,
+wù¿ns_t
+
+__desc
+__THROW
+;
+
+223
+__END_NAMESPACE_C99
+
+
+225 #ifdeà
+__USE_XOPEN2K8
+
+
+227 
+ ~<xloÿË.h
+>
+
+231 
+ $isw®num_l
+ (
+wšt_t
+
+__wc
+,
+__loÿË_t
+
+__loÿË
+__THROW
+;
+
+237 
+ $isw®pha_l
+ (
+wšt_t
+
+__wc
+,
+__loÿË_t
+
+__loÿË
+__THROW
+;
+
+240 
+ $iswúŒl_l
+ (
+wšt_t
+
+__wc
+,
+__loÿË_t
+
+__loÿË
+__THROW
+;
+
+244 
+ $iswdig™_l
+ (
+wšt_t
+
+__wc
+,
+__loÿË_t
+
+__loÿË
+__THROW
+;
+
+248 
+ $iswg¿ph_l
+ (
+wšt_t
+
+__wc
+,
+__loÿË_t
+
+__loÿË
+__THROW
+;
+
+253 
+ $iswlow”_l
+ (
+wšt_t
+
+__wc
+,
+__loÿË_t
+
+__loÿË
+__THROW
+;
+
+256 
+ $isw´št_l
+ (
+wšt_t
+
+__wc
+,
+__loÿË_t
+
+__loÿË
+__THROW
+;
+
+261 
+ $iswpunù_l
+ (
+wšt_t
+
+__wc
+,
+__loÿË_t
+
+__loÿË
+__THROW
+;
+
+266 
+ $isw¥aû_l
+ (
+wšt_t
+
+__wc
+,
+__loÿË_t
+
+__loÿË
+__THROW
+;
+
+271 
+ $iswuµ”_l
+ (
+wšt_t
+
+__wc
+,
+__loÿË_t
+
+__loÿË
+__THROW
+;
+
+276 
+ $iswxdig™_l
+ (
+wšt_t
+
+__wc
+,
+__loÿË_t
+
+__loÿË
+__THROW
+;
+
+281 
+ $iswbÏnk_l
+ (
+wšt_t
+
+__wc
+,
+__loÿË_t
+
+__loÿË
+__THROW
+;
+
+285
+wùy³_t
+
+ $wùy³_l
+ (
+__cÚ¡
+ *
+__´Ý”ty
+,
+__loÿË_t
+
+__loÿË
+)
+
+286
+__THROW
+;
+
+290 
+ $iswùy³_l
+ (
+wšt_t
+
+__wc
+,
+wùy³_t
+
+__desc
+,
+__loÿË_t
+
+__loÿË
+)
+
+291
+__THROW
+;
+
+299
+wšt_t
+
+ $towlow”_l
+ (
+wšt_t
+
+__wc
+,
+__loÿË_t
+
+__loÿË
+__THROW
+;
+
+302
+wšt_t
+
+ $towuµ”_l
+ (
+wšt_t
+
+__wc
+,
+__loÿË_t
+
+__loÿË
+__THROW
+;
+
+306
+wù¿ns_t
+
+ $wù¿ns_l
+ (
+__cÚ¡
+ *
+__´Ý”ty
+,
+__loÿË_t
+
+__loÿË
+)
+
+307
+__THROW
+;
+
+310
+wšt_t
+
+ $towù¿ns_l
+ (
+wšt_t
+
+__wc
+,
+wù¿ns_t
+
+__desc
+,
+
+311
+__loÿË_t
+
+__loÿË
+__THROW
+;
+
+315
+__END_DECLS
+
+
+ @/usr/include/bits/errno.h
+
+20 #ifdeà
+_ERRNO_H
+
+
+22 #undeà
+EDOM
+
+
+23 #undeà
+EILSEQ
+
+
+24 #undeà
+ERANGE
+
+
+25 
+ ~<lšux/”ºo.h
+>
+
+28 
+ #ENOTSUP
+
+EOPNOTSUPP
+
+
+ )
+
+31 #iâdeà
+ECANCELED
+
+
+32 
+ #ECANCELED
+ 125
+
+ )
+
+36 #iâdeà
+EOWNERDEAD
+
+
+37 
+ #EOWNERDEAD
+ 130
+
+ )
+
+38 
+ #ENOTRECOVERABLE
+ 131
+
+ )
+
+41 #iâdeà
+__ASSEMBLER__
+
+
+43 *
+ $__”ºo_loÿtiÚ
+ (è
+__THROW
+
+ `__©Œibu‹__
+ ((
+__cÚ¡__
+));
+
+45 #ià!
+defšed
+
+_LIBC
+ || defšed
+_LIBC_REENTRANT
+
+
+47 
+ #Ӽo
+ (*
+ `__”ºo_loÿtiÚ
+ ())
+
+ )
+
+52 #ià!
+defšed
+
+_ERRNO_H
+ && defšed
+__Ãed_Em©h
+
+
+56 
+ #EDOM
+ 33
+
+ )
+
+57 
+ #EILSEQ
+ 84
+
+ )
+
+58 
+ #ERANGE
+ 34
+
+ )
+
+ @/usr/include/bits/select.h
+
+19 #iâdeà
+_SYS_SELECT_H
+
+
+23 
+ ~<b™s/wÜdsize.h
+>
+
+26 #ià
+defšed
+
+__GNUC__
+ && __GNUC__ >= 2
+
+28 #ià
+__WORDSIZE
+ == 64
+
+29 
+ #__FD_ZERO_STOS
+ "¡osq"
+
+ )
+
+31 
+ #__FD_ZERO_STOS
+ "¡o¦"
+
+ )
+
+34 
+ #__FD_ZERO
+(
+fd¥
+) \
+
+36 
+__d0
+,
+__d1
+; \
+
+37
+__asm__
+
+ `__vÞ©že__
+ ("þd;„•; "
+__FD_ZERO_STOS
+ \
+
+38 : "=c" (
+__d0
+), "=D" (
+__d1
+) \
+
+39 : "a" (0), "0" ( (
+fd_£t
+) \
+
+40 /  (
+__fd_mask
+)), \
+
+41 "1" (&
+ `__FDS_BITS
+ (
+fd¥
+)[0]) \
+
+43 } 0)
+
+ )
+
+49 
+ #__FD_ZERO
+(
+£t
+) \
+
+51 
+__i
+; \
+
+52
+fd_£t
+ *
+__¬r
+ = (
+£t
+); \
+
+53 
+__i
+ = 0; __˜<  (
+fd_£t
+è/  (
+__fd_mask
+); ++__i) \
+
+54
+ `__FDS_BITS
+ (
+__¬r
+)[
+__i
+] = 0; \
+
+55 } 0)
+
+ )
+
+59 
+ #__FD_SET
+(
+d
+,
+£t
+è(
+ `__FDS_BITS
+ (£t)[
+ `__FDELT
+ (d)] |ð
+ `__FDMASK
+ (d))
+
+ )
+
+60 
+ #__FD_CLR
+(
+d
+,
+£t
+è(
+ `__FDS_BITS
+ (£t)[
+ `__FDELT
+ (d)] &ð~
+ `__FDMASK
+ (d))
+
+ )
+
+61 
+ #__FD_ISSET
+(
+d
+,
+£t
+) \
+
+62 ((
+ `__FDS_BITS
+ (
+£t
+)[
+ `__FDELT
+ (
+d
+)] &
+ `__FDMASK
+ (d)è!ð0)
+
+ )
+
+ @/usr/include/bits/setjmp.h
+
+20 #iâdeà
+_BITS_SETJMP_H
+
+
+21 
+ #_BITS_SETJMP_H
+ 1
+
+ )
+
+23 #ià!
+defšed
+
+_SETJMP_H
+ && !defšed
+_PTHREAD_H
+
+
+27 
+ ~<b™s/wÜdsize.h
+>
+
+29 #iâdeà
+_ASM
+
+
+31 #ià
+__WORDSIZE
+ == 64
+
+32 
+ t__jmp_buf
+[8];
+
+34 
+ t__jmp_buf
+[6];
+
+ @/usr/include/bits/sigset.h
+
+21 #iâdef
+_SIGSET_H_ty³s
+
+
+22 
+ #_SIGSET_H_ty³s
+ 1
+
+ )
+
+24 
+ t__sig_©omic_t
+;
+
+28 
+ #_SIGSET_NWORDS
+ (1024 / (8 *  ()))
+
+ )
+
+31 
+ m__v®
+[
+_SIGSET_NWORDS
+];
+
+32 }
+ t__sig£t_t
+;
+
+43 #ià!
+defšed
+
+_SIGSET_H_âs
+ && defšed
+_SIGNAL_H
+
+
+44 
+ #_SIGSET_H_âs
+ 1
+
+ )
+
+46 #iâdeà
+_EXTERN_INLINE
+
+
+47 
+ #_EXTERN_INLINE
+
+__ex‹º_šlše
+
+
+ )
+
+51 
+ #__sigmask
+(
+sig
+) \
+
+52 (((è1è<< (((
+sig
+è- 1è% (8 *  ())))
+
+ )
+
+55 
+ #__sigwÜd
+(
+sig
+è(((sigè- 1è/ (8 *  ()))
+
+ )
+
+57 #ià
+defšed
+
+__GNUC__
+ && __GNUC__ >= 2
+
+58 
+ #__sigem±y£t
+(
+£t
+) \
+
+59 (
+ `__ex‹nsiÚ__
+ ({ 
+__út
+ =
+_SIGSET_NWORDS
+; \
+
+60
+sig£t_t
+ *
+__£t
+ = (
+£t
+); \
+
+61 --
+__út
+ >ð0è
+__£t
+->
+__v®
+[__cnt] = 0; \
+
+62 0; }))
+
+ )
+
+63 
+ #__sigfžl£t
+(
+£t
+) \
+
+64 (
+ `__ex‹nsiÚ__
+ ({ 
+__út
+ =
+_SIGSET_NWORDS
+; \
+
+65
+sig£t_t
+ *
+__£t
+ = (
+£t
+); \
+
+66 --
+__út
+ >ð0è
+__£t
+->
+__v®
+[__cnt] = ~0UL; \
+
+67 0; }))
+
+ )
+
+69 #ifdeà
+__USE_GNU
+
+
+73 
+ #__sigi£m±y£t
+(
+£t
+) \
+
+74 (
+ `__ex‹nsiÚ__
+ ({ 
+__út
+ =
+_SIGSET_NWORDS
+; \
+
+75 cÚ¡
+sig£t_t
+ *
+__£t
+ = (
+£t
+); \
+
+76 
+__»t
+ =
+__£t
+->
+__v®
+[--
+__út
+]; \
+
+77 !
+__»t
+ && --
+__út
+ >= 0) \
+
+78
+__»t
+ =
+__£t
+->
+__v®
+[
+__út
+]; \
+
+79
+__»t
+ =ð0; }))
+
+ )
+
+80 
+ #__sigªd£t
+(
+de¡
+,
+Ëá
+,
+right
+) \
+
+81 (
+ `__ex‹nsiÚ__
+ ({ 
+__út
+ =
+_SIGSET_NWORDS
+; \
+
+82
+sig£t_t
+ *
+__de¡
+ = (
+de¡
+); \
+
+83 cÚ¡
+sig£t_t
+ *
+__Ëá
+ = (
+Ëá
+); \
+
+84 cÚ¡
+sig£t_t
+ *
+__right
+ = (
+right
+); \
+
+85 --
+__út
+ >= 0) \
+
+86
+__de¡
+->
+__v®
+[
+__út
+] = (
+__Ëá
+->__val[__cnt] \
+
+87 &
+__right
+->
+__v®
+[
+__út
+]); \
+
+88 0; }))
+
+ )
+
+89 
+ #__sigܣt
+(
+de¡
+,
+Ëá
+,
+right
+) \
+
+90 (
+ `__ex‹nsiÚ__
+ ({ 
+__út
+ =
+_SIGSET_NWORDS
+; \
+
+91
+sig£t_t
+ *
+__de¡
+ = (
+de¡
+); \
+
+92 cÚ¡
+sig£t_t
+ *
+__Ëá
+ = (
+Ëá
+); \
+
+93 cÚ¡
+sig£t_t
+ *
+__right
+ = (
+right
+); \
+
+94 --
+__út
+ >= 0) \
+
+95
+__de¡
+->
+__v®
+[
+__út
+] = (
+__Ëá
+->__val[__cnt] \
+
+96 |
+__right
+->
+__v®
+[
+__út
+]); \
+
+97 0; }))
+
+ )
+
+104 
+__sigismemb”
+ (
+__cÚ¡
+
+__sig£t_t
+ *, );
+
+105 
+__sigadd£t
+ (
+__sig£t_t
+ *, );
+
+106 
+__sigd–£t
+ (
+__sig£t_t
+ *, );
+
+108 #ifdeà
+__USE_EXTERN_INLINES
+
+
+109 
+ #__SIGSETFN
+(
+NAME
+,
+BODY
+,
+CONST
+) \
+
+110
+_EXTERN_INLINE
+ \
+
+111
+ `NAME
+ (
+CONST
+
+__sig£t_t
+ *
+__£t
+, 
+__sig
+) \
+
+113 
+__mask
+ =
+ `__sigmask
+ (
+__sig
+); \
+
+114 
+__wÜd
+ =
+ `__sigwÜd
+ (
+__sig
+); \
+
+115 
+BODY
+; \
+
+116 }
+
+ )
+
+118
+__SIGSETFN
+ (
+__sigismemb”
+, (
+__£t
+->
+__v®
+[
+__wÜd
+] &
+__mask
+è? 1 : 0,
+__cÚ¡
+)
+
+119
+__SIGSETFN
+ (
+__sigadd£t
+, ((
+__£t
+->
+__v®
+[
+__wÜd
+] |ð
+__mask
+), 0), )
+
+120
+__SIGSETFN
+ (
+__sigd–£t
+, ((
+__£t
+->
+__v®
+[
+__wÜd
+] &ð~
+__mask
+), 0), )
+
+122 #undeà
+__SIGSETFN
+
+
+ @/usr/include/bits/time.h
+
+24 #iâdeà
+__Ãed_timev®
+
+
+25 #iâdeà
+_BITS_TIME_H
+
+
+26 
+ #_BITS_TIME_H
+ 1
+
+ )
+
+34 
+ #CLOCKS_PER_SEC
+ 1000000l
+
+ )
+
+36 #ià!
+defšed
+
+__STRICT_ANSI__
+ && !defšed
+__USE_XOPEN2K
+
+
+39 
+ ~<b™s/ty³s.h
+>
+
+40 
+__syscÚf
+ ();
+
+41 
+ #CLK_TCK
+ ((
+__þock_t
+ `__syscÚf
+ (2)è
+
+ )
+
+44 #ifdeà
+__USE_POSIX199309
+
+
+46 
+ #CLOCK_REALTIME
+ 0
+
+ )
+
+48 
+ #CLOCK_MONOTONIC
+ 1
+
+ )
+
+50 
+ #CLOCK_PROCESS_CPUTIME_ID
+ 2
+
+ )
+
+52 
+ #CLOCK_THREAD_CPUTIME_ID
+ 3
+
+ )
+
+55 
+ #TIMER_ABSTIME
+ 1
+
+ )
+
+61 #ifdeà
+__Ãed_timev®
+
+
+62 #undeà
+__Ãed_timev®
+
+
+63 #iâdeà
+_STRUCT_TIMEVAL
+
+
+64 
+ #_STRUCT_TIMEVAL
+ 1
+
+ )
+
+65 
+ ~<b™s/ty³s.h
+>
+
+69 
+ stimev®
+
+
+71
+__time_t
+
+ mtv_£c
+;
+
+72
+__su£cÚds_t
+
+ mtv_u£c
+;
+
+ @/usr/include/sched.h
+
+20 #iâdef
+_SCHED_H
+
+
+21 
+ #_SCHED_H
+ 1
+
+ )
+
+23 
+ ~<ã©u»s.h
+>
+
+26 
+ ~<b™s/ty³s.h
+>
+
+28 
+ #__Ãed_size_t
+
+
+ )
+
+29 
+ ~<¡ddef.h
+>
+
+31 
+ #__Ãed_time¥ec
+
+
+ )
+
+32 
+ ~<time.h
+>
+
+35 
+ ~<b™s/sched.h
+>
+
+37 
+ #sched_´iÜ™y
+
+__sched_´iÜ™y
+
+
+ )
+
+40
+__BEGIN_DECLS
+
+
+43 
+ $sched_£¬am
+ (
+__pid_t
+
+__pid
+,
+__cÚ¡
+ 
+sched_·¿m
+ *
+__·¿m
+)
+
+44
+__THROW
+;
+
+47 
+ $sched_g‘·¿m
+ (
+__pid_t
+
+__pid
+, 
+sched_·¿m
+ *
+__·¿m
+__THROW
+;
+
+50 
+ $sched_£tscheduËr
+ (
+__pid_t
+
+__pid
+, 
+__pÞicy
+,
+
+51
+__cÚ¡
+ 
+sched_·¿m
+ *
+__·¿m
+__THROW
+;
+
+54 
+ $sched_g‘scheduËr
+ (
+__pid_t
+
+__pid
+__THROW
+;
+
+57 
+ $sched_y›ld
+ (è
+__THROW
+;
+
+60 
+ $sched_g‘_´iÜ™y_max
+ (
+__®gÜ™hm
+__THROW
+;
+
+63 
+ $sched_g‘_´iÜ™y_mš
+ (
+__®gÜ™hm
+__THROW
+;
+
+66 
+ $sched_¼_g‘_š‹rv®
+ (
+__pid_t
+
+__pid
+, 
+time¥ec
+ *
+__t
+__THROW
+;
+
+69 #ifdeà
+__USE_GNU
+
+
+71 
+ #CPU_SETSIZE
+
+__CPU_SETSIZE
+
+
+ )
+
+72 
+ #CPU_SET
+(
+ýu
+,
+ýu£
+ `__CPU_SET_S
+ (ýu,  (
+ýu_£t_t
+), cpu£)
+
+ )
+
+73 
+ #CPU_CLR
+(
+ýu
+,
+ýu£
+ `__CPU_CLR_S
+ (ýu,  (
+ýu_£t_t
+), cpu£)
+
+ )
+
+74 
+ #CPU_ISSET
+(
+ýu
+,
+ýu£
+ `__CPU_ISSET_S
+ (ýu,  (
+ýu_£t_t
+), \
+
+75
+ýu£
+)
+
+ )
+
+76 
+ #CPU_ZERO
+(
+ýu£
+ `__CPU_ZERO_S
+ ( (
+ýu_£t_t
+), cpu£)
+
+ )
+
+77 
+ #CPU_COUNT
+(
+ýu£
+ `__CPU_COUNT_S
+ ( (
+ýu_£t_t
+), cpu£)
+
+ )
+
+79 
+ #CPU_SET_S
+(
+ýu
+,
+£tsize
+,
+ýu£
+ `__CPU_SET_S
+ (ýu, s‘size, cpu£)
+
+ )
+
+80 
+ #CPU_CLR_S
+(
+ýu
+,
+£tsize
+,
+ýu£
+ `__CPU_CLR_S
+ (ýu, s‘size, cpu£)
+
+ )
+
+81 
+ #CPU_ISSET_S
+(
+ýu
+,
+£tsize
+,
+ýu£
+ `__CPU_ISSET_S
+ (cpu, setsize, \
+
+82
+ýu£
+)
+
+ )
+
+83 
+ #CPU_ZERO_S
+(
+£tsize
+,
+ýu£
+ `__CPU_ZERO_S
+ (£tsize, cpu£)
+
+ )
+
+84 
+ #CPU_COUNT_S
+(
+£tsize
+,
+ýu£
+ `__CPU_COUNT_S
+ (£tsize, cpu£)
+
+ )
+
+86 
+ #CPU_EQUAL
+(
+ýu£1
+,
+ýu£2
+) \
+
+87
+ `__CPU_EQUAL_S
+ ( (
+ýu_£t_t
+),
+ýu£1
+,
+ýu£2
+)
+
+ )
+
+88 
+ #CPU_EQUAL_S
+(
+£tsize
+,
+ýu£1
+,
+ýu£2
+) \
+
+89
+ `__CPU_EQUAL_S
+ (
+£tsize
+,
+ýu£1
+,
+ýu£2
+)
+
+ )
+
+91 
+ #CPU_AND
+(
+de¡£t
+,
+¤c£t1
+,
+¤c£t2
+) \
+
+92
+ `__CPU_OP_S
+ ( (
+ýu_£t_t
+),
+de¡£t
+,
+¤c£t1
+,
+¤c£t2
+, &)
+
+ )
+
+93 
+ #CPU_OR
+(
+de¡£t
+,
+¤c£t1
+,
+¤c£t2
+) \
+
+94
+ `__CPU_OP_S
+ ( (
+ýu_£t_t
+),
+de¡£t
+,
+¤c£t1
+,
+¤c£t2
+, |)
+
+ )
+
+95 
+ #CPU_XOR
+(
+de¡£t
+,
+¤c£t1
+,
+¤c£t2
+) \
+
+96
+ `__CPU_OP_S
+ ( (
+ýu_£t_t
+),
+de¡£t
+,
+¤c£t1
+,
+¤c£t2
+, ^)
+
+ )
+
+97 
+ #CPU_AND_S
+(
+£tsize
+,
+de¡£t
+,
+¤c£t1
+,
+¤c£t2
+) \
+
+98
+ `__CPU_OP_S
+ (
+£tsize
+,
+de¡£t
+,
+¤c£t1
+,
+¤c£t2
+, &)
+
+ )
+
+99 
+ #CPU_OR_S
+(
+£tsize
+,
+de¡£t
+,
+¤c£t1
+,
+¤c£t2
+) \
+
+100
+ `__CPU_OP_S
+ (
+£tsize
+,
+de¡£t
+,
+¤c£t1
+,
+¤c£t2
+, |)
+
+ )
+
+101 
+ #CPU_XOR_S
+(
+£tsize
+,
+de¡£t
+,
+¤c£t1
+,
+¤c£t2
+) \
+
+102
+ `__CPU_OP_S
+ (
+£tsize
+,
+de¡£t
+,
+¤c£t1
+,
+¤c£t2
+, ^)
+
+ )
+
+104 
+ #CPU_ALLOC_SIZE
+(
+couÁ
+ `__CPU_ALLOC_SIZE
+ (couÁ)
+
+ )
+
+105 
+ #CPU_ALLOC
+(
+couÁ
+ `__CPU_ALLOC
+ (couÁ)
+
+ )
+
+106 
+ #CPU_FREE
+(
+ýu£t
+ `__CPU_FREE
+ (ýu£t)
+
+ )
+
+110 
+ $sched_£ffš™y
+ (
+__pid_t
+
+__pid
+,
+size_t
+
+__ýu£tsize
+,
+
+111
+__cÚ¡
+
+ýu_£t_t
+ *
+__ýu£t
+__THROW
+;
+
+114 
+ $sched_g‘affš™y
+ (
+__pid_t
+
+__pid
+,
+size_t
+
+__ýu£tsize
+,
+
+115
+ýu_£t_t
+ *
+__ýu£t
+__THROW
+;
+
+118
+__END_DECLS
+
+
+ @/usr/include/signal.h
+
+23 #iâdef
+_SIGNAL_H
+
+
+25 #ià!
+defšed
+
+__Ãed_sig_©omic_t
+ && !defšed
+__Ãed_sig£t_t
+
+
+26 
+ #_SIGNAL_H
+
+
+ )
+
+29 
+ ~<ã©u»s.h
+>
+
+31
+ g__BEGIN_DECLS
+
+
+33 
+ ~<b™s/sig£t.h
+>
+
+37 #ià
+defšed
+
+__Ãed_sig_©omic_t
+ || defšed
+_SIGNAL_H
+
+
+38 #iâdeà
+__sig_©omic_t_defšed
+
+
+39 
+ #__sig_©omic_t_defšed
+
+
+ )
+
+40
+__BEGIN_NAMESPACE_STD
+
+
+41 
+__sig_©omic_t
+
+ tsig_©omic_t
+;
+
+42
+ g__END_NAMESPACE_STD
+
+
+44 #undeà
+__Ãed_sig_©omic_t
+
+
+47 #ià
+defšed
+
+__Ãed_sig£t_t
+ || (defšed
+_SIGNAL_H
+ && defšed
+__USE_POSIX
+)
+
+48 #iâdeà
+__sig£t_t_defšed
+
+
+49 
+ #__sig£t_t_defšed
+
+
+ )
+
+50 
+__sig£t_t
+
+ tsig£t_t
+;
+
+52 #undeà
+__Ãed_sig£t_t
+
+
+55 #ifdeà
+_SIGNAL_H
+
+
+57 
+ ~<b™s/ty³s.h
+>
+
+58 
+ ~<b™s/signum.h
+>
+
+60 #ià
+defšed
+
+__USE_XOPEN
+ || defšed
+__USE_XOPEN2K
+
+
+61 #iâdeà
+__pid_t_defšed
+
+
+62 
+__pid_t
+
+ tpid_t
+;
+
+63 
+ #__pid_t_defšed
+
+
+ )
+
+65 #ifdeà
+__USE_XOPEN
+
+
+67 #iâdeà
+__uid_t_defšed
+
+
+68 
+__uid_t
+
+ tuid_t
+;
+
+69 
+ #__uid_t_defšed
+
+
+ )
+
+73 #ifdeà
+__USE_POSIX199309
+
+
+75 
+ #__Ãed_time¥ec
+
+
+ )
+
+76 
+ ~<time.h
+>
+
+79 
+ ~<b™s/sigšfo.h
+>
+
+84 (*
+ t__sighªdËr_t
+) ();
+
+89
+__sighªdËr_t
+
+ $__sysv_sigÇl
+ (
+__sig
+,
+__sighªdËr_t
+
+__hªdËr
+)
+
+90
+__THROW
+;
+
+91 #ifdeà
+__USE_GNU
+
+
+92
+__sighªdËr_t
+
+ $sysv_sigÇl
+ (
+__sig
+,
+__sighªdËr_t
+
+__hªdËr
+)
+
+93
+__THROW
+;
+
+99
+__BEGIN_NAMESPACE_STD
+
+
+100 #ifdeà
+__USE_BSD
+
+
+101
+__sighªdËr_t
+
+ $sigÇl
+ (
+__sig
+,
+__sighªdËr_t
+
+__hªdËr
+)
+
+102
+__THROW
+;
+
+105 #ifdeà
+__REDIRECT_NTH
+
+
+106
+__sighªdËr_t
+
+ `__REDIRECT_NTH
+ (
+sigÇl
+,
+
+107 (
+__sig
+,
+__sighªdËr_t
+
+__hªdËr
+),
+
+108
+__sysv_sigÇl
+);
+
+110 
+ #sigÇl
+
+__sysv_sigÇl
+
+
+ )
+
+113
+__END_NAMESPACE_STD
+
+
+115 #ifdeà
+__USE_XOPEN
+
+
+118
+__sighªdËr_t
+
+ $bsd_sigÇl
+ (
+__sig
+,
+__sighªdËr_t
+
+__hªdËr
+)
+
+119
+__THROW
+;
+
+125 #ifdeà
+__USE_POSIX
+
+
+126 
+ $kžl
+ (
+__pid_t
+
+__pid
+, 
+__sig
+__THROW
+;
+
+129 #ià
+defšed
+
+__USE_BSD
+ || defšed
+__USE_XOPEN_EXTENDED
+
+
+133 
+ $kžÍg
+ (
+__pid_t
+
+__pg½
+, 
+__sig
+__THROW
+;
+
+136
+__BEGIN_NAMESPACE_STD
+
+
+138 
+ $¿i£
+ (
+__sig
+__THROW
+;
+
+139
+__END_NAMESPACE_STD
+
+
+141 #ifdeà
+__USE_SVID
+
+
+143
+__sighªdËr_t
+
+ $ssigÇl
+ (
+__sig
+,
+__sighªdËr_t
+
+__hªdËr
+)
+
+144
+__THROW
+;
+
+145 
+ $gsigÇl
+ (
+__sig
+__THROW
+;
+
+148 #ià
+defšed
+
+__USE_MISC
+ || defšed
+__USE_XOPEN2K
+
+
+150 
+ `psigÇl
+ (
+__sig
+,
+__cÚ¡
+ *
+__s
+);
+
+153 #ifdeà
+__USE_XOPEN2K
+
+
+155 
+ `psigšfo
+ (
+__cÚ¡
+
+sigšfo_t
+ *
+__pšfo
+, __cÚ¡ *
+__s
+);
+
+168 
+ `__sig·u£
+ (
+__sig_Ü_mask
+, 
+__is_sig
+);
+
+170 #ifdeà
+__FAVOR_BSD
+
+
+173 
+ $sig·u£
+ (
+__mask
+__THROW
+
+__©Œibu‹_d•»ÿ‹d__
+;
+
+175 #ifdeà
+__USE_XOPEN
+
+
+176 #ifdeà
+__GNUC__
+
+
+177 
+ $sig·u£
+ (
+__sig
+ `__asm__
+ ("__xpg_sigpause");
+
+180 
+ #sig·u£
+(
+sig
+ `__sig·u£
+ ((sig), 1)
+
+ )
+
+186 #ifdeà
+__USE_BSD
+
+
+193 
+ #sigmask
+(
+sig
+ `__sigmask
+(sig)
+
+ )
+
+196 
+ $sigblock
+ (
+__mask
+__THROW
+
+__©Œibu‹_d•»ÿ‹d__
+;
+
+199 
+ $sig£tmask
+ (
+__mask
+__THROW
+
+__©Œibu‹_d•»ÿ‹d__
+;
+
+202 
+ $sigg‘mask
+ (è
+__THROW
+
+__©Œibu‹_d•»ÿ‹d__
+;
+
+206 #ifdeà
+__USE_MISC
+
+
+207 
+ #NSIG
+
+_NSIG
+
+
+ )
+
+210 #ifdeà
+__USE_GNU
+
+
+211 
+__sighªdËr_t
+
+ tsighªdËr_t
+;
+
+215 #ifdeà
+__USE_BSD
+
+
+216 
+__sighªdËr_t
+
+ tsig_t
+;
+
+219 #ifdeà
+__USE_POSIX
+
+
+222 
+ $sigem±y£t
+ (
+sig£t_t
+ *
+__£t
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+225 
+ $sigfžl£t
+ (
+sig£t_t
+ *
+__£t
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+228 
+ $sigadd£t
+ (
+sig£t_t
+ *
+__£t
+, 
+__signo
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+231 
+ $sigd–£t
+ (
+sig£t_t
+ *
+__£t
+, 
+__signo
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+234 
+ $sigismemb”
+ (
+__cÚ¡
+
+sig£t_t
+ *
+__£t
+, 
+__signo
+)
+
+235
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+237 #ifdeà
+__USE_GNU
+
+
+239 
+ $sigi£m±y£t
+ (
+__cÚ¡
+
+sig£t_t
+ *
+__£t
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+242 
+ $sigªd£t
+ (
+sig£t_t
+ *
+__£t
+,
+__cÚ¡
+ sig£t_ˆ*
+__Ëá
+,
+
+243
+__cÚ¡
+
+sig£t_t
+ *
+__right
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2, 3));
+
+246 
+ $sigܣt
+ (
+sig£t_t
+ *
+__£t
+,
+__cÚ¡
+ sig£t_ˆ*
+__Ëá
+,
+
+247
+__cÚ¡
+
+sig£t_t
+ *
+__right
+__THROW
+
+ `__nÚnuÎ
+ ((1, 2, 3));
+
+252 
+ ~<b™s/sigaùiÚ.h
+>
+
+255 
+ $sig´ocmask
+ (
+__how
+,
+__cÚ¡
+
+sig£t_t
+ *
+__»¡riù
+
+__£t
+,
+
+256
+sig£t_t
+ *
+__»¡riù
+
+__o£t
+__THROW
+;
+
+263 
+ $sigsu¥’d
+ (
+__cÚ¡
+
+sig£t_t
+ *
+__£t
+ `__nÚnuÎ
+ ((1));
+
+266 
+ $sigaùiÚ
+ (
+__sig
+,
+__cÚ¡
+ 
+sigaùiÚ
+ *
+__»¡riù
+
+__aù
+,
+
+267 
+sigaùiÚ
+ *
+__»¡riù
+
+__ßù
+__THROW
+;
+
+270 
+ $sig³ndšg
+ (
+sig£t_t
+ *
+__£t
+__THROW
+
+ `__nÚnuÎ
+ ((1));
+
+277 
+ $sigwa™
+ (
+__cÚ¡
+
+sig£t_t
+ *
+__»¡riù
+
+__£t
+, *__»¡riù
+__sig
+)
+
+278
+ `__nÚnuÎ
+ ((1, 2));
+
+280 #ifdeà
+__USE_POSIX199309
+
+
+285 
+ $sigwa™šfo
+ (
+__cÚ¡
+
+sig£t_t
+ *
+__»¡riù
+
+__£t
+,
+
+286
+sigšfo_t
+ *
+__»¡riù
+
+__šfo
+ `__nÚnuÎ
+ ((1));
+
+293 
+ $sigtimedwa™
+ (
+__cÚ¡
+
+sig£t_t
+ *
+__»¡riù
+
+__£t
+,
+
+294
+sigšfo_t
+ *
+__»¡riù
+
+__šfo
+,
+
+295
+__cÚ¡
+ 
+time¥ec
+ *
+__»¡riù
+
+__timeout
+)
+
+296
+ `__nÚnuÎ
+ ((1));
+
+300 
+ $sigqueue
+ (
+__pid_t
+
+__pid
+, 
+__sig
+,
+__cÚ¡
+ 
+sigv®
+
+__v®
+)
+
+301
+__THROW
+;
+
+306 #ifdeà
+__USE_BSD
+
+
+310
+__cÚ¡
+ *__cÚ¡
+_sys_sigli¡
+[
+_NSIG
+];
+
+311
+__cÚ¡
+ *__cÚ¡
+sys_sigli¡
+[
+_NSIG
+];
+
+314 
+ ssigvec
+
+
+316
+__sighªdËr_t
+
+sv_hªdËr
+;
+
+317 
+sv_mask
+;
+
+319 
+sv_æags
+;
+
+320 
+ #sv_Ú¡ack
+
+sv_æags
+
+
+ )
+
+324 
+ #SV_ONSTACK
+ (1 << 0)
+
+ )
+
+325 
+ #SV_INTERRUPT
+ (1 << 1)
+
+ )
+
+326 
+ #SV_RESETHAND
+ (1 << 2)
+
+ )
+
+334 
+ $sigvec
+ (
+__sig
+,
+__cÚ¡
+ 
+sigvec
+ *
+__vec
+,
+
+335 
+sigvec
+ *
+__ovec
+__THROW
+;
+
+339 
+ ~<b™s/sigcÚ‹xt.h
+>
+
+342 
+ $sig»tuº
+ (
+sigcÚ‹xt
+ *
+__sý
+__THROW
+;
+
+347 #ià
+defšed
+
+__USE_BSD
+ || defšed
+__USE_XOPEN_EXTENDED
+
+
+348 
+ #__Ãed_size_t
+
+
+ )
+
+349 
+ ~<¡ddef.h
+>
+
+354 
+ $sigš‹¼u±
+ (
+__sig
+, 
+__š‹¼u±
+__THROW
+;
+
+356 
+ ~<b™s/sig¡ack.h
+>
+
+357 #ifdeà
+__USE_XOPEN
+
+
+359 
+ ~<sys/ucÚ‹xt.h
+>
+
+365 
+ $sig¡ack
+ (
+sig¡ack
+ *
+__ss
+, sig¡ack *
+__oss
+)
+
+366
+__THROW
+
+__©Œibu‹_d•»ÿ‹d__
+;
+
+370 
+ $sig®t¡ack
+ (
+__cÚ¡
+ 
+sig®t¡ack
+ *
+__»¡riù
+
+__ss
+,
+
+371 
+sig®t¡ack
+ *
+__»¡riù
+
+__oss
+__THROW
+;
+
+375 #ifdeà
+__USE_XOPEN_EXTENDED
+
+
+379 
+ $sighÞd
+ (
+__sig
+__THROW
+;
+
+382 
+ $sig»l£
+ (
+__sig
+__THROW
+;
+
+385 
+ $sigignÜe
+ (
+__sig
+__THROW
+;
+
+388
+__sighªdËr_t
+
+ $sig£t
+ (
+__sig
+,
+__sighªdËr_t
+
+__di¥
+__THROW
+;
+
+391 #ià
+defšed
+
+__USE_POSIX199506
+ || defšed
+__USE_UNIX98
+
+
+394 
+ ~<b™s/±h»adty³s.h
+>
+
+395 
+ ~<b™s/sigth»ad.h
+>
+
+402 
+ $__libc_cu¼’t_sig¹mš
+ (è
+__THROW
+;
+
+404 
+ $__libc_cu¼’t_sig¹max
+ (è
+__THROW
+;
+
+408
+__END_DECLS
+
+
+ @/usr/include/bits/sched.h
+
+22 #iâdeà
+__Ãed_sched·¿m
+
+
+24 #iâdeà
+_SCHED_H
+
+
+30 
+ #SCHED_OTHER
+ 0
+
+ )
+
+31 
+ #SCHED_FIFO
+ 1
+
+ )
+
+32 
+ #SCHED_RR
+ 2
+
+ )
+
+33 #ifdeà
+__USE_GNU
+
+
+34 
+ #SCHED_BATCH
+ 3
+
+ )
+
+37 #ifdeà
+__USE_MISC
+
+
+39 
+ #CSIGNAL
+ 0x000000fà
+
+ )
+
+40 
+ #CLONE_VM
+ 0x00000100
+
+ )
+
+41 
+ #CLONE_FS
+ 0x00000200
+
+ )
+
+42 
+ #CLONE_FILES
+ 0x00000400
+
+ )
+
+43 
+ #CLONE_SIGHAND
+ 0x00000800
+
+ )
+
+44 
+ #CLONE_PTRACE
+ 0x00002000
+
+ )
+
+45 
+ #CLONE_VFORK
+ 0x00004000
+
+ )
+
+47 
+ #CLONE_PARENT
+ 0x00008000
+
+ )
+
+49 
+ #CLONE_THREAD
+ 0x00010000
+
+ )
+
+50 
+ #CLONE_NEWNS
+ 0x00020000
+
+ )
+
+51 
+ #CLONE_SYSVSEM
+ 0x00040000
+
+ )
+
+52 
+ #CLONE_SETTLS
+ 0x00080000
+
+ )
+
+53 
+ #CLONE_PARENT_SETTID
+ 0x00100000
+
+ )
+
+55 
+ #CLONE_CHILD_CLEARTID
+ 0x00200000
+
+ )
+
+57 
+ #CLONE_DETACHED
+ 0x00400000
+
+ )
+
+58 
+ #CLONE_UNTRACED
+ 0x00800000
+
+ )
+
+60 
+ #CLONE_CHILD_SETTID
+ 0x01000000
+
+ )
+
+62 
+ #CLONE_NEWUTS
+ 0x04000000
+
+ )
+
+63 
+ #CLONE_NEWIPC
+ 0x08000000
+
+ )
+
+64 
+ #CLONE_NEWUSER
+ 0x10000000
+
+ )
+
+65 
+ #CLONE_NEWPID
+ 0x20000000
+
+ )
+
+66 
+ #CLONE_NEWNET
+ 0x40000000
+
+ )
+
+67 
+ #CLONE_IO
+ 0x80000000
+
+ )
+
+71 
+ ssched_·¿m
+
+
+73 
+ m__sched_´iÜ™y
+;
+
+76
+ g__BEGIN_DECLS
+
+
+78 #ifdeà
+__USE_MISC
+
+
+80 
+þÚe
+ ((*
+__â
+è(*
+__¬g
+), *
+__chžd_¡ack
+,
+
+81 
+__æags
+, *
+__¬g
+, ...è
+__THROW
+;
+
+84 
+ $unsh¬e
+ (
+__æags
+__THROW
+;
+
+87 
+ $sched_g‘ýu
+ (è
+__THROW
+;
+
+90
+__END_DECLS
+
+
+94 #ià!
+defšed
+
+__defšed_sched·¿m
+ \
+
+95 && (
+defšed
+
+__Ãed_sched·¿m
+ || defšed
+_SCHED_H
+)
+
+96 
+ #__defšed_sched·¿m
+ 1
+
+ )
+
+98 
+ s__sched_·¿m
+
+
+100 
+__sched_´iÜ™y
+;
+
+102 #undeà
+__Ãed_sched·¿m
+
+
+106 #ià
+defšed
+
+_SCHED_H
+ && !defšed
+__ýu_£t_t_defšed
+
+
+107 
+ #__ýu_£t_t_defšed
+
+
+ )
+
+109 
+ #__CPU_SETSIZE
+ 1024
+
+ )
+
+110 
+ #__NCPUBITS
+ (8 *  (
+__ýu_mask
+))
+
+ )
+
+113 
+ t__ýu_mask
+;
+
+116 
+ #__CPUELT
+(
+ýu
+è((ýuè/
+__NCPUBITS
+)
+
+ )
+
+117 
+ #__CPUMASK
+(
+ýu
+è((
+__ýu_mask
+è1 << ((ýuè%
+__NCPUBITS
+))
+
+ )
+
+122
+__ýu_mask
+
+__b™s
+[
+__CPU_SETSIZE
+ /
+__NCPUBITS
+];
+
+123 }
+ týu_£t_t
+;
+
+126 #ià
+ `__GNUC_PREREQ
+ (2, 91)
+
+127 
+ #__CPU_ZERO_S
+(
+£tsize
+,
+ýu£
+) \
+
+128 dØ
+ `__bužtš_mem£t
+ (
+ýu£
+, '\0',
+£tsize
+); 0)
+
+ )
+
+130 
+ #__CPU_ZERO_S
+(
+£tsize
+,
+ýu£
+) \
+
+132
+size_t
+
+__i
+; \
+
+133
+size_t
+
+__imax
+ = (
+£tsize
+è/  (
+__ýu_mask
+); \
+
+134
+__ýu_mask
+ *
+__b™s
+ = (
+ýu£
+)->__bits; \
+
+135 
+__i
+ = 0; __˜<
+__imax
+; ++__i) \
+
+136
+__b™s
+[
+__i
+] = 0; \
+
+137
+ }
+} 0)
+
+ )
+
+139 
+ #__CPU_SET_S
+(
+ýu
+,
+£tsize
+,
+ýu£
+) \
+
+140 (
+__ex‹nsiÚ__
+ \
+
+141 ({
+size_t
+
+__ýu
+ = (
+ýu
+); \
+
+142
+__ýu
+ < 8 * (
+£tsize
+) \
+
+143 ? (((
+__ýu_mask
+ *è((
+ýu£
+)->
+__b™s
+))[
+ `__CPUELT
+ (
+__ýu
+)] \
+
+144 |ð
+ `__CPUMASK
+ (
+__ýu
+)) \
+
+145 : 0; }))
+
+ )
+
+146 
+ #__CPU_CLR_S
+(
+ýu
+,
+£tsize
+,
+ýu£
+) \
+
+147 (
+__ex‹nsiÚ__
+ \
+
+148 ({
+size_t
+
+__ýu
+ = (
+ýu
+); \
+
+149
+__ýu
+ < 8 * (
+£tsize
+) \
+
+150 ? (((
+__ýu_mask
+ *è((
+ýu£
+)->
+__b™s
+))[
+ `__CPUELT
+ (
+__ýu
+)] \
+
+151 &ð~
+ `__CPUMASK
+ (
+__ýu
+)) \
+
+152 : 0; }))
+
+ )
+
+153 
+ #__CPU_ISSET_S
+(
+ýu
+,
+£tsize
+,
+ýu£
+) \
+
+154 (
+__ex‹nsiÚ__
+ \
+
+155 ({
+size_t
+
+__ýu
+ = (
+ýu
+); \
+
+156
+__ýu
+ < 8 * (
+£tsize
+) \
+
+157 ? ((((
+__cÚ¡
+
+__ýu_mask
+ *è((
+ýu£
+)->
+__b™s
+))[
+ `__CPUELT
+ (
+__ýu
+)] \
+
+158 &
+ `__CPUMASK
+ (
+__ýu
+))) != 0 \
+
+159 : 0; }))
+
+ )
+
+161 
+ #__CPU_COUNT_S
+(
+£tsize
+,
+ýu£
+) \
+
+162
+ `__sched_ýucouÁ
+ (
+£tsize
+,
+ýu£
+)
+
+ )
+
+164 #ià
+__GNUC_PREREQ
+ (2, 91)
+
+165 
+ #__CPU_EQUAL_S
+(
+£tsize
+,
+ýu£1
+,
+ýu£2
+) \
+
+166 (
+ `__bužtš_memcmp
+ (
+ýu£1
+,
+ýu£2
+,
+£tsize
+è=ð0)
+
+ )
+
+168 
+ #__CPU_EQUAL_S
+(
+£tsize
+,
+ýu£1
+,
+ýu£2
+) \
+
+169 (
+__ex‹nsiÚ__
+ \
+
+170 ({
+__cÚ¡
+
+__ýu_mask
+ *
+__¬r1
+ = (
+ýu£1
+)->
+__b™s
+; \
+
+171
+__cÚ¡
+
+__ýu_mask
+ *
+__¬r2
+ = (
+ýu£2
+)->
+__b™s
+; \
+
+172
+size_t
+
+__imax
+ = (
+£tsize
+è/  (
+__ýu_mask
+); \
+
+173
+size_t
+
+__i
+; \
+
+174 
+__i
+ = 0; __˜<
+__imax
+; ++__i) \
+
+175 ià(
+__b™s
+[
+__i
+] != __bits[__i]) \
+
+177
+__i
+ =ð
+__imax
+; }))
+
+ )
+
+180 
+ #__CPU_OP_S
+(
+£tsize
+,
+de¡£t
+,
+¤c£t1
+,
+¤c£t2
+,
+) \
+
+181 (
+__ex‹nsiÚ__
+ \
+
+182 ({
+ýu_£t_t
+ *
+__de¡
+ = (
+de¡£t
+); \
+
+183
+__cÚ¡
+
+__ýu_mask
+ *
+__¬r1
+ = (
+¤c£t1
+)->
+__b™s
+; \
+
+184
+__cÚ¡
+
+__ýu_mask
+ *
+__¬r2
+ = (
+¤c£t2
+)->
+__b™s
+; \
+
+185
+size_t
+
+__imax
+ = (
+£tsize
+è/  (
+__ýu_mask
+); \
+
+186
+size_t
+
+__i
+; \
+
+187 
+__i
+ = 0; __˜<
+__imax
+; ++__i) \
+
+188 ((
+__ýu_mask
+ *è
+__de¡
+->
+__b™s
+)[
+__i
+] =
+__¬r1
+[__i]
+
+__¬r2
+[__i]; \
+
+189
+__de¡
+; }))
+
+ )
+
+191 
+ #__CPU_ALLOC_SIZE
+(
+couÁ
+) \
+
+192 ((((
+couÁ
+è+
+__NCPUBITS
+ - 1è/ __NCPUBITSè*  (
+__ýu_mask
+))
+
+ )
+
+193 
+ #__CPU_ALLOC
+(
+couÁ
+ `__sched_ýu®loc
+ (couÁ)
+
+ )
+
+194 
+ #__CPU_FREE
+(
+ýu£t
+ `__sched_ýuä“
+ (ýu£t)
+
+ )
+
+196
+__BEGIN_DECLS
+
+
+198 
+ $__sched_ýucouÁ
+ (
+size_t
+
+__£tsize
+, cÚ¡
+ýu_£t_t
+ *
+__£
+)
+
+199
+__THROW
+;
+
+200
+ýu_£t_t
+ *
+ $__sched_ýu®loc
+ (
+size_t
+
+__couÁ
+__THROW
+
+__wur
+;
+
+201 
+ $__sched_ýuä“
+ (
+ýu_£t_t
+ *
+__£t
+__THROW
+;
+
+203
+__END_DECLS
+
+
+ @/usr/include/bits/sigaction.h
+
+20 #iâdeà
+_SIGNAL_H
+
+
+25 
+ ssigaùiÚ
+
+
+28 #ifdeà
+__USE_POSIX199309
+
+
+32
+__sighªdËr_t
+
+ m§_hªdËr
+;
+
+34 (*
+ m§_sigaùiÚ
+è(,
+ msigšfo_t
+ *, *);
+
+36
+ m__sigaùiÚ_hªdËr
+;
+
+37 
+ #§_hªdËr
+
+__sigaùiÚ_hªdËr
+.
+§_hªdËr
+
+
+ )
+
+38 
+ #§_sigaùiÚ
+
+__sigaùiÚ_hªdËr
+.
+§_sigaùiÚ
+
+
+ )
+
+40
+__sighªdËr_t
+
+ m§_hªdËr
+;
+
+44
+__sig£t_t
+
+ m§_mask
+;
+
+47 
+ m§_æags
+;
+
+50 (*
+ m§_»¡Ü”
+) ();
+
+54 
+ #SA_NOCLDSTOP
+ 1
+
+ )
+
+55 
+ #SA_NOCLDWAIT
+ 2
+
+ )
+
+56 
+ #SA_SIGINFO
+ 4
+
+ )
+
+58 #ià
+defšed
+
+__USE_UNIX98
+ || defšed
+__USE_MISC
+
+
+59 
+ #SA_ONSTACK
+ 0x08000000
+
+ )
+
+60 
+ #SA_RESTART
+ 0x10000000
+
+ )
+
+61 
+ #SA_NODEFER
+ 0x40000000
+
+ )
+
+63 
+ #SA_RESETHAND
+ 0x80000000
+
+ )
+
+65 #ifdeà
+__USE_MISC
+
+
+66 
+ #SA_INTERRUPT
+ 0x20000000
+
+ )
+
+69 
+ #SA_NOMASK
+
+SA_NODEFER
+
+
+ )
+
+70 
+ #SA_ONESHOT
+
+SA_RESETHAND
+
+
+ )
+
+71 
+ #SA_STACK
+
+SA_ONSTACK
+
+
+ )
+
+75 
+ #SIG_BLOCK
+ 0
+
+ )
+
+76 
+ #SIG_UNBLOCK
+ 1
+
+ )
+
+77 
+ #SIG_SETMASK
+ 2
+
+ )
+
+ @/usr/include/bits/sigcontext.h
+
+19 #iâdeà
+_BITS_SIGCONTEXT_H
+
+
+20 
+ #_BITS_SIGCONTEXT_H
+ 1
+
+ )
+
+22 #ià!
+defšed
+
+_SIGNAL_H
+ && !defšed
+_SYS_UCONTEXT_H
+
+
+26 
+ ~<b™s/wÜdsize.h
+>
+
+28 
+ s_å»g
+
+
+30 
+ msignifiÿnd
+[4];
+
+31 
+ mexpÚ’t
+;
+
+34 
+ s_åx»g
+
+
+36 
+ msignifiÿnd
+[4];
+
+37 
+ mexpÚ’t
+;
+
+38 
+ m·ddšg
+[3];
+
+41 
+ s_xmm»g
+
+
+43
+__ušt32_t
+
+ m–em’t
+[4];
+
+48 #ià
+__WORDSIZE
+ == 32
+
+50 
+ s_å¡©e
+
+
+53
+__ušt32_t
+
+ mcw
+;
+
+54
+__ušt32_t
+
+ msw
+;
+
+55
+__ušt32_t
+
+ mg
+;
+
+56
+__ušt32_t
+
+ moff
+;
+
+57
+__ušt32_t
+
+ mcs£l
+;
+
+58
+__ušt32_t
+
+ md©aoff
+;
+
+59
+__ušt32_t
+
+ md©a£l
+;
+
+60 
+_å»g
+
+ m_¡
+[8];
+
+61 
+ m¡©us
+;
+
+62 
+ mmagic
+;
+
+65
+__ušt32_t
+
+ m_fx¤_’v
+[6];
+
+66
+__ušt32_t
+
+ mmxc¤
+;
+
+67
+__ušt32_t
+
+ mȣrved
+;
+
+68 
+_åx»g
+
+ m_fx¤_¡
+[8];
+
+69 
+_xmm»g
+
+ m_xmm
+[8];
+
+70
+__ušt32_t
+
+ m·ddšg
+[56];
+
+73 #iâdeà
+sigcÚ‹xt_¡ruù
+
+
+78 
+ #sigcÚ‹xt_¡ruù
+
+sigcÚ‹xt
+
+
+ )
+
+81 
+ ssigcÚ‹xt
+
+
+83 
+ mgs
+,
+ m__gsh
+;
+
+84 
+ mfs
+,
+ m__fsh
+;
+
+85 
+ mes
+,
+ m__esh
+;
+
+86 
+ mds
+,
+ m__dsh
+;
+
+87 
+ medi
+;
+
+88 
+ mesi
+;
+
+89 
+ mebp
+;
+
+90 
+ me¥
+;
+
+91 
+ mebx
+;
+
+92 
+ medx
+;
+
+93 
+ mecx
+;
+
+94 
+ m—x
+;
+
+95 
+ mŒ­no
+;
+
+96 
+ m”r
+;
+
+97 
+ me
+;
+
+98 
+ mcs
+,
+ m__csh
+;
+
+99 
+ meæags
+;
+
+100 
+ me¥_©_sigÇl
+;
+
+101 
+ mss
+,
+ m__ssh
+;
+
+102 
+_å¡©e
+ *
+ må¡©e
+;
+
+103 
+ mÞdmask
+;
+
+104 
+ mü2
+;
+
+109 
+ s_å¡©e
+
+
+112
+__ušt16_t
+
+ mcwd
+;
+
+113
+__ušt16_t
+
+ mswd
+;
+
+114
+__ušt16_t
+
+ máw
+;
+
+115
+__ušt16_t
+
+ mfÝ
+;
+
+116
+__ušt64_t
+
+ mr
+;
+
+117
+__ušt64_t
+
+ mrdp
+;
+
+118
+__ušt32_t
+
+ mmxc¤
+;
+
+119
+__ušt32_t
+
+ mmxü_mask
+;
+
+120 
+_åx»g
+
+ m_¡
+[8];
+
+121 
+_xmm»g
+
+ m_xmm
+[16];
+
+122
+__ušt32_t
+
+ m·ddšg
+[24];
+
+125 
+ ssigcÚ‹xt
+
+
+127 
+ mr8
+;
+
+128 
+ mr9
+;
+
+129 
+ mr10
+;
+
+130 
+ mr11
+;
+
+131 
+ mr12
+;
+
+132 
+ mr13
+;
+
+133 
+ mr14
+;
+
+134 
+ mr15
+;
+
+135 
+ mrdi
+;
+
+136 
+ mrsi
+;
+
+137 
+ mrbp
+;
+
+138 
+ mrbx
+;
+
+139 
+ mrdx
+;
+
+140 
+ m¿x
+;
+
+141 
+ mrcx
+;
+
+142 
+ mr¥
+;
+
+143 
+ mr
+;
+
+144 
+ meæags
+;
+
+145 
+ mcs
+;
+
+146 
+ mgs
+;
+
+147 
+ mfs
+;
+
+148 
+ m__·d0
+;
+
+149 
+ m”r
+;
+
+150 
+ mŒ­no
+;
+
+151 
+ mÞdmask
+;
+
+152 
+ mü2
+;
+
+153 
+_å¡©e
+ *
+ må¡©e
+;
+
+154 
+ m__ȣrved1
+ [8];
+
+ @/usr/include/bits/siginfo.h
+
+20 #ià!
+defšed
+
+_SIGNAL_H
+ && !defšed
+__Ãed_sigšfo_t
+ \
+
+21 && !
+defšed
+
+ g__Ãed_sigev’t_t
+
+
+25 
+ ~<b™s/wÜdsize.h
+>
+
+27 #ià(!
+defšed
+
+__have_sigv®_t
+ \
+
+28 && (
+defšed
+
+ g_SIGNAL_H
+ || defšed
+ g__Ãed_sigšfo_t
+ \
+
+29 ||
+defšed
+
+ g__Ãed_sigev’t_t
+))
+
+30 
+ #__have_sigv®_t
+ 1
+
+ )
+
+33 
+ usigv®
+
+
+35 
+ msiv®_št
+;
+
+36 *
+ msiv®_±r
+;
+
+37 }
+ tsigv®_t
+;
+
+40 #ià(!
+defšed
+
+__have_sigšfo_t
+ \
+
+41 && (
+defšed
+
+ g_SIGNAL_H
+ || defšed
+ g__Ãed_sigšfo_t
+))
+
+42 
+ #__have_sigšfo_t
+ 1
+
+ )
+
+44 
+ #__SI_MAX_SIZE
+ 128
+
+ )
+
+45 #ià
+__WORDSIZE
+ == 64
+
+46 
+ #__SI_PAD_SIZE
+ ((
+__SI_MAX_SIZE
+ /  ()è- 4)
+
+ )
+
+48 
+ #__SI_PAD_SIZE
+ ((
+__SI_MAX_SIZE
+ /  ()è- 3)
+
+ )
+
+51 
+ ssigšfo
+
+
+53 
+ msi_signo
+;
+
+54 
+ msi_Ӽo
+;
+
+56 
+ msi_code
+;
+
+60 
+ m_·d
+[
+__SI_PAD_SIZE
+];
+
+65
+__pid_t
+
+ msi_pid
+;
+
+66
+__uid_t
+
+ msi_uid
+;
+
+67 }
+ m_kžl
+;
+
+72 
+ msi_tid
+;
+
+73 
+ msi_ov”run
+;
+
+74
+sigv®_t
+
+ msi_sigv®
+;
+
+75 }
+ m_tim”
+;
+
+80
+__pid_t
+
+ msi_pid
+;
+
+81
+__uid_t
+
+ msi_uid
+;
+
+82
+sigv®_t
+
+ msi_sigv®
+;
+
+83 }
+ m_¹
+;
+
+88
+__pid_t
+
+ msi_pid
+;
+
+89
+__uid_t
+
+ msi_uid
+;
+
+90 
+ msi_¡©us
+;
+
+91
+__þock_t
+
+ msi_utime
+;
+
+92
+__þock_t
+
+ msi_¡ime
+;
+
+93 }
+ m_sigchld
+;
+
+98 *
+ msi_addr
+;
+
+99 }
+ m_sigçuÉ
+;
+
+104 
+ msi_bªd
+;
+
+105 
+ msi_fd
+;
+
+106 }
+ m_sigpÞl
+;
+
+107 }
+ m_sif›lds
+;
+
+108 }
+ tsigšfo_t
+;
+
+112 
+ #si_pid
+
+_sif›lds
+.
+_kžl
+.
+si_pid
+
+
+ )
+
+113 
+ #si_uid
+
+_sif›lds
+.
+_kžl
+.
+si_uid
+
+
+ )
+
+114 
+ #si_tim”id
+
+_sif›lds
+.
+_tim”
+.
+si_tid
+
+
+ )
+
+115 
+ #si_ov”run
+
+_sif›lds
+.
+_tim”
+.
+si_ov”run
+
+
+ )
+
+116 
+ #si_¡©us
+
+_sif›lds
+.
+_sigchld
+.
+si_¡©us
+
+
+ )
+
+117 
+ #si_utime
+
+_sif›lds
+.
+_sigchld
+.
+si_utime
+
+
+ )
+
+118 
+ #si_¡ime
+
+_sif›lds
+.
+_sigchld
+.
+si_¡ime
+
+
+ )
+
+119 
+ #si_v®ue
+
+_sif›lds
+.
+_¹
+.
+si_sigv®
+
+
+ )
+
+120 
+ #si_št
+
+_sif›lds
+.
+_¹
+.
+si_sigv®
+.
+siv®_št
+
+
+ )
+
+121 
+ #si_±r
+
+_sif›lds
+.
+_¹
+.
+si_sigv®
+.
+siv®_±r
+
+
+ )
+
+122 
+ #si_addr
+
+_sif›lds
+.
+_sigçuÉ
+.
+si_addr
+
+
+ )
+
+123 
+ #si_bªd
+
+_sif›lds
+.
+_sigpÞl
+.
+si_bªd
+
+
+ )
+
+124 
+ #si_fd
+
+_sif›lds
+.
+_sigpÞl
+.
+si_fd
+
+
+ )
+
+131
+ mSI_ASYNCNL
+ = -60,
+
+132 
+ #SI_ASYNCNL
+
+SI_ASYNCNL
+
+
+ )
+
+133
+ mSI_TKILL
+ = -6,
+
+134 
+ #SI_TKILL
+
+SI_TKILL
+
+
+ )
+
+135
+ mSI_SIGIO
+,
+
+136 
+ #SI_SIGIO
+
+SI_SIGIO
+
+
+ )
+
+137
+ mSI_ASYNCIO
+,
+
+138 
+ #SI_ASYNCIO
+
+SI_ASYNCIO
+
+
+ )
+
+139
+ mSI_MESGQ
+,
+
+140 
+ #SI_MESGQ
+
+SI_MESGQ
+
+
+ )
+
+141
+ mSI_TIMER
+,
+
+142 
+ #SI_TIMER
+
+SI_TIMER
+
+
+ )
+
+143
+ mSI_QUEUE
+,
+
+144 
+ #SI_QUEUE
+
+SI_QUEUE
+
+
+ )
+
+145
+ mSI_USER
+,
+
+146 
+ #SI_USER
+
+SI_USER
+
+
+ )
+
+147
+ mSI_KERNEL
+ = 0x80
+
+148 
+ #SI_KERNEL
+
+SI_KERNEL
+
+
+ )
+
+155
+ mILL_ILLOPC
+ = 1,
+
+156 
+ #ILL_ILLOPC
+
+ILL_ILLOPC
+
+
+ )
+
+157
+ mILL_ILLOPN
+,
+
+158 
+ #ILL_ILLOPN
+
+ILL_ILLOPN
+
+
+ )
+
+159
+ mILL_ILLADR
+,
+
+160 
+ #ILL_ILLADR
+
+ILL_ILLADR
+
+
+ )
+
+161
+ mILL_ILLTRP
+,
+
+162 
+ #ILL_ILLTRP
+
+ILL_ILLTRP
+
+
+ )
+
+163
+ mILL_PRVOPC
+,
+
+164 
+ #ILL_PRVOPC
+
+ILL_PRVOPC
+
+
+ )
+
+165
+ mILL_PRVREG
+,
+
+166 
+ #ILL_PRVREG
+
+ILL_PRVREG
+
+
+ )
+
+167
+ mILL_COPROC
+,
+
+168 
+ #ILL_COPROC
+
+ILL_COPROC
+
+
+ )
+
+169
+ mILL_BADSTK
+
+
+170 
+ #ILL_BADSTK
+
+ILL_BADSTK
+
+
+ )
+
+176
+ mFPE_INTDIV
+ = 1,
+
+177 
+ #FPE_INTDIV
+
+FPE_INTDIV
+
+
+ )
+
+178
+ mFPE_INTOVF
+,
+
+179 
+ #FPE_INTOVF
+
+FPE_INTOVF
+
+
+ )
+
+180
+ mFPE_FLTDIV
+,
+
+181 
+ #FPE_FLTDIV
+
+FPE_FLTDIV
+
+
+ )
+
+182
+ mFPE_FLTOVF
+,
+
+183 
+ #FPE_FLTOVF
+
+FPE_FLTOVF
+
+
+ )
+
+184
+ mFPE_FLTUND
+,
+
+185 
+ #FPE_FLTUND
+
+FPE_FLTUND
+
+
+ )
+
+186
+ mFPE_FLTRES
+,
+
+187 
+ #FPE_FLTRES
+
+FPE_FLTRES
+
+
+ )
+
+188
+ mFPE_FLTINV
+,
+
+189 
+ #FPE_FLTINV
+
+FPE_FLTINV
+
+
+ )
+
+190
+ mFPE_FLTSUB
+
+
+191 
+ #FPE_FLTSUB
+
+FPE_FLTSUB
+
+
+ )
+
+197
+ mSEGV_MAPERR
+ = 1,
+
+198 
+ #SEGV_MAPERR
+
+SEGV_MAPERR
+
+
+ )
+
+199
+ mSEGV_ACCERR
+
+
+200 
+ #SEGV_ACCERR
+
+SEGV_ACCERR
+
+
+ )
+
+206
+ mBUS_ADRALN
+ = 1,
+
+207 
+ #BUS_ADRALN
+
+BUS_ADRALN
+
+
+ )
+
+208
+ mBUS_ADRERR
+,
+
+209 
+ #BUS_ADRERR
+
+BUS_ADRERR
+
+
+ )
+
+210
+ mBUS_OBJERR
+
+
+211 
+ #BUS_OBJERR
+
+BUS_OBJERR
+
+
+ )
+
+217
+ mTRAP_BRKPT
+ = 1,
+
+218 
+ #TRAP_BRKPT
+
+TRAP_BRKPT
+
+
+ )
+
+219
+ mTRAP_TRACE
+
+
+220 
+ #TRAP_TRACE
+
+TRAP_TRACE
+
+
+ )
+
+226
+ mCLD_EXITED
+ = 1,
+
+227 
+ #CLD_EXITED
+
+CLD_EXITED
+
+
+ )
+
+228
+ mCLD_KILLED
+,
+
+229 
+ #CLD_KILLED
+
+CLD_KILLED
+
+
+ )
+
+230
+ mCLD_DUMPED
+,
+
+231 
+ #CLD_DUMPED
+
+CLD_DUMPED
+
+
+ )
+
+232
+ mCLD_TRAPPED
+,
+
+233 
+ #CLD_TRAPPED
+
+CLD_TRAPPED
+
+
+ )
+
+234
+ mCLD_STOPPED
+,
+
+235 
+ #CLD_STOPPED
+
+CLD_STOPPED
+
+
+ )
+
+236
+ mCLD_CONTINUED
+
+
+237 
+ #CLD_CONTINUED
+
+CLD_CONTINUED
+
+
+ )
+
+243
+ mPOLL_IN
+ = 1,
+
+244 
+ #POLL_IN
+
+POLL_IN
+
+
+ )
+
+245
+ mPOLL_OUT
+,
+
+246 
+ #POLL_OUT
+
+POLL_OUT
+
+
+ )
+
+247
+ mPOLL_MSG
+,
+
+248 
+ #POLL_MSG
+
+POLL_MSG
+
+
+ )
+
+249
+ mPOLL_ERR
+,
+
+250 
+ #POLL_ERR
+
+POLL_ERR
+
+
+ )
+
+251
+ mPOLL_PRI
+,
+
+252 
+ #POLL_PRI
+
+POLL_PRI
+
+
+ )
+
+253
+ mPOLL_HUP
+
+
+254 
+ #POLL_HUP
+
+POLL_HUP
+
+
+ )
+
+257 #undeà
+__Ãed_sigšfo_t
+
+
+261 #ià(
+defšed
+
+_SIGNAL_H
+ || defšed
+__Ãed_sigev’t_t
+) \
+
+262 && !
+defšed
+
+ g__have_sigev’t_t
+
+
+263 
+ #__have_sigev’t_t
+ 1
+
+ )
+
+266 
+ #__SIGEV_MAX_SIZE
+ 64
+
+ )
+
+267 #ià
+__WORDSIZE
+ == 64
+
+268 
+ #__SIGEV_PAD_SIZE
+ ((
+__SIGEV_MAX_SIZE
+ /  ()è- 4)
+
+ )
+
+270 
+ #__SIGEV_PAD_SIZE
+ ((
+__SIGEV_MAX_SIZE
+ /  ()è- 3)
+
+ )
+
+273 
+ ssigev’t
+
+
+275
+sigv®_t
+
+ msigev_v®ue
+;
+
+276 
+ msigev_signo
+;
+
+277 
+ msigev_nÙify
+;
+
+281 
+ m_·d
+[
+__SIGEV_PAD_SIZE
+];
+
+285
+__pid_t
+
+ m_tid
+;
+
+289 (*
+ m_funùiÚ
+è(
+ msigv®_t
+);
+
+290 *
+ m_©Œibu‹
+;
+
+291 }
+ m_sigev_th»ad
+;
+
+292 }
+ m_sigev_un
+;
+
+293 }
+ tsigev’t_t
+;
+
+296 
+ #sigev_nÙify_funùiÚ
+
+_sigev_un
+.
+_sigev_th»ad
+.
+_funùiÚ
+
+
+ )
+
+297 
+ #sigev_nÙify_©Œibu‹s
+
+_sigev_un
+.
+_sigev_th»ad
+.
+_©Œibu‹
+
+
+ )
+
+302
+ mSIGEV_SIGNAL
+ = 0,
+
+303 
+ #SIGEV_SIGNAL
+
+SIGEV_SIGNAL
+
+
+ )
+
+304
+ mSIGEV_NONE
+,
+
+305 
+ #SIGEV_NONE
+
+SIGEV_NONE
+
+
+ )
+
+306
+ mSIGEV_THREAD
+,
+
+307 
+ #SIGEV_THREAD
+
+SIGEV_THREAD
+
+
+ )
+
+309
+ mSIGEV_THREAD_ID
+ = 4
+
+310 
+ #SIGEV_THREAD_ID
+
+SIGEV_THREAD_ID
+
+
+ )
+
+ @/usr/include/bits/signum.h
+
+20 #ifdef
+_SIGNAL_H
+
+
+23 
+ #SIG_ERR
+ ((
+__sighªdËr_t
+è-1è
+
+ )
+
+24 
+ #SIG_DFL
+ ((
+__sighªdËr_t
+è0è
+
+ )
+
+25 
+ #SIG_IGN
+ ((
+__sighªdËr_t
+è1è
+
+ )
+
+27 #ifdeà
+__USE_UNIX98
+
+
+28 
+ #SIG_HOLD
+ ((
+__sighªdËr_t
+è2è
+
+ )
+
+33 
+ #SIGHUP
+ 1
+
+ )
+
+34 
+ #SIGINT
+ 2
+
+ )
+
+35 
+ #SIGQUIT
+ 3
+
+ )
+
+36 
+ #SIGILL
+ 4
+
+ )
+
+37 
+ #SIGTRAP
+ 5
+
+ )
+
+38 
+ #SIGABRT
+ 6
+
+ )
+
+39 
+ #SIGIOT
+ 6
+
+ )
+
+40 
+ #SIGBUS
+ 7
+
+ )
+
+41 
+ #SIGFPE
+ 8
+
+ )
+
+42 
+ #SIGKILL
+ 9
+
+ )
+
+43 
+ #SIGUSR1
+ 10
+
+ )
+
+44 
+ #SIGSEGV
+ 11
+
+ )
+
+45 
+ #SIGUSR2
+ 12
+
+ )
+
+46 
+ #SIGPIPE
+ 13
+
+ )
+
+47 
+ #SIGALRM
+ 14
+
+ )
+
+48 
+ #SIGTERM
+ 15
+
+ )
+
+49 
+ #SIGSTKFLT
+ 16
+
+ )
+
+50 
+ #SIGCLD
+
+SIGCHLD
+
+
+ )
+
+51 
+ #SIGCHLD
+ 17
+
+ )
+
+52 
+ #SIGCONT
+ 18
+
+ )
+
+53 
+ #SIGSTOP
+ 19
+
+ )
+
+54 
+ #SIGTSTP
+ 20
+
+ )
+
+55 
+ #SIGTTIN
+ 21
+
+ )
+
+56 
+ #SIGTTOU
+ 22
+
+ )
+
+57 
+ #SIGURG
+ 23
+
+ )
+
+58 
+ #SIGXCPU
+ 24
+
+ )
+
+59 
+ #SIGXFSZ
+ 25
+
+ )
+
+60 
+ #SIGVTALRM
+ 26
+
+ )
+
+61 
+ #SIGPROF
+ 27
+
+ )
+
+62 
+ #SIGWINCH
+ 28
+
+ )
+
+63 
+ #SIGPOLL
+
+SIGIO
+
+
+ )
+
+64 
+ #SIGIO
+ 29
+
+ )
+
+65 
+ #SIGPWR
+ 30
+
+ )
+
+66 
+ #SIGSYS
+ 31
+
+ )
+
+67 
+ #SIGUNUSED
+ 31
+
+ )
+
+69 
+ #_NSIG
+ 65
+
+ )
+
+72 
+ #SIGRTMIN
+ (
+ `__libc_cu¼’t_sig¹mš
+ ())
+
+ )
+
+73 
+ #SIGRTMAX
+ (
+ `__libc_cu¼’t_sig¹max
+ ())
+
+ )
+
+77 
+ #__SIGRTMIN
+ 32
+
+ )
+
+78 
+ #__SIGRTMAX
+ (
+_NSIG
+ - 1)
+
+ )
+
+ @/usr/include/bits/sigstack.h
+
+20 #iâdeà
+_SIGNAL_H
+
+
+26 
+ ssig¡ack
+
+
+28 *
+ mss_¥
+;
+
+29 
+ mss_Ú¡ack
+;
+
+36
+ mSS_ONSTACK
+ = 1,
+
+37 
+ #SS_ONSTACK
+
+SS_ONSTACK
+
+
+ )
+
+38
+ mSS_DISABLE
+
+
+39 
+ #SS_DISABLE
+
+SS_DISABLE
+
+
+ )
+
+43 
+ #MINSIGSTKSZ
+ 2048
+
+ )
+
+46 
+ #SIGSTKSZ
+ 8192
+
+ )
+
+50 
+ ssig®t¡ack
+
+
+52 *
+ mss_¥
+;
+
+53 
+ mss_æags
+;
+
+54
+size_t
+
+ mss_size
+;
+
+55 }
+ t¡ack_t
+;
+
+ @/usr/include/bits/sigthread.h
+
+20 #iâdeà
+_BITS_SIGTHREAD_H
+
+
+21 
+ #_BITS_SIGTHREAD_H
+ 1
+
+ )
+
+23 #ià!
+defšed
+
+_SIGNAL_H
+ && !defšed
+_PTHREAD_H
+
+
+31 
+ $±h»ad_sigmask
+ (
+__how
+,
+
+32
+__cÚ¡
+
+__sig£t_t
+ *
+__»¡riù
+
+__Ãwmask
+,
+
+33
+__sig£t_t
+ *
+__»¡riù
+
+__Þdmask
+)
+__THROW
+;
+
+36 
+ $±h»ad_kžl
+ (
+±h»ad_t
+
+__th»adid
+, 
+__signo
+__THROW
+;
+
+38 #ifdeà
+__USE_GNU
+
+
+40 
+ $±h»ad_sigqueue
+ (
+±h»ad_t
+
+__th»adid
+, 
+__signo
+,
+
+41 cÚ¡ 
+sigv®
+
+__v®ue
+__THROW
+;
+
+ @/usr/include/linux/errno.h
+
+1 #iâdeà
+_LINUX_ERRNO_H
+
+
+2 
+ #_LINUX_ERRNO_H
+
+
+ )
+
+4 
+ ~<asm/Ӽo.h
+>
+
+ @/usr/include/sys/ucontext.h
+
+19 #iâdeà
+_SYS_UCONTEXT_H
+
+
+20 
+ #_SYS_UCONTEXT_H
+ 1
+
+ )
+
+22 
+ ~<ã©u»s.h
+>
+
+23 
+ ~<sigÇl.h
+>
+
+24 
+ ~<b™s/wÜdsize.h
+>
+
+28 
+ ~<b™s/sigcÚ‹xt.h
+>
+
+30 #ià
+__WORDSIZE
+ == 64
+
+33 
+ tg»g_t
+;
+
+36 
+ #NGREG
+ 23
+
+ )
+
+39 
+g»g_t
+
+ tg»g£t_t
+[
+NGREG
+];
+
+41 #ifdeà
+__USE_GNU
+
+
+45
+ mREG_R8
+ = 0,
+
+46 
+ #REG_R8
+
+REG_R8
+
+
+ )
+
+47
+ mREG_R9
+,
+
+48 
+ #REG_R9
+
+REG_R9
+
+
+ )
+
+49
+ mREG_R10
+,
+
+50 
+ #REG_R10
+
+REG_R10
+
+
+ )
+
+51
+ mREG_R11
+,
+
+52 
+ #REG_R11
+
+REG_R11
+
+
+ )
+
+53
+ mREG_R12
+,
+
+54 
+ #REG_R12
+
+REG_R12
+
+
+ )
+
+55
+ mREG_R13
+,
+
+56 
+ #REG_R13
+
+REG_R13
+
+
+ )
+
+57
+ mREG_R14
+,
+
+58 
+ #REG_R14
+
+REG_R14
+
+
+ )
+
+59
+ mREG_R15
+,
+
+60 
+ #REG_R15
+
+REG_R15
+
+
+ )
+
+61
+ mREG_RDI
+,
+
+62 
+ #REG_RDI
+
+REG_RDI
+
+
+ )
+
+63
+ mREG_RSI
+,
+
+64 
+ #REG_RSI
+
+REG_RSI
+
+
+ )
+
+65
+ mREG_RBP
+,
+
+66 
+ #REG_RBP
+
+REG_RBP
+
+
+ )
+
+67
+ mREG_RBX
+,
+
+68 
+ #REG_RBX
+
+REG_RBX
+
+
+ )
+
+69
+ mREG_RDX
+,
+
+70 
+ #REG_RDX
+
+REG_RDX
+
+
+ )
+
+71
+ mREG_RAX
+,
+
+72 
+ #REG_RAX
+
+REG_RAX
+
+
+ )
+
+73
+ mREG_RCX
+,
+
+74 
+ #REG_RCX
+
+REG_RCX
+
+
+ )
+
+75
+ mREG_RSP
+,
+
+76 
+ #REG_RSP
+
+REG_RSP
+
+
+ )
+
+77
+ mREG_RIP
+,
+
+78 
+ #REG_RIP
+
+REG_RIP
+
+
+ )
+
+79
+ mREG_EFL
+,
+
+80 
+ #REG_EFL
+
+REG_EFL
+
+
+ )
+
+81
+ mREG_CSGSFS
+,
+
+82 
+ #REG_CSGSFS
+
+REG_CSGSFS
+
+
+ )
+
+83
+ mREG_ERR
+,
+
+84 
+ #REG_ERR
+
+REG_ERR
+
+
+ )
+
+85
+ mREG_TRAPNO
+,
+
+86 
+ #REG_TRAPNO
+
+REG_TRAPNO
+
+
+ )
+
+87
+ mREG_OLDMASK
+,
+
+88 
+ #REG_OLDMASK
+
+REG_OLDMASK
+
+
+ )
+
+89
+ mREG_CR2
+
+
+90 
+ #REG_CR2
+
+REG_CR2
+
+
+ )
+
+94 
+ s_libc_åx»g
+
+
+96 
+ msignifiÿnd
+[4];
+
+97 
+ mexpÚ’t
+;
+
+98 
+ m·ddšg
+[3];
+
+101 
+ s_libc_xmm»g
+
+
+103
+__ušt32_t
+
+ m–em’t
+[4];
+
+106 
+ s_libc_å¡©e
+
+
+109
+__ušt16_t
+
+ mcwd
+;
+
+110
+__ušt16_t
+
+ mswd
+;
+
+111
+__ušt16_t
+
+ máw
+;
+
+112
+__ušt16_t
+
+ mfÝ
+;
+
+113
+__ušt64_t
+
+ mr
+;
+
+114
+__ušt64_t
+
+ mrdp
+;
+
+115
+__ušt32_t
+
+ mmxc¤
+;
+
+116
+__ušt32_t
+
+ mmxü_mask
+;
+
+117 
+_libc_åx»g
+
+ m_¡
+[8];
+
+118 
+_libc_xmm»g
+
+ m_xmm
+[16];
+
+119
+__ušt32_t
+
+ m·ddšg
+[24];
+
+123 
+_libc_å¡©e
+ *
+ tå»g£t_t
+;
+
+128
+g»g£t_t
+
+ mg»gs
+;
+
+130
+å»g£t_t
+
+ må»gs
+;
+
+131 
+ m__ȣrved1
+ [8];
+
+132 }
+ tmcÚ‹xt_t
+;
+
+135 
+ sucÚ‹xt
+
+
+137 
+ muc_æags
+;
+
+138 
+ucÚ‹xt
+ *
+ muc_lšk
+;
+
+139
+¡ack_t
+
+ muc_¡ack
+;
+
+140
+mcÚ‹xt_t
+
+ muc_mcÚ‹xt
+;
+
+141
+__sig£t_t
+
+ muc_sigmask
+;
+
+142 
+_libc_å¡©e
+
+ m__å»gs_mem
+;
+
+143 }
+ tucÚ‹xt_t
+;
+
+148 
+ tg»g_t
+;
+
+151 
+ #NGREG
+ 19
+
+ )
+
+154 
+g»g_t
+
+ tg»g£t_t
+[
+NGREG
+];
+
+156 #ifdeà
+__USE_GNU
+
+
+160
+ mREG_GS
+ = 0,
+
+161 
+ #REG_GS
+
+REG_GS
+
+
+ )
+
+162
+ mREG_FS
+,
+
+163 
+ #REG_FS
+
+REG_FS
+
+
+ )
+
+164
+ mREG_ES
+,
+
+165 
+ #REG_ES
+
+REG_ES
+
+
+ )
+
+166
+ mREG_DS
+,
+
+167 
+ #REG_DS
+
+REG_DS
+
+
+ )
+
+168
+ mREG_EDI
+,
+
+169 
+ #REG_EDI
+
+REG_EDI
+
+
+ )
+
+170
+ mREG_ESI
+,
+
+171 
+ #REG_ESI
+
+REG_ESI
+
+
+ )
+
+172
+ mREG_EBP
+,
+
+173 
+ #REG_EBP
+
+REG_EBP
+
+
+ )
+
+174
+ mREG_ESP
+,
+
+175 
+ #REG_ESP
+
+REG_ESP
+
+
+ )
+
+176
+ mREG_EBX
+,
+
+177 
+ #REG_EBX
+
+REG_EBX
+
+
+ )
+
+178
+ mREG_EDX
+,
+
+179 
+ #REG_EDX
+
+REG_EDX
+
+
+ )
+
+180
+ mREG_ECX
+,
+
+181 
+ #REG_ECX
+
+REG_ECX
+
+
+ )
+
+182
+ mREG_EAX
+,
+
+183 
+ #REG_EAX
+
+REG_EAX
+
+
+ )
+
+184
+ mREG_TRAPNO
+,
+
+185 
+ #REG_TRAPNO
+
+REG_TRAPNO
+
+
+ )
+
+186
+ mREG_ERR
+,
+
+187 
+ #REG_ERR
+
+REG_ERR
+
+
+ )
+
+188
+ mREG_EIP
+,
+
+189 
+ #REG_EIP
+
+REG_EIP
+
+
+ )
+
+190
+ mREG_CS
+,
+
+191 
+ #REG_CS
+
+REG_CS
+
+
+ )
+
+192
+ mREG_EFL
+,
+
+193 
+ #REG_EFL
+
+REG_EFL
+
+
+ )
+
+194
+ mREG_UESP
+,
+
+195 
+ #REG_UESP
+
+REG_UESP
+
+
+ )
+
+196
+ mREG_SS
+
+
+197 
+ #REG_SS
+
+REG_SS
+
+
+ )
+
+202 
+ s_libc_å»g
+
+
+204 
+ msignifiÿnd
+[4];
+
+205 
+ mexpÚ’t
+;
+
+208 
+ s_libc_å¡©e
+
+
+210 
+ mcw
+;
+
+211 
+ msw
+;
+
+212 
+ mg
+;
+
+213 
+ moff
+;
+
+214 
+ mcs£l
+;
+
+215 
+ md©aoff
+;
+
+216 
+ md©a£l
+;
+
+217 
+_libc_å»g
+
+ m_¡
+[8];
+
+218 
+ m¡©us
+;
+
+222 
+_libc_å¡©e
+ *
+ tå»g£t_t
+;
+
+227
+g»g£t_t
+
+ mg»gs
+;
+
+230
+å»g£t_t
+
+ må»gs
+;
+
+231 
+ mÞdmask
+;
+
+232 
+ mü2
+;
+
+233 }
+ tmcÚ‹xt_t
+;
+
+236 
+ sucÚ‹xt
+
+
+238 
+ muc_æags
+;
+
+239 
+ucÚ‹xt
+ *
+ muc_lšk
+;
+
+240
+¡ack_t
+
+ muc_¡ack
+;
+
+241
+mcÚ‹xt_t
+
+ muc_mcÚ‹xt
+;
+
+242
+__sig£t_t
+
+ muc_sigmask
+;
+
+243 
+_libc_å¡©e
+
+ m__å»gs_mem
+;
+
+244 }
+ tucÚ‹xt_t
+;
+
+ @/usr/include/asm/errno.h
+
+1 
+ ~<asm-g’”ic/”ºo.h
+>
+
+ @/usr/include/asm-generic/errno.h
+
+1 #iâdeà
+_ASM_GENERIC_ERRNO_H
+
+
+2 
+ #_ASM_GENERIC_ERRNO_H
+
+
+ )
+
+4 
+ ~<asm-g’”ic/”ºo-ba£.h
+>
+
+6 
+ #EDEADLK
+ 35
+
+ )
+
+7 
+ #ENAMETOOLONG
+ 36
+
+ )
+
+8 
+ #ENOLCK
+ 37
+
+ )
+
+9 
+ #ENOSYS
+ 38
+
+ )
+
+10 
+ #ENOTEMPTY
+ 39
+
+ )
+
+11 
+ #ELOOP
+ 40
+
+ )
+
+12 
+ #EWOULDBLOCK
+
+EAGAIN
+
+
+ )
+
+13 
+ #ENOMSG
+ 42
+
+ )
+
+14 
+ #EIDRM
+ 43
+
+ )
+
+15 
+ #ECHRNG
+ 44
+
+ )
+
+16 
+ #EL2NSYNC
+ 45
+
+ )
+
+17 
+ #EL3HLT
+ 46
+
+ )
+
+18 
+ #EL3RST
+ 47
+
+ )
+
+19 
+ #ELNRNG
+ 48
+
+ )
+
+20 
+ #EUNATCH
+ 49
+
+ )
+
+21 
+ #ENOCSI
+ 50
+
+ )
+
+22 
+ #EL2HLT
+ 51
+
+ )
+
+23 
+ #EBADE
+ 52
+
+ )
+
+24 
+ #EBADR
+ 53
+
+ )
+
+25 
+ #EXFULL
+ 54
+
+ )
+
+26 
+ #ENOANO
+ 55
+
+ )
+
+27 
+ #EBADRQC
+ 56
+
+ )
+
+28 
+ #EBADSLT
+ 57
+
+ )
+
+30 
+ #EDEADLOCK
+
+EDEADLK
+
+
+ )
+
+32 
+ #EBFONT
+ 59
+
+ )
+
+33 
+ #ENOSTR
+ 60
+
+ )
+
+34 
+ #ENODATA
+ 61
+
+ )
+
+35 
+ #ETIME
+ 62
+
+ )
+
+36 
+ #ENOSR
+ 63
+
+ )
+
+37 
+ #ENONET
+ 64
+
+ )
+
+38 
+ #ENOPKG
+ 65
+
+ )
+
+39 
+ #EREMOTE
+ 66
+
+ )
+
+40 
+ #ENOLINK
+ 67
+
+ )
+
+41 
+ #EADV
+ 68
+
+ )
+
+42 
+ #ESRMNT
+ 69
+
+ )
+
+43 
+ #ECOMM
+ 70
+
+ )
+
+44 
+ #EPROTO
+ 71
+
+ )
+
+45 
+ #EMULTIHOP
+ 72
+
+ )
+
+46 
+ #EDOTDOT
+ 73
+
+ )
+
+47 
+ #EBADMSG
+ 74
+
+ )
+
+48 
+ #EOVERFLOW
+ 75
+
+ )
+
+49 
+ #ENOTUNIQ
+ 76
+
+ )
+
+50 
+ #EBADFD
+ 77
+
+ )
+
+51 
+ #EREMCHG
+ 78
+
+ )
+
+52 
+ #ELIBACC
+ 79
+
+ )
+
+53 
+ #ELIBBAD
+ 80
+
+ )
+
+54 
+ #ELIBSCN
+ 81
+
+ )
+
+55 
+ #ELIBMAX
+ 82
+
+ )
+
+56 
+ #ELIBEXEC
+ 83
+
+ )
+
+57 
+ #EILSEQ
+ 84
+
+ )
+
+58 
+ #ERESTART
+ 85
+
+ )
+
+59 
+ #ESTRPIPE
+ 86
+
+ )
+
+60 
+ #EUSERS
+ 87
+
+ )
+
+61 
+ #ENOTSOCK
+ 88
+
+ )
+
+62 
+ #EDESTADDRREQ
+ 89
+
+ )
+
+63 
+ #EMSGSIZE
+ 90
+
+ )
+
+64 
+ #EPROTOTYPE
+ 91
+
+ )
+
+65 
+ #ENOPROTOOPT
+ 92
+
+ )
+
+66 
+ #EPROTONOSUPPORT
+ 93
+
+ )
+
+67 
+ #ESOCKTNOSUPPORT
+ 94
+
+ )
+
+68 
+ #EOPNOTSUPP
+ 95
+
+ )
+
+69 
+ #EPFNOSUPPORT
+ 96
+
+ )
+
+70 
+ #EAFNOSUPPORT
+ 97
+
+ )
+
+71 
+ #EADDRINUSE
+ 98
+
+ )
+
+72 
+ #EADDRNOTAVAIL
+ 99
+
+ )
+
+73 
+ #ENETDOWN
+ 100
+
+ )
+
+74 
+ #ENETUNREACH
+ 101
+
+ )
+
+75 
+ #ENETRESET
+ 102
+
+ )
+
+76 
+ #ECONNABORTED
+ 103
+
+ )
+
+77 
+ #ECONNRESET
+ 104
+
+ )
+
+78 
+ #ENOBUFS
+ 105
+
+ )
+
+79 
+ #EISCONN
+ 106
+
+ )
+
+80 
+ #ENOTCONN
+ 107
+
+ )
+
+81 
+ #ESHUTDOWN
+ 108
+
+ )
+
+82 
+ #ETOOMANYREFS
+ 109
+
+ )
+
+83 
+ #ETIMEDOUT
+ 110
+
+ )
+
+84 
+ #ECONNREFUSED
+ 111
+
+ )
+
+85 
+ #EHOSTDOWN
+ 112
+
+ )
+
+86 
+ #EHOSTUNREACH
+ 113
+
+ )
+
+87 
+ #EALREADY
+ 114
+
+ )
+
+88 
+ #EINPROGRESS
+ 115
+
+ )
+
+89 
+ #ESTALE
+ 116
+
+ )
+
+90 
+ #EUCLEAN
+ 117
+
+ )
+
+91 
+ #ENOTNAM
+ 118
+
+ )
+
+92 
+ #ENAVAIL
+ 119
+
+ )
+
+93 
+ #EISNAM
+ 120
+
+ )
+
+94 
+ #EREMOTEIO
+ 121
+
+ )
+
+95 
+ #EDQUOT
+ 122
+
+ )
+
+97 
+ #ENOMEDIUM
+ 123
+
+ )
+
+98 
+ #EMEDIUMTYPE
+ 124
+
+ )
+
+99 
+ #ECANCELED
+ 125
+
+ )
+
+100 
+ #ENOKEY
+ 126
+
+ )
+
+101 
+ #EKEYEXPIRED
+ 127
+
+ )
+
+102 
+ #EKEYREVOKED
+ 128
+
+ )
+
+103 
+ #EKEYREJECTED
+ 129
+
+ )
+
+106 
+ #EOWNERDEAD
+ 130
+
+ )
+
+107 
+ #ENOTRECOVERABLE
+ 131
+
+ )
+
+109 
+ #ERFKILL
+ 132
+
+ )
+
+ @/usr/include/asm-generic/errno-base.h
+
+1 #iâdeà
+_ASM_GENERIC_ERRNO_BASE_H
+
+
+2 
+ #_ASM_GENERIC_ERRNO_BASE_H
+
+
+ )
+
+4 
+ #EPERM
+ 1
+
+ )
+
+5 
+ #ENOENT
+ 2
+
+ )
+
+6 
+ #ESRCH
+ 3
+
+ )
+
+7 
+ #EINTR
+ 4
+
+ )
+
+8 
+ #EIO
+ 5
+
+ )
+
+9 
+ #ENXIO
+ 6
+
+ )
+
+10 
+ #E2BIG
+ 7
+
+ )
+
+11 
+ #ENOEXEC
+ 8
+
+ )
+
+12 
+ #EBADF
+ 9
+
+ )
+
+13 
+ #ECHILD
+ 10
+
+ )
+
+14 
+ #EAGAIN
+ 11
+
+ )
+
+15 
+ #ENOMEM
+ 12
+
+ )
+
+16 
+ #EACCES
+ 13
+
+ )
+
+17 
+ #EFAULT
+ 14
+
+ )
+
+18 
+ #ENOTBLK
+ 15
+
+ )
+
+19 
+ #EBUSY
+ 16
+
+ )
+
+20 
+ #EEXIST
+ 17
+
+ )
+
+21 
+ #EXDEV
+ 18
+
+ )
+
+22 
+ #ENODEV
+ 19
+
+ )
+
+23 
+ #ENOTDIR
+ 20
+
+ )
+
+24 
+ #EISDIR
+ 21
+
+ )
+
+25 
+ #EINVAL
+ 22
+
+ )
+
+26 
+ #ENFILE
+ 23
+
+ )
+
+27 
+ #EMFILE
+ 24
+
+ )
+
+28 
+ #ENOTTY
+ 25
+
+ )
+
+29 
+ #ETXTBSY
+ 26
+
+ )
+
+30 
+ #EFBIG
+ 27
+
+ )
+
+31 
+ #ENOSPC
+ 28
+
+ )
+
+32 
+ #ESPIPE
+ 29
+
+ )
+
+33 
+ #EROFS
+ 30
+
+ )
+
+34 
+ #EMLINK
+ 31
+
+ )
+
+35 
+ #EPIPE
+ 32
+
+ )
+
+36 
+ #EDOM
+ 33
+
+ )
+
+37 
+ #ERANGE
+ 34
+
+ )
+
+ @
+1
+.
+1
+/usr/include
+87
+2228
+CG.cc
+CG_roseBuilder.cc
+CG_roseRepr.cc
+CG_stringBuilder.cc
+CG_stringRepr.cc
+CG_suifBuilder.cc
+CG_suifRepr.cc
+code_gen.cc
+output_repr.cc
+/usr/include/math.h
+/usr/include/stdio.h
+/usr/include/string.h
+/usr/include/bits/huge_val.h
+/usr/include/bits/huge_valf.h
+/usr/include/bits/huge_vall.h
+/usr/include/bits/inf.h
+/usr/include/bits/mathcalls.h
+/usr/include/bits/mathdef.h
+/usr/include/bits/mathinline.h
+/usr/include/bits/nan.h
+/usr/include/bits/stdio-ldbl.h
+/usr/include/bits/stdio.h
+/usr/include/bits/stdio2.h
+/usr/include/bits/stdio_lim.h
+/usr/include/bits/string.h
+/usr/include/bits/string2.h
+/usr/include/bits/string3.h
+/usr/include/bits/sys_errlist.h
+/usr/include/bits/types.h
+/usr/include/features.h
+/usr/include/getopt.h
+/usr/include/libio.h
+/usr/include/xlocale.h
+/usr/include/_G_config.h
+/usr/include/bits/libio-ldbl.h
+/usr/include/bits/predefs.h
+/usr/include/bits/stdio-lock.h
+/usr/include/bits/typesizes.h
+/usr/include/bits/wordsize.h
+/usr/include/ctype.h
+/usr/include/endian.h
+/usr/include/gnu/stubs.h
+/usr/include/stdlib.h
+/usr/include/sys/cdefs.h
+/usr/include/alloca.h
+/usr/include/bits/byteswap.h
+/usr/include/bits/endian.h
+/usr/include/bits/libc-lock.h
+/usr/include/bits/stdlib-ldbl.h
+/usr/include/bits/stdlib.h
+/usr/include/bits/waitflags.h
+/usr/include/bits/waitstatus.h
+/usr/include/gconv.h
+/usr/include/gnu/stubs-32.h
+/usr/include/gnu/stubs-64.h
+/usr/include/sys/types.h
+/usr/include/wchar.h
+/usr/include/bits/pthreadtypes.h
+/usr/include/bits/wchar-ldbl.h
+/usr/include/bits/wchar.h
+/usr/include/bits/wchar2.h
+/usr/include/errno.h
+/usr/include/gnu/option-groups.h
+/usr/include/pthread.h
+/usr/include/sys/select.h
+/usr/include/sys/sysmacros.h
+/usr/include/time.h
+/usr/include/wctype.h
+/usr/include/bits/errno.h
+/usr/include/bits/select.h
+/usr/include/bits/setjmp.h
+/usr/include/bits/sigset.h
+/usr/include/bits/time.h
+/usr/include/sched.h
+/usr/include/signal.h
+/usr/include/bits/sched.h
+/usr/include/bits/sigaction.h
+/usr/include/bits/sigcontext.h
+/usr/include/bits/siginfo.h
+/usr/include/bits/signum.h
+/usr/include/bits/sigstack.h
+/usr/include/bits/sigthread.h
+/usr/include/linux/errno.h
+/usr/include/sys/ucontext.h
+/usr/include/asm/errno.h
+/usr/include/asm-generic/errno.h
+/usr/include/asm-generic/errno-base.h
diff --git a/omega/code_gen/src/output_repr.cc b/omega/code_gen/src/output_repr.cc
new file mode 100644
index 0000000..955cc14
--- /dev/null
+++ b/omega/code_gen/src/output_repr.cc
@@ -0,0 +1,1931 @@
+/*****************************************************************************
+ Copyright (C) 1994-2000 University of Maryland
+ Copyright (C) 2008 University of Southern California
+ Copyright (C) 2009-2010 University of Utah
+ All Rights Reserved.
+
+ Purpose:
+ utility functions for outputing CG_outputReprs
+
+ Notes:
+
+ History:
+ 07/30/10 collect various code outputing into one place, by Chun Chen
+*****************************************************************************/
+
+#include <omega.h>
+#include <code_gen/CG_stringBuilder.h>
+#include <code_gen/output_repr.h>
+#include <basic/omega_error.h>
+#include <math.h>
+#include <stack>
+#include <typeinfo>
+
+namespace omega {
+
+extern Tuple<Tuple<Relation> > projected_nIS;
+int var_substitution_threshold = 100;
+//protonu.
+extern int upperBoundForLevel;
+extern int lowerBoundForLevel;
+extern bool fillInBounds;
+//end--protonu.
+
+}
+
+
+namespace omega {
+
+std::pair<EQ_Handle, int> find_simplest_assignment(const Relation &R_, Variable_ID v, const std::vector<CG_outputRepr *> &assigned_on_the_fly);
+
+
+namespace {
+
+
+
+
+void get_stride(const Constraint_Handle &h, Variable_ID &wc, coef_t &step){
+ wc = 0;
+ for(Constr_Vars_Iter i(h,true); i; i++) {
+ assert(wc == 0);
+ wc = (*i).var;
+ step = ((*i).coef);
+ }
+}
+
+}
+
+CG_outputRepr* outputIdent(CG_outputBuilder* ocg, const Relation &R_, Variable_ID v, const std::vector<CG_outputRepr *> &assigned_on_the_fly) {
+ Relation &R = const_cast<Relation &>(R_);
+
+ switch (v->kind()) {
+ case Set_Var: {
+ int pos = v->get_position();
+ if (assigned_on_the_fly[pos-1] != NULL)
+ return assigned_on_the_fly[pos-1]->clone();
+ else
+ return ocg->CreateIdent(v->name());
+ break;
+ }
+ case Global_Var: {
+ if (v->get_global_var()->arity() == 0)
+ return ocg->CreateIdent(v->name());
+ else {
+ /* This should be improved to take into account the possible elimination
+ of the set variables. */
+ int arity = v->get_global_var()->arity();
+ //assert(arity <= last_level);
+ Tuple<CG_outputRepr *> argList;
+ // Relation R = Relation::True(arity);
+
+ // name_codegen_vars(R); // easy way to make sure the names are correct.
+ for(int i = 1; i <= arity; i++)
+ argList.append(ocg->CreateIdent(R.set_var(i)->name()));
+ CG_outputRepr *call = ocg->CreateInvoke(v->get_global_var()->base_name(), argList);
+ return call;
+ }
+ break;
+ }
+ default:
+ throw std::invalid_argument("wrong variable type");
+ }
+}
+
+
+//----------------------------------------------------------------------------
+// Translate equality constraints to if-condition and assignment.
+// return.first is right-hand-side of assignment, return.second
+// is true if assignment is required.
+// -- by chun 07/29/2010
+// ----------------------------------------------------------------------------
+std::pair<CG_outputRepr *, bool> outputAssignment(CG_outputBuilder *ocg, const Relation &R_, Variable_ID v, Relation &enforced, CG_outputRepr *&if_repr, const std::vector<CG_outputRepr *> &assigned_on_the_fly) {
+ Relation &R = const_cast<Relation &>(R_);
+
+ Conjunct *c = R.query_DNF()->single_conjunct();
+
+ // check whether to generate if-conditions from equality constraints
+ for (EQ_Iterator ei(c); ei; ei++)
+ if (!(*ei).has_wildcards() && abs((*ei).get_coef(v)) > 1) {
+ Relation r(R.n_set());
+ F_And *f_super_root = r.add_and();
+ F_Exists *fe = f_super_root->add_exists();
+ Variable_ID e = fe->declare();
+ F_And *f_root = fe->add_and();
+ EQ_Handle h = f_root->add_EQ();
+ for (Constr_Vars_Iter cvi(*ei); cvi; cvi++)
+ switch ((*cvi).var->kind()) {
+ case Input_Var: {
+ if ((*cvi).var == v)
+ h.update_coef(e, (*cvi).coef);
+ else
+ h.update_coef(r.set_var((*cvi).var->get_position()), (*cvi).coef);
+ break;
+ }
+ case Global_Var: {
+ Global_Var_ID g = (*cvi).var->get_global_var();
+ Variable_ID v2;
+ if (g->arity() == 0)
+ v2 = r.get_local(g);
+ else
+ v2 = r.get_local(g, (*cvi).var->function_of());
+ h.update_coef(v2, (*cvi).coef);
+ break;
+ }
+ default:
+ assert(0);
+ }
+ h.update_const((*ei).get_const());
+
+ r.copy_names(R);
+ r.setup_names();
+
+ // need if-condition to make sure this loop variable has integer value
+ if (!Gist(r, copy(enforced), 1).is_obvious_tautology()) {
+ coef_t coef = (*ei).get_coef(v);
+ coef_t sign = -((coef>0)?1:-1);
+ coef = abs(coef);
+
+ CG_outputRepr *term = NULL;
+ for (Constr_Vars_Iter cvi(*ei); cvi; cvi++)
+ if ((*cvi).var != v) {
+ CG_outputRepr *varRepr = outputIdent(ocg, R, (*cvi).var, assigned_on_the_fly);
+ coef_t t = sign*(*cvi).coef;
+ if (t == 1)
+ term = ocg->CreatePlus(term, varRepr);
+ else if (t == -1)
+ term = ocg->CreateMinus(term, varRepr);
+ else if (t > 0)
+ term = ocg->CreatePlus(term, ocg->CreateTimes(ocg->CreateInt(t), varRepr));
+ else if (t < 0)
+ term = ocg->CreateMinus(term, ocg->CreateTimes(ocg->CreateInt(-t), varRepr));
+ }
+ coef_t t = sign*(*ei).get_const();
+ if (t > 0)
+ term = ocg->CreatePlus(term, ocg->CreateInt(t));
+ else if (t < 0)
+ term = ocg->CreateMinus(term, ocg->CreateInt(-t));
+
+ term = ocg->CreateIntegerMod(term, ocg->CreateInt(coef));
+ term = ocg->CreateEQ(term, ocg->CreateInt(0));
+
+ if_repr = ocg->CreateAnd(if_repr, term);
+ }
+
+ enforced.and_with_EQ(*ei);
+ enforced.simplify();
+ }
+
+ // find the simplest assignment
+ std::pair<EQ_Handle, int> a = find_simplest_assignment(R, v, assigned_on_the_fly);
+
+ // now generate assignment
+ if (a.second < INT_MAX) {
+ EQ_Handle eq = a.first;
+ CG_outputRepr *rop_repr = NULL;
+
+ coef_t divider = eq.get_coef(v);
+ int sign = 1;
+ if (divider < 0) {
+ divider = -divider;
+ sign = -1;
+ }
+
+ for (Constr_Vars_Iter cvi(eq); cvi; cvi++)
+ if ((*cvi).var != v) {
+ CG_outputRepr *var_repr = outputIdent(ocg, R, (*cvi).var, assigned_on_the_fly);
+ coef_t coef = (*cvi).coef;
+ if (-sign * coef == -1)
+ rop_repr = ocg->CreateMinus(rop_repr, var_repr);
+ else if (-sign * coef < -1)
+ rop_repr = ocg->CreateMinus(rop_repr, ocg->CreateTimes(ocg->CreateInt(sign * coef), var_repr));
+ else if (-sign * coef == 1)
+ rop_repr = ocg->CreatePlus(rop_repr, var_repr);
+ else // -sign * coef > 1
+ rop_repr = ocg->CreatePlus(rop_repr, ocg->CreateTimes(ocg->CreateInt(-sign * coef), var_repr));
+ }
+
+ coef_t c_term = -(eq.get_const() * sign);
+
+ if (c_term > 0)
+ rop_repr = ocg->CreatePlus(rop_repr, ocg->CreateInt(c_term));
+ else if (c_term < 0)
+ rop_repr = ocg->CreateMinus(rop_repr, ocg->CreateInt(-c_term));
+ else if (rop_repr == NULL)
+ rop_repr = ocg->CreateInt(0);
+
+ if (divider != 1)
+ rop_repr = ocg->CreateIntegerDivide(rop_repr, ocg->CreateInt(divider));
+
+ enforced.and_with_EQ(eq);
+ enforced.simplify();
+
+ if (a.second > var_substitution_threshold)
+ return std::make_pair(rop_repr, true);
+ else
+ return std::make_pair(rop_repr, false);
+ }
+ else
+ return std::make_pair(static_cast<CG_outputRepr *>(NULL), false);
+}
+
+
+//----------------------------------------------------------------------------
+// Don't use Substitutions class since it can't handle integer
+// division. Instead, use relation mapping to a single output
+// variable to get substitution. -- by chun, 07/19/2007
+//----------------------------------------------------------------------------
+Tuple<CG_outputRepr*> outputSubstitution(CG_outputBuilder* ocg, const Relation &R_, const std::vector<CG_outputRepr *> &assigned_on_the_fly) {
+ Relation &R = const_cast<Relation &>(R_);
+
+ const int n = R.n_out();
+ Tuple<CG_outputRepr*> oReprList;
+
+ // Find substitution for each output variable
+ for (int i = 1; i <= n; i++) {
+ Relation mapping(n, 1);
+ F_And *f_root = mapping.add_and();
+ EQ_Handle h = f_root->add_EQ();
+ h.update_coef(mapping.output_var(1), 1);
+ h.update_coef(mapping.input_var(i), -1);
+
+ Relation S = Composition(mapping, copy(R));
+
+ std::pair<EQ_Handle, int> a = find_simplest_assignment(S, S.output_var(1), assigned_on_the_fly);
+
+ if (a.second < INT_MAX) {
+ while (a.second > 0) {
+ EQ_Handle eq = a.first;
+ std::set<int> candidates;
+ for (Constr_Vars_Iter cvi(eq); cvi; cvi++)
+ if ((*cvi).var->kind() == Input_Var)
+ candidates.insert((*cvi).var->get_position());
+
+ bool changed = false;
+ for (std::set<int>::iterator j = candidates.begin(); j != candidates.end(); j++) {
+ Relation S2 = Project(copy(S), *j, Input_Var);
+ std::pair<EQ_Handle, int> a2 = find_simplest_assignment(S2, S2.output_var(1), assigned_on_the_fly);
+ if (a2.second <= a.second) {
+ S = S2;
+ a = a2;
+ changed = true;
+ break;
+ }
+ }
+ if (!changed)
+ break;
+ }
+ }
+
+ if (a.second < INT_MAX) {
+ CG_outputRepr *repr = NULL;
+ EQ_Handle eq = a.first;
+ Variable_ID v = S.output_var(1);
+
+ for (int j = 1; j <= S.n_inp(); j++)
+ S.name_input_var(j, R.input_var(j)->name());
+ S.setup_names();
+
+ int d = eq.get_coef(v);
+ assert(d != 0);
+ int sign = (d>0)?-1:1;
+ d = -sign * d;
+ for (Constr_Vars_Iter cvi(eq); cvi; cvi++)
+ if ((*cvi).var != v) {
+ int coef = sign * (*cvi).coef;
+ CG_outputRepr *op = outputIdent(ocg, S, (*cvi).var, assigned_on_the_fly);
+ if (coef > 1)
+ op = ocg->CreateTimes(ocg->CreateInt(coef), op);
+ else if (coef < -1)
+ op = ocg->CreateTimes(ocg->CreateInt(-coef), op);
+ if (coef > 0)
+ repr = ocg->CreatePlus(repr, op);
+ else if (coef < 0)
+ repr = ocg->CreateMinus(repr, op);
+ }
+
+ int c = sign * eq.get_const();
+ if (c > 0)
+ repr = ocg->CreatePlus(repr, ocg->CreateInt(c));
+ else if (c < 0)
+ repr = ocg->CreateMinus(repr, ocg->CreateInt(-c));
+ else if (repr == NULL)
+ repr = ocg->CreateInt(0);
+
+ if (d != 1)
+ repr = ocg->CreateIntegerDivide(repr, ocg->CreateInt(d));
+
+ oReprList.append(repr);
+ }
+ else
+ oReprList.append(NULL);
+ }
+
+ return oReprList;
+}
+
+namespace {
+
+Relation create_stride_on_bound(int n, const std::map<Variable_ID, coef_t> &lb, coef_t stride) {
+ Relation result(n);
+ F_And *f_root = result.add_and();
+ EQ_Handle h = f_root->add_stride(stride);
+
+ for (std::map<Variable_ID, coef_t>::const_iterator i = lb.begin(); i != lb.end(); i++) {
+ if (i->first == NULL)
+ h.update_const(i->second);
+ else {
+ switch(i->first->kind()) {
+ case Input_Var: {
+ int pos = i->first->get_position();
+ h.update_coef(result.set_var(pos), i->second);
+ break;
+ }
+ case Global_Var: {
+ Global_Var_ID g = i->first->get_global_var();
+ Variable_ID v;
+ if (g->arity() == 0)
+ v = result.get_local(g);
+ else
+ v = result.get_local(g, i->first->function_of());
+ h.update_coef(v, i->second);
+ break;
+ }
+ default:
+ assert(0);
+ }
+ }
+ }
+
+ return result;
+}
+
+}
+
+//----------------------------------------------------------------------------
+// Find the most restrictive common stride constraint for a set of
+// relations. -- by chun, 05/20/09
+// ----------------------------------------------------------------------------
+Relation greatest_common_step(const Tuple<Relation> &I, const Tuple<int> &active, int level, const Relation &known) {
+ assert(I.size() == active.size());
+ int n = 0;
+
+ std::vector<Relation> I1, I2;
+ for (int i = 1; i <= I.size(); i++)
+ if (active[i]) {
+ if (n == 0)
+ n = I[i].n_set();
+
+ Relation r1;
+ if (known.is_null())
+ r1 = copy(I[i]);
+ else {
+ r1 = Intersection(copy(I[i]), copy(known));
+ r1.simplify();
+ }
+ I1.push_back(r1);
+ Relation r2 = Gist(copy(I[i]), copy(known));
+ assert(r2.is_upper_bound_satisfiable());
+ if (r2.is_obvious_tautology())
+ return Relation::True(n);
+ I2.push_back(r2);
+ }
+
+ std::vector<bool> is_exact(I2.size(), true);
+ std::vector<coef_t> step(I2.size(), 0);
+ std::vector<coef_t> messy_step(I2.size(), 0);
+ Variable_ID t_col = set_var(level);
+ std::map<Variable_ID, coef_t> lb;
+
+ // first check all clean strides: t_col = ... (mod step)
+ for (size_t i = 0; i < I2.size(); i++) {
+ Conjunct *c = I2[i].query_DNF()->single_conjunct();
+
+ bool is_degenerated = false;
+ for (EQ_Iterator e = c->EQs(); e; e++) {
+ coef_t coef = abs((*e).get_coef(t_col));
+ if (coef != 0 && !(*e).has_wildcards()) {
+ is_degenerated = true;
+ break;
+ }
+ }
+ if (is_degenerated)
+ continue;
+
+ for (EQ_Iterator e = c->EQs(); e; e++) {
+ if ((*e).has_wildcards()) {
+ coef_t coef = abs((*e).get_coef(t_col));
+ if (coef == 0)
+ continue;
+ if (coef != 1) {
+ is_exact[i] = false;
+ continue;
+ }
+
+ coef_t this_step = abs(Constr_Vars_Iter(*e, true).curr_coef());
+ assert(this_step != 1);
+
+ if (lb.size() != 0) {
+ Relation test = create_stride_on_bound(n, lb, this_step);
+ if (Gist(test, copy(I1[i])).is_obvious_tautology()) {
+ if (step[i] == 0)
+ step[i] = this_step;
+ else
+ step[i] = lcm(step[i], this_step);
+ }
+ else
+ is_exact[i] = false;
+ }
+ else {
+ // try to find a lower bound that hits on stride
+ Conjunct *c = I2[i].query_DNF()->single_conjunct();
+ for (GEQ_Iterator ge = c->GEQs(); ge; ge++) {
+ if ((*ge).has_wildcards() || (*ge).get_coef(t_col) != 1)
+ continue;
+
+ std::map<Variable_ID, coef_t> cur_lb;
+ for (Constr_Vars_Iter cv(*ge); cv; cv++)
+ cur_lb[cv.curr_var()] = cv.curr_coef();
+ cur_lb[NULL] = (*ge).get_const();
+
+ Relation test = create_stride_on_bound(n, cur_lb, this_step);
+ if (Gist(test, copy(I1[i])).is_obvious_tautology()) {
+ if (step[i] == 0)
+ step[i] = this_step;
+ else
+ step[i] = lcm(step[i], this_step);
+
+ lb = cur_lb;
+ break;
+ }
+ }
+
+ // no clean lower bound, thus we use this modular constraint as is
+ if (lb.size() == 0) {
+ std::map<Variable_ID, coef_t> cur_lb;
+ int wild_count = 0;
+ for (Constr_Vars_Iter cv(*e); cv; cv++)
+ if (cv.curr_var()->kind() == Wildcard_Var)
+ wild_count++;
+ else
+ cur_lb[cv.curr_var()] = cv.curr_coef();
+ cur_lb[NULL] = (*e).get_const();
+
+ if (wild_count == 1) {
+ lb = cur_lb;
+ if (step[i] == 0)
+ step[i] = this_step;
+ else
+ step[i] = lcm(step[i], this_step);
+ }
+ }
+
+ if (lb.size() == 0)
+ is_exact[i] = false;
+ }
+ }
+ }
+ }
+
+ // aggregate all exact steps
+ coef_t global_step = 0;
+ for (size_t i = 0; i < is_exact.size(); i++)
+ if (is_exact[i])
+ global_step = gcd(global_step, step[i]);
+ if (global_step == 1)
+ return Relation::True(n);
+
+ // now check all messy strides: a*t_col = ... (mod step)
+ for (size_t i = 0; i < I2.size(); i++)
+ if (!is_exact[i]) {
+ Conjunct *c = I2[i].query_DNF()->single_conjunct();
+ for (EQ_Iterator e = c->EQs(); e; e++) {
+ coef_t coef = abs((*e).get_coef(t_col));
+ if (coef == 0 || coef == 1)
+ continue;
+
+ // make a guess for messy stride condition -- by chun 07/27/2007
+ coef_t this_step = abs(Constr_Vars_Iter(*e, true).curr_coef());
+ this_step /= gcd(this_step, coef);
+ this_step = gcd(global_step, this_step);
+ if (this_step == 1)
+ continue;
+
+ if (lb.size() != 0) {
+ Relation test = create_stride_on_bound(n, lb, this_step);
+ if (Gist(test, copy(I1[i])).is_obvious_tautology()) {
+ if (step[i] == 0)
+ step[i] = this_step;
+ else
+ step[i] = lcm(step[i], this_step);
+ }
+ }
+ else {
+ // try to find a lower bound that hits on stride
+ Conjunct *c = I2[i].query_DNF()->single_conjunct();
+ for (GEQ_Iterator ge = c->GEQs(); ge; ge++) {
+ if ((*ge).has_wildcards() || (*ge).get_coef(t_col) != 1)
+ continue;
+
+ std::map<Variable_ID, coef_t> cur_lb;
+
+ for (Constr_Vars_Iter cv(*ge); cv; cv++)
+ cur_lb[cv.curr_var()] = cv.curr_coef();
+
+ cur_lb[NULL] = (*ge).get_const();
+
+ Relation test = create_stride_on_bound(n, cur_lb, this_step);
+ if (Gist(test, copy(I1[i])).is_obvious_tautology()) {
+ if (step[i] == 0)
+ step[i] = this_step;
+ else
+ step[i] = lcm(step[i], this_step);
+
+ lb = cur_lb;
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ // aggregate all non-exact steps
+ for (size_t i = 0; i < is_exact.size(); i++)
+ if (!is_exact[i])
+ global_step = gcd(global_step, step[i]);
+ if (global_step == 1 || global_step == 0)
+ return Relation::True(n);
+
+ Relation result = create_stride_on_bound(n, lb, global_step);
+
+ // check for statements that haven't been factored into global step
+ for (size_t i = 0; i < I1.size(); i++)
+ if (step[i] == 0) {
+ if (!Gist(copy(result), copy(I1[i])).is_obvious_tautology())
+ return Relation::True(n);
+ }
+
+ return result;
+}
+
+
+//-----------------------------------------------------------------------------
+// Substitute variables in a statement according to mapping function.
+//-----------------------------------------------------------------------------
+CG_outputRepr* outputStatement(CG_outputBuilder *ocg, CG_outputRepr *stmt, int indent, const Relation &mapping_, const Relation &known_, const std::vector<CG_outputRepr *> &assigned_on_the_fly) {
+ Relation mapping = copy(mapping_);
+ Relation known = copy(known_);
+ Tuple<std::string> loop_vars;
+
+ for (int i = 1; i <= mapping.n_inp(); i++)
+ loop_vars.append(mapping.input_var(i)->name());
+
+ // discard non-existant variables from iteration spaces -- by chun 12/31/2008
+ if (known.n_set() > mapping.n_out()) {
+ Relation r(known.n_set(), mapping.n_out());
+ F_And *f_root = r.add_and();
+ for (int i = 1; i <= mapping.n_out(); i++) {
+ EQ_Handle h = f_root->add_EQ();
+ h.update_coef(r.input_var(i), 1);
+ h.update_coef(r.output_var(i), -1);
+ }
+ known = Range(Restrict_Domain(r, known));
+ known.simplify();
+ }
+
+ // remove modular constraints from known to simplify mapping process -- by chun 11/10/2008
+ Relation k(known.n_set());
+ F_And *f_root = k.add_and();
+ Conjunct *c = known.query_DNF()->single_conjunct();
+ for (EQ_Iterator e = c->EQs(); e; e++) {
+ if (!(*e).has_wildcards())
+ f_root->add_EQ(*e);
+ }
+ k.simplify();
+
+ // get variable substituion list
+ Relation Inv_mapping = Restrict_Domain(Inverse(mapping), k);
+ Tuple<CG_outputRepr*> sList = outputSubstitution(ocg, Inv_mapping, assigned_on_the_fly);
+
+ return ocg->CreatePlaceHolder(indent, stmt, sList, loop_vars);
+}
+
+
+// find floor definition for variable such as m-3 <= 4v <= m
+bool findFloorInequality(Relation &r, Variable_ID v, GEQ_Handle &h, Variable_ID excluded) {
+ Conjunct *c = r.single_conjunct();
+
+ std::set<Variable_ID> var_checked;
+ std::stack<Variable_ID> var_checking;
+ var_checking.push(v);
+
+ while (!var_checking.empty()) {
+ Variable_ID v2 = var_checking.top();
+ var_checking.pop();
+
+ bool is_floor = false;
+ for (GEQ_Iterator gi(c); gi; gi++) {
+ if (excluded != NULL && (*gi).get_coef(excluded) != 0)
+ continue;
+
+ coef_t a = (*gi).get_coef(v2);
+ if (a < 0) {
+ for (GEQ_Iterator gi2(c); gi2; gi2++) {
+ coef_t b = (*gi2).get_coef(v2);
+ if (b == -a && (*gi).get_const()+(*gi2).get_const() < -a) {
+ bool match = true;
+ for (Constr_Vars_Iter cvi(*gi); cvi; cvi++)
+ if ((*gi2).get_coef((*cvi).var) != -(*cvi).coef) {
+ match = false;
+ break;
+ }
+ if (!match)
+ continue;
+ for (Constr_Vars_Iter cvi(*gi2); cvi; cvi++)
+ if ((*gi).get_coef((*cvi).var) != -(*cvi).coef) {
+ match = false;
+ break;
+ }
+ if (match) {
+ var_checked.insert(v2);
+ is_floor = true;
+ if (v == v2)
+ h = *gi;
+
+ for (Constr_Vars_Iter cvi(*gi); cvi; cvi++)
+ if (((*cvi).var->kind() == Exists_Var || (*cvi).var->kind() == Wildcard_Var) &&
+ var_checked.find((*cvi).var) == var_checked.end())
+ var_checking.push((*cvi).var);
+
+ break;
+ }
+ }
+ }
+ if (is_floor)
+ break;
+ }
+ }
+ if (!is_floor)
+ return false;
+ }
+ return true;
+}
+
+
+
+
+//-----------------------------------------------------------------------------
+// Output a reqular equality or inequality to conditions.
+// e.g. (i=5*j)
+//-----------------------------------------------------------------------------
+CG_outputRepr* output_as_guard(CG_outputBuilder* ocg, const Relation &guards_in, Constraint_Handle e, bool is_equality, const std::vector<CG_outputRepr *> &assigned_on_the_fly) {
+ Relation &guards = const_cast<Relation &>(guards_in);
+ if (e.has_wildcards())
+ throw std::invalid_argument("constraint must not have wildcard");
+
+ Variable_ID v = (*Constr_Vars_Iter(e)).var;
+
+ coef_t saved_coef = ((e).get_coef(v));
+ int sign = saved_coef < 0 ? -1 : 1;
+
+ (e).update_coef_during_simplify(v, -saved_coef+sign);
+ CG_outputRepr* rop = outputEasyBoundAsRepr(ocg, guards, e, v, false, 0, assigned_on_the_fly);
+ (e).update_coef_during_simplify(v,saved_coef-sign);
+
+ CG_outputRepr* lop = outputIdent(ocg, guards, v, assigned_on_the_fly);
+ if (abs(saved_coef) != 1)
+ lop = ocg->CreateTimes(ocg->CreateInt(abs(saved_coef)), lop);
+
+
+ if (is_equality) {
+ return ocg->CreateEQ(lop, rop);
+ }
+ else {
+ if (saved_coef < 0)
+ return ocg->CreateLE(lop, rop);
+ else
+ return ocg->CreateGE(lop, rop);
+ }
+}
+
+
+//-----------------------------------------------------------------------------
+// Output stride conditions from equalities.
+// e.g. (exists alpha: i = 5*alpha)
+//-----------------------------------------------------------------------------
+CG_outputRepr *output_EQ_strides(CG_outputBuilder* ocg, const Relation &guards_in, const std::vector<CG_outputRepr *> &assigned_on_the_fly) {
+ Relation guards = const_cast<Relation &>(guards_in);
+ Conjunct *c = guards.single_conjunct();
+
+ CG_outputRepr *eqRepr = NULL;
+
+ for (EQ_Iterator ei(c->EQs()); ei; ei++) {
+ Variable_ID wc = NULL;
+ for (Constr_Vars_Iter cvi((*ei), true); cvi; cvi++) {
+ if (wc != NULL)
+ throw codegen_error("Can't generate equality condition with multiple wildcards");
+ else
+ wc = (*cvi).var;
+ }
+ if (wc == NULL)
+ continue;
+
+ coef_t step = (*ei).get_coef(wc);
+
+ (*ei).update_coef_during_simplify(wc, 1-step);
+ CG_outputRepr* lop = outputEasyBoundAsRepr(ocg, guards, (*ei), wc, false, 0, assigned_on_the_fly);
+ (*ei).update_coef_during_simplify(wc, step-1);
+
+ CG_outputRepr* rop = ocg->CreateInt(abs(step));
+ CG_outputRepr* intMod = ocg->CreateIntegerMod(lop, rop);
+ CG_outputRepr* eqNode = ocg->CreateEQ(intMod, ocg->CreateInt(0));
+
+ eqRepr = ocg->CreateAnd(eqRepr, eqNode);
+ }
+
+ return eqRepr;
+}
+
+
+
+//-----------------------------------------------------------------------------
+// Output hole conditions created by inequalities involving wildcards.
+// e.g. (exists alpha: 4*alpha <= i <= 5*alpha)
+// Collect wildcards
+// For each whildcard
+// collect lower and upper bounds in which wildcard appears
+// For each lower bound
+// create constraint with each upper bound
+//-----------------------------------------------------------------------------
+CG_outputRepr *output_GEQ_strides(CG_outputBuilder* ocg, const Relation &guards_in, const std::vector<CG_outputRepr *> &assigned_on_the_fly) {
+ Relation guards = const_cast<Relation &>(guards_in);
+ Conjunct *c = guards.single_conjunct();
+
+ CG_outputRepr* geqRepr = NULL;
+
+ std::set<Variable_ID> non_orphan_wildcard;
+ for (GEQ_Iterator gi(c); gi; gi++) {
+ int num_wild = 0;
+ Variable_ID first_one;
+ for (Constr_Vars_Iter cvi(*gi, true); cvi; cvi++) {
+ num_wild++;
+ if (num_wild == 1)
+ first_one = (*cvi).var;
+ else
+ non_orphan_wildcard.insert((*cvi).var);
+ }
+ if (num_wild > 1)
+ non_orphan_wildcard.insert(first_one);
+ }
+
+ for (int i = 1; i <= (*(c->variables())).size(); i++) {
+ Variable_ID wc = (*(c->variables()))[i];
+ if (wc->kind() == Wildcard_Var && non_orphan_wildcard.find(wc) == non_orphan_wildcard.end()) {
+ Tuple<GEQ_Handle> lower, upper;
+ for (GEQ_Iterator gi(c); gi; gi++) {
+ if((*gi).get_coef(wc) > 0)
+ lower.append(*gi);
+ else if((*gi).get_coef(wc) < 0)
+ upper.append(*gi);
+ }
+
+ // low: c*alpha - x >= 0
+ // up: -d*alpha + y >= 0
+ for (Tuple_Iterator<GEQ_Handle> low(lower); low; low++) {
+ for (Tuple_Iterator<GEQ_Handle> up(upper); up; up++) {
+ coef_t low_coef = (*low).get_coef(wc);
+ coef_t up_coef = (*up).get_coef(wc);
+
+ (*low).update_coef_during_simplify(wc, 1-low_coef);
+ CG_outputRepr* lowExpr = outputEasyBoundAsRepr(ocg, guards, *low, wc, false, 0, assigned_on_the_fly);
+ (*low).update_coef_during_simplify(wc, low_coef-1);
+
+ (*up).update_coef_during_simplify(wc, -1-up_coef);
+ CG_outputRepr* upExpr = outputEasyBoundAsRepr(ocg, guards, *up, wc, false, 0, assigned_on_the_fly);
+ (*up).update_coef_during_simplify(wc, up_coef+1);
+
+ CG_outputRepr* intDiv = ocg->CreateIntegerDivide(upExpr, ocg->CreateInt(-up_coef));
+ CG_outputRepr* rop = ocg->CreateTimes(ocg->CreateInt(low_coef), intDiv);
+ CG_outputRepr* geqNode = ocg->CreateLE(lowExpr, rop);
+
+ geqRepr = ocg->CreateAnd(geqRepr, geqNode);
+ }
+ }
+ }
+ }
+
+ if (non_orphan_wildcard.size() > 0) {
+ // e.g. c*alpha - x >= 0 (*)
+ // -d*alpha + y >= 0 (*)
+ // e1*alpha + f1*beta + g1 >= 0 (**)
+ // e2*alpha + f2*beta + g2 >= 0 (**)
+ // ...
+ // TODO: should generate a testing loop for alpha using its lower and
+ // upper bounds from (*) constraints and do the same if-condition test
+ // for beta from each pair of opposite (**) constraints as above,
+ // and exit the loop when if-condition satisfied.
+ throw codegen_error("Can't generate multiple wildcard GEQ guards right now");
+ }
+
+ return geqRepr;
+}
+
+
+//-----------------------------------------------------------------------------
+// Translate all constraints in a relation to guard conditions.
+//-----------------------------------------------------------------------------
+CG_outputRepr *outputGuard(CG_outputBuilder* ocg, const Relation &guards_in, const std::vector<CG_outputRepr *> &assigned_on_the_fly) {
+ Relation &guards = const_cast<Relation &>(guards_in);
+ if (guards.is_null() || guards.is_obvious_tautology())
+ return NULL;
+
+ CG_outputRepr* nodeRepr = NULL;
+
+ CG_outputRepr *eqStrideRepr = output_EQ_strides(ocg, guards, assigned_on_the_fly);
+ nodeRepr = ocg->CreateAnd(nodeRepr, eqStrideRepr);
+
+ CG_outputRepr *geqStrideRepr = output_GEQ_strides(ocg, guards, assigned_on_the_fly);
+ nodeRepr = ocg->CreateAnd(nodeRepr, geqStrideRepr);
+
+ Conjunct *c = guards.single_conjunct();
+ for(EQ_Iterator ei(c->EQs()); ei; ei++)
+ if (!(*ei).has_wildcards()) {
+ CG_outputRepr *eqRepr = output_as_guard(ocg, guards, (*ei), true, assigned_on_the_fly);
+ nodeRepr = ocg->CreateAnd(nodeRepr, eqRepr);
+ }
+ for(GEQ_Iterator gi(c->GEQs()); gi; gi++)
+ if (!(*gi).has_wildcards()) {
+ CG_outputRepr *geqRepr = output_as_guard(ocg, guards, (*gi), false, assigned_on_the_fly);
+ nodeRepr = ocg->CreateAnd(nodeRepr, geqRepr);
+ }
+
+ return nodeRepr;
+}
+
+
+//-----------------------------------------------------------------------------
+// one is 1 for LB
+// this function is overloaded should replace the original one
+//-----------------------------------------------------------------------------
+CG_outputRepr *outputLBasRepr(CG_outputBuilder* ocg, const GEQ_Handle &g,
+ Relation &bounds, Variable_ID v,
+ coef_t stride, const EQ_Handle &strideEQ,
+ Relation known, const std::vector<CG_outputRepr *> &assigned_on_the_fly) {
+#if ! defined NDEBUG
+ coef_t v_coef;
+ assert((v_coef = g.get_coef(v)) > 0);
+#endif
+
+ std::string s;
+ CG_outputRepr *lbRepr;
+ if (stride == 1) {
+ lbRepr = outputEasyBoundAsRepr(ocg, bounds, g, v, false, 1, assigned_on_the_fly);
+ }
+ else {
+ if (!boundHitsStride(g,v,strideEQ,stride,known)) {
+ bounds.setup_names(); // boundsHitsStride resets variable names
+
+ CG_stringBuilder oscg;
+ std::string c = GetString(outputEasyBoundAsRepr(&oscg, bounds, strideEQ, v, true, 0, assigned_on_the_fly));
+ CG_outputRepr *cRepr = NULL;
+ if (c != std::string("0"))
+ cRepr = outputEasyBoundAsRepr(ocg, bounds, strideEQ, v, true, 0, assigned_on_the_fly);
+ std::string LoverM = GetString(outputEasyBoundAsRepr(&oscg, bounds, g, v, false, 1, assigned_on_the_fly));
+ CG_outputRepr *LoverMRepr = NULL;
+ if (LoverM != std::string("0"))
+ LoverMRepr = outputEasyBoundAsRepr(ocg, bounds, g, v, false, 1, assigned_on_the_fly);
+
+ if (code_gen_debug > 2) {
+ fprintf(DebugFile,"::: LoverM is %s\n", LoverM.c_str());
+ fprintf(DebugFile,"::: c is %s\n", c.c_str());
+ }
+
+ int complexity1 = 0, complexity2 = 0;
+ for (size_t i = 0; i < c.length(); i++)
+ if (c[i] == '+' || c[i] == '-' || c[i] == '*' || c[i] == '/')
+ complexity1++;
+ else if (c[i] == ',')
+ complexity1 += 2;
+ for (size_t i = 0; i < LoverM.length(); i++)
+ if (LoverM[i] == '+' || LoverM[i] == '-' || LoverM[i] == '*' || LoverM[i] == '/')
+ complexity2++;
+ else if (LoverM[i] == ',')
+ complexity2 += 2;
+
+ if (complexity1 < complexity2) {
+ CG_outputRepr *idUp = LoverMRepr;
+ CG_outputRepr *c1Repr = ocg->CreateCopy(cRepr);
+ idUp = ocg->CreateMinus(idUp, c1Repr);
+ idUp = ocg->CreatePlus(idUp, ocg->CreateInt(stride-1));
+ CG_outputRepr *idLow = ocg->CreateInt(stride);
+ lbRepr = ocg->CreateTimes(ocg->CreateInt(stride),
+ ocg->CreateIntegerDivide(idUp, idLow));
+ lbRepr = ocg->CreatePlus(lbRepr, cRepr);
+ }
+ else {
+ CG_outputRepr *LoverM1Repr = ocg->CreateCopy(LoverMRepr);
+ CG_outputRepr *imUp = ocg->CreateMinus(cRepr, LoverM1Repr);
+ CG_outputRepr *imLow = ocg->CreateInt(stride);
+ CG_outputRepr *intMod = ocg->CreateIntegerMod(imUp, imLow);
+ lbRepr = ocg->CreatePlus(LoverMRepr, intMod);
+ }
+ }
+ else {
+ // boundsHitsStride resets variable names
+ bounds.setup_names();
+ lbRepr = outputEasyBoundAsRepr(ocg, bounds, g, v, false, 0, assigned_on_the_fly);
+ }
+ }
+
+ return lbRepr;
+}
+
+//-----------------------------------------------------------------------------
+// one is -1 for UB
+// this function is overloaded should replace the original one
+//-----------------------------------------------------------------------------
+CG_outputRepr *outputUBasRepr(CG_outputBuilder* ocg, const GEQ_Handle &g,
+ Relation & bounds,
+ Variable_ID v,
+ coef_t /*stride*/, // currently unused
+ const EQ_Handle &/*strideEQ*/, //currently unused
+ const std::vector<CG_outputRepr *> &assigned_on_the_fly) {
+ assert(g.get_coef(v) < 0);
+ CG_outputRepr* upRepr = outputEasyBoundAsRepr(ocg, bounds, g, v, false, 0, assigned_on_the_fly);
+ return upRepr;
+}
+
+//-----------------------------------------------------------------------------
+// Print the expression for the variable given as v. Works for both
+// GEQ's and EQ's, but produces intDiv (not intMod) when v has a nonunit
+// coefficient. So it is OK for loop bounds, but for checking stride
+// constraints, you want to make sure the coef of v is 1, and insert the
+// intMod yourself.
+//
+// original name is outputEasyBound
+//-----------------------------------------------------------------------------
+CG_outputRepr* outputEasyBoundAsRepr(CG_outputBuilder* ocg, Relation &bounds,
+ const Constraint_Handle &g, Variable_ID v,
+ bool ignoreWC,
+ int ceiling,
+ const std::vector<CG_outputRepr *> &assigned_on_the_fly) {
+ // assert ignoreWC => g is EQ
+ // rewrite constraint as foo (== or <= or >=) v, return foo as string
+
+ CG_outputRepr* easyBoundRepr = NULL;
+
+ coef_t v_coef = g.get_coef(v);
+ int v_sign = v_coef > 0 ? 1 : -1;
+ v_coef *= v_sign;
+ assert(v_coef > 0);
+ // foo is (-constraint)/v_sign/v_coef
+
+ int sign_adj = -v_sign;
+
+ //----------------------------------------------------------------------
+ // the following generates +- cf*varName
+ //----------------------------------------------------------------------
+ for(Constr_Vars_Iter c2(g, false); c2; c2++) {
+ if ((*c2).var != v && (!ignoreWC || (*c2).var->kind()!=Wildcard_Var)) {
+
+ coef_t cf = (*c2).coef*sign_adj;
+ assert(cf != 0);
+
+ CG_outputRepr *varName;
+ if ((*c2).var->kind() == Wildcard_Var) {
+ GEQ_Handle h;
+ if (!findFloorInequality(bounds, (*c2).var, h, v)) {
+ if (easyBoundRepr != NULL) {
+ easyBoundRepr->clear();
+ delete easyBoundRepr;
+ }
+ return NULL;
+ }
+ varName = outputEasyBoundAsRepr(ocg, bounds, h, (*c2).var, false, 0, assigned_on_the_fly);
+ }
+ else {
+ varName = outputIdent(ocg, bounds, (*c2).var, assigned_on_the_fly);
+ }
+ CG_outputRepr *cfRepr = NULL;
+
+ if (cf > 1) {
+ cfRepr = ocg->CreateInt(cf);
+ CG_outputRepr* rbRepr = ocg->CreateTimes(cfRepr, varName);
+ easyBoundRepr = ocg->CreatePlus(easyBoundRepr, rbRepr);
+ }
+ else if (cf < -1) {
+ cfRepr = ocg->CreateInt(-cf);
+ CG_outputRepr* rbRepr = ocg->CreateTimes(cfRepr, varName);
+ easyBoundRepr = ocg->CreateMinus(easyBoundRepr, rbRepr);
+ }
+ else if (cf == 1) {
+ easyBoundRepr = ocg->CreatePlus(easyBoundRepr, varName);
+ }
+ else if (cf == -1) {
+ easyBoundRepr = ocg->CreateMinus(easyBoundRepr, varName);
+ }
+ }
+ }
+
+ if (g.get_const()) {
+ coef_t cf = g.get_const()*sign_adj;
+ assert(cf != 0);
+ if (cf > 0) {
+ easyBoundRepr = ocg->CreatePlus(easyBoundRepr, ocg->CreateInt(cf));
+ }
+ else {
+ easyBoundRepr = ocg->CreateMinus(easyBoundRepr, ocg->CreateInt(-cf));
+ }
+ }
+ else {
+ if(easyBoundRepr == NULL) {
+ easyBoundRepr = ocg->CreateInt(0);
+ }
+ }
+
+ if (v_coef > 1) {
+ assert(ceiling >= 0);
+ if (ceiling) {
+ easyBoundRepr= ocg->CreatePlus(easyBoundRepr, ocg->CreateInt(v_coef-1));
+ }
+ easyBoundRepr = ocg->CreateIntegerDivide(easyBoundRepr, ocg->CreateInt(v_coef));
+ }
+
+ return easyBoundRepr;
+}
+
+
+//----------------------------------------------------------------------------
+// Translate inequality constraints to loop or assignment.
+// if return.second is true, return.first is loop structure,
+// otherwise it is assignment.
+// ----------------------------------------------------------------------------
+std::pair<CG_outputRepr *, bool> outputBounds(CG_outputBuilder* ocg, const Relation &bounds, Variable_ID v, int indent, Relation &enforced, const std::vector<CG_outputRepr *> &assigned_on_the_fly) {
+ Relation b = copy(bounds);
+ Conjunct *c = b.query_DNF()->single_conjunct();
+
+ // Elaborate stride simplification which is complementary to gist function
+ // since we further target the specific loop variable. -- by chun 08/07/2008
+ Relation r1 = Relation::True(b.n_set()), r2 = Relation::True(b.n_set());
+ for (EQ_Iterator ei(c); ei; ei++) {
+ if ((*ei).get_coef(v) != 0 && (*ei).has_wildcards()) { // stride condition found
+ coef_t sign;
+ if ((*ei).get_coef(v) > 0)
+ sign = 1;
+ else
+ sign = -1;
+
+ coef_t stride = 0;
+ for (Constr_Vars_Iter cvi(*ei, true); cvi; cvi++)
+ if ((*cvi).var->kind() == Wildcard_Var) {
+ stride = abs((*cvi).coef);
+ break;
+ }
+
+ // check if stride hits lower bound
+ bool found_match = false;
+ if (abs((*ei).get_coef(v)) != 1) { // expensive matching for non-clean stride condition
+ coef_t d = stride / gcd(abs((*ei).get_coef(v)), stride);
+ Relation r3 = Relation::True(b.n_set());
+ r3.and_with_EQ(*ei);
+
+ for (GEQ_Iterator gi(c); gi; gi++) {
+ if ((*gi).get_coef(v) == 1 && !(*gi).has_wildcards()) {
+ Relation r4(b.n_set());
+ F_And *f_root = r4.add_and();
+ Stride_Handle h = f_root->add_stride(d);
+
+ for (Constr_Vars_Iter cvi(*gi); cvi; cvi++)
+ switch ((*cvi).var->kind()) {
+ case Input_Var: {
+ int pos = (*cvi).var->get_position();
+ h.update_coef(r4.set_var(pos), (*cvi).coef);
+ break;
+ }
+ case Global_Var: {
+ Global_Var_ID g = (*cvi).var->get_global_var();
+ Variable_ID v;
+ if (g->arity() == 0)
+ v = r4.get_local(g);
+ else
+ v = r4.get_local(g, (*cvi).var->function_of());
+ h.update_coef(v, (*cvi).coef);
+ break;
+ }
+ default:
+ fprintf(DebugFile, "can't deal with the variable type in lower bound\n");
+ return std::make_pair(static_cast<CG_outputRepr *>(NULL), false);
+ }
+ h.update_const((*gi).get_const());
+
+ Relation r5 = Gist(copy(r3), Intersection(copy(r4), copy(enforced)));
+
+ // replace original stride condition with striding from this lower bound
+ if (r5.is_obvious_tautology()) {
+ r1 = Intersection(r1, r4);
+ found_match = true;
+ break;
+ }
+ }
+ }
+ }
+ else {
+ for (GEQ_Iterator gi(c); gi; gi++) {
+ if ((*gi).get_coef(v) == abs((*ei).get_coef(v)) && !(*gi).has_wildcards()) { // potential matching lower bound found
+ Relation r(b.n_set());
+ Stride_Handle h = r.add_and()->add_stride(stride);
+
+ for (Constr_Vars_Iter cvi(*gi); cvi; cvi++)
+ switch ((*cvi).var->kind()) {
+ case Input_Var: {
+ int pos = (*cvi).var->get_position();
+ if ((*cvi).var != v) {
+ int t1 = int_mod((*cvi).coef, stride);
+ if (t1 != 0) {
+ coef_t t2 = enforced.query_variable_mod(enforced.set_var(pos), stride);
+ if (t2 != posInfinity)
+ h.update_const(t1*t2);
+ else
+ h.update_coef(r.set_var(pos), t1);
+ }
+ }
+ else
+ h.update_coef(r.set_var(pos), (*cvi).coef);
+ break;
+ }
+ case Global_Var: {
+ Global_Var_ID g = (*cvi).var->get_global_var();
+ Variable_ID v;
+ if (g->arity() == 0)
+ v = enforced.get_local(g);
+ else
+ v = enforced.get_local(g, (*cvi).var->function_of());
+ coef_t t = enforced.query_variable_mod(v, stride);
+ if (t != posInfinity)
+ h.update_const(t*(*cvi).coef);
+ else {
+ Variable_ID v2;
+ if (g->arity() == 0)
+ v2 = r.get_local(g);
+ else
+ v2 = r.get_local(g, (*cvi).var->function_of());
+ h.update_coef(v2, (*cvi).coef);
+ }
+ break;
+ }
+ default:
+ fprintf(DebugFile, "can't deal with the variable type in lower bound\n");
+ return std::make_pair(static_cast<CG_outputRepr *>(NULL), false);
+ }
+ h.update_const((*gi).get_const());
+
+ bool t = true;
+ {
+ Conjunct *c2 = r.query_DNF()->single_conjunct();
+ EQ_Handle h2;
+ for (EQ_Iterator ei2(c2); ei2; ei2++) {
+ h2 = *ei2;
+ break;
+ }
+
+ int sign;
+ if (h2.get_coef(v) == (*ei).get_coef(v))
+ sign = 1;
+ else
+ sign = -1;
+
+ t = int_mod(h2.get_const() - sign * (*ei).get_const(), stride) == 0;
+
+ if (t != false)
+ for (Constr_Vars_Iter cvi(h2); cvi; cvi++)
+ if ((*cvi).var->kind() != Wildcard_Var &&
+ int_mod((*cvi).coef - sign * (*ei).get_coef((*cvi).var), stride) != 0) {
+ t = false;
+ break;
+ }
+
+ if (t != false)
+ for (Constr_Vars_Iter cvi(*ei); cvi; cvi++)
+ if ((*cvi).var->kind() != Wildcard_Var &&
+ int_mod((*cvi).coef - sign * h2.get_coef((*cvi).var), stride) != 0) {
+ t = false;
+ break;
+ }
+
+ }
+
+ if (t) {
+ // replace original stride condition with striding from this lower bound
+ F_And *f_root = r1.and_with_and();
+ Stride_Handle h = f_root->add_stride(stride);
+ for (Constr_Vars_Iter cvi(*gi); cvi; cvi++)
+ switch ((*cvi).var->kind()) {
+ case Input_Var: {
+ h.update_coef(r1.set_var((*cvi).var->get_position()), (*cvi).coef);
+ break;
+ }
+ case Global_Var: {
+ Global_Var_ID g = (*cvi).var->get_global_var();
+ Variable_ID v;
+ if (g->arity() == 0)
+ v = r1.get_local(g);
+ else
+ v = r1.get_local(g, (*cvi).var->function_of());
+ h.update_coef(v, (*cvi).coef);
+ break;
+ }
+ default:
+ fprintf(DebugFile, "can't deal with the variable type in lower bound\n");
+ return std::make_pair(static_cast<CG_outputRepr *>(NULL), false);
+ }
+ h.update_const((*gi).get_const());
+
+ found_match = true;
+ break;
+ }
+ }
+ }
+ }
+
+ if (!found_match)
+ r1.and_with_EQ(*ei);
+ }
+ else if ((*ei).get_coef(v) == 0) {
+ Relation r3 = Relation::True(b.n_set());
+ r3.and_with_EQ(*ei);
+ Relation r4 = Gist(r3, copy(enforced));
+ if (!r4.is_obvious_tautology())
+ r2.and_with_EQ(*ei);
+ }
+ else
+ r2.and_with_EQ(*ei);
+ }
+
+ // restore remaining inequalities
+ {
+ std::map<Variable_ID, Variable_ID> exists_mapping;
+ F_Exists *fe = r2.and_with_and()->add_exists();
+ F_And *f_root = fe->add_and();
+ for (GEQ_Iterator gi(c); gi; gi++) {
+ GEQ_Handle h = f_root->add_GEQ();
+ for (Constr_Vars_Iter cvi(*gi); cvi; cvi++) {
+ Variable_ID v = cvi.curr_var();
+ switch (v->kind()) {
+ case Input_Var: {
+ int pos = v->get_position();
+ h.update_coef(r2.set_var(pos), cvi.curr_coef());
+ break;
+ }
+ case Exists_Var:
+ case Wildcard_Var: {
+ std::map<Variable_ID, Variable_ID>::iterator p = exists_mapping.find(v);
+ Variable_ID e;
+ if (p == exists_mapping.end()) {
+ e = fe->declare();
+ exists_mapping[v] = e;
+ }
+ else
+ e = (*p).second;
+ h.update_coef(e, cvi.curr_coef());
+ break;
+ }
+ case Global_Var: {
+ Global_Var_ID g = v->get_global_var();
+ Variable_ID v2;
+ if (g->arity() == 0)
+ v2 = r2.get_local(g);
+ else
+ v2 = r2.get_local(g, v->function_of());
+ h.update_coef(v2, cvi.curr_coef());
+ break;
+ }
+ default:
+ assert(0);
+ }
+ }
+ h.update_const((*gi).get_const());
+ }
+ }
+
+ // overwrite original bounds
+ {
+ r1.simplify();
+ r2.simplify();
+ Relation b2 = Intersection(r1, r2);
+ b2.simplify();
+ for (int i = 1; i <= b.n_set(); i++)
+ b2.name_set_var(i, b.set_var(i)->name());
+ b2.setup_names();
+ b = b2;
+ c = b.query_DNF()->single_conjunct();
+ }
+
+
+ // get loop strides
+ EQ_Handle strideEQ;
+ bool foundStride = false; // stride that can be translated to loop
+ bool foundSimpleStride = false; // stride that starts from const value
+ coef_t step = 1;
+ int num_stride = 0;
+
+ for (EQ_Iterator ei(c); ei; ei++) {
+ if ((*ei).get_coef(v) != 0 && (*ei).has_wildcards()) {
+ num_stride++;
+
+ if (abs((*ei).get_coef(v)) != 1)
+ continue;
+
+ bool t = true;
+ coef_t d = 1;
+ for (Constr_Vars_Iter cvi(*ei); cvi; cvi++)
+ if ((*cvi).var->kind() == Wildcard_Var) {
+ assert(d==1);
+ d = abs((*cvi).coef);
+ }
+ else if ((*cvi).var->kind() == Input_Var) {
+ if ((*cvi).var != v)
+ t = false;
+ }
+ else
+ t = false;
+
+ if (d > step) {
+ step = d;
+ foundSimpleStride = t;
+ strideEQ = *ei;
+ foundStride = true;
+ }
+ }
+ }
+
+ // More than one stride or complex stride found, we should move all
+ // but strideEQ to body's guard condition. alas, not implemented.
+ if (!(num_stride == 0 || (num_stride == 1 && foundStride)))
+ return std::make_pair(static_cast<CG_outputRepr *>(NULL), false);
+
+ // get loop bounds
+ int lower_bounds = 0, upper_bounds = 0;
+ Tuple<CG_outputRepr *> lbList;
+ Tuple<CG_outputRepr *> ubList;
+ coef_t const_lb = negInfinity, const_ub = posInfinity;
+ for (GEQ_Iterator g(c); g; g++) {
+ coef_t coef = (*g).get_coef(v);
+ if (coef == 0)
+ continue;
+ else if (coef > 0) { // lower bound
+ lower_bounds++;
+ if ((*g).is_const(v) && !foundStride) {
+ //no variables but v in constr
+ coef_t L,m;
+ L = -((*g).get_const());
+
+ m = (*g).get_coef(v);
+ coef_t sb = (int) (ceil(((float) L) /m));
+ set_max(const_lb, sb);
+ }
+ else if ((*g).is_const(v) && foundSimpleStride) {
+ // no variables but v in constr
+ //make LB fit the stride constraint
+ coef_t L,m,s,c;
+ L = -((*g).get_const());
+ m = (*g).get_coef(v);
+ s = step;
+ c = strideEQ.get_const();
+ coef_t sb = (s * (int) (ceil( (float) (L - (c * m)) /(s*m))))+ c;
+ set_max(const_lb, sb);
+ }
+ else
+ lbList.append(outputLBasRepr(ocg, *g, b, v, step, strideEQ, enforced, assigned_on_the_fly));
+ }
+ else { // upper bound
+ upper_bounds++;
+ if ((*g).is_const(v)) {
+ // no variables but v in constraint
+ set_min(const_ub,-(*g).get_const()/(*g).get_coef(v));
+ }
+ else
+ ubList.append(outputUBasRepr(ocg, *g, b, v, step, strideEQ, assigned_on_the_fly));
+ }
+ }
+
+ CG_outputRepr *lbRepr = NULL;
+ CG_outputRepr *ubRepr = NULL;
+ if (const_lb != negInfinity)
+ lbList.append(ocg->CreateInt(const_lb));
+ if (lbList.size() > 1)
+ lbRepr = ocg->CreateInvoke("max", lbList);
+ else if (lbList.size() == 1)
+ lbRepr = lbList[1];
+
+ //protonu
+ if(fillInBounds && lbList.size() == 1 && const_lb != negInfinity)
+ lowerBoundForLevel = const_lb;
+ //end-protonu
+
+ if (const_ub != posInfinity)
+ ubList.append(ocg->CreateInt(const_ub));
+ if (ubList.size() > 1)
+ ubRepr = ocg->CreateInvoke("min", ubList);
+ else if (ubList.size() == 1)
+ ubRepr = ubList[1];
+
+ //protonu
+ if(fillInBounds && const_ub != posInfinity)
+ upperBoundForLevel = const_ub;
+ //end-protonu
+
+ if (upper_bounds == 0 || lower_bounds == 0) {
+ return std::make_pair(static_cast<CG_outputRepr *>(NULL), false);
+ }
+ else {
+ // bookkeeping catched constraints in new_knwon
+ F_Exists *fe = enforced.and_with_and()->add_exists();
+ F_And *f_root = fe->add_and();
+ std::map<Variable_ID, Variable_ID> exists_mapping;
+ std::stack<std::pair<GEQ_Handle, Variable_ID> > floor_geq_stack;
+ std::set<Variable_ID> floor_var_set;
+
+ if (foundStride) {
+ EQ_Handle h = f_root->add_EQ();
+ for (Constr_Vars_Iter cvi(strideEQ); cvi; cvi++)
+ switch ((*cvi).var->kind()) {
+ case Input_Var: {
+ int pos = (*cvi).var->get_position();
+ h.update_coef(enforced.set_var(pos), (*cvi).coef);
+ break;
+ }
+ case Exists_Var:
+ case Wildcard_Var: {
+ std::map<Variable_ID, Variable_ID>::iterator p = exists_mapping.find((*cvi).var);
+ Variable_ID e;
+ if (p == exists_mapping.end()) {
+ e = fe->declare();
+ exists_mapping[(*cvi).var] = e;
+ }
+ else
+ e = (*p).second;
+ h.update_coef(e, (*cvi).coef);
+ break;
+ }
+ case Global_Var: {
+ Global_Var_ID g = (*cvi).var->get_global_var();
+ Variable_ID e;
+ if (g->arity() == 0)
+ e = enforced.get_local(g);
+ else
+ e = enforced.get_local(g, (*cvi).var->function_of());
+ h.update_coef(e, (*cvi).coef);
+ break;
+ }
+ default:
+ assert(0);
+ }
+ h.update_const(strideEQ.get_const());
+ }
+
+ for (GEQ_Iterator gi(c); gi; gi++)
+ if ((*gi).get_coef(v) != 0) {
+ GEQ_Handle h = f_root->add_GEQ();
+ for (Constr_Vars_Iter cvi(*gi); cvi; cvi++)
+ switch ((*cvi).var->kind()) {
+ case Input_Var: {
+ int pos = (*cvi).var->get_position();
+ h.update_coef(enforced.set_var(pos), (*cvi).coef);
+ break;
+ }
+ case Exists_Var:
+ case Wildcard_Var: {
+ std::map<Variable_ID, Variable_ID>::iterator p = exists_mapping.find((*cvi).var);
+ Variable_ID e;
+ if (p == exists_mapping.end()) {
+ e = fe->declare();
+ exists_mapping[(*cvi).var] = e;
+ }
+ else
+ e = (*p).second;
+ h.update_coef(e, (*cvi).coef);
+
+ if (floor_var_set.find((*cvi).var) == floor_var_set.end()) {
+ GEQ_Handle h2;
+ findFloorInequality(b, (*cvi).var, h2, v);
+ floor_geq_stack.push(std::make_pair(h2, (*cvi).var));
+ floor_var_set.insert((*cvi).var);
+ }
+ break;
+ }
+ case Global_Var: {
+ Global_Var_ID g = (*cvi).var->get_global_var();
+ Variable_ID e;
+ if (g->arity() == 0)
+ e = enforced.get_local(g);
+ else
+ e = enforced.get_local(g, (*cvi).var->function_of());
+ h.update_coef(e, (*cvi).coef);
+ break;
+ }
+ default:
+ assert(0);
+ }
+ h.update_const((*gi).get_const());
+ }
+
+ // add floor definition involving variables appeared in bounds
+ while (!floor_geq_stack.empty()) {
+ std::pair<GEQ_Handle, Variable_ID> p = floor_geq_stack.top();
+ floor_geq_stack.pop();
+
+ GEQ_Handle h1 = f_root->add_GEQ();
+ GEQ_Handle h2 = f_root->add_GEQ();
+ for (Constr_Vars_Iter cvi(p.first); cvi; cvi++) {
+ switch ((*cvi).var->kind()) {
+ case Input_Var: {
+ int pos = (*cvi).var->get_position();
+ h1.update_coef(enforced.input_var(pos), (*cvi).coef);
+ h2.update_coef(enforced.input_var(pos), -(*cvi).coef);
+ break;
+ }
+ case Exists_Var:
+ case Wildcard_Var: {
+ std::map<Variable_ID, Variable_ID>::iterator p2 = exists_mapping.find((*cvi).var);
+ Variable_ID e;
+ if (p2 == exists_mapping.end()) {
+ e = fe->declare();
+ exists_mapping[(*cvi).var] = e;
+ }
+ else
+ e = (*p2).second;
+ h1.update_coef(e, (*cvi).coef);
+ h2.update_coef(e, -(*cvi).coef);
+
+ if (floor_var_set.find((*cvi).var) == floor_var_set.end()) {
+ GEQ_Handle h3;
+ findFloorInequality(b, (*cvi).var, h3, v);
+ floor_geq_stack.push(std::make_pair(h3, (*cvi).var));
+ floor_var_set.insert((*cvi).var);
+ }
+ break;
+ }
+ case Global_Var: {
+ Global_Var_ID g = (*cvi).var->get_global_var();
+ Variable_ID e;
+ if (g->arity() == 0)
+ e = enforced.get_local(g);
+ else
+ e = enforced.get_local(g, (*cvi).var->function_of());
+ h1.update_coef(e, (*cvi).coef);
+ h2.update_coef(e, -(*cvi).coef);
+ break;
+ }
+ default:
+ assert(0);
+ }
+ }
+ h1.update_const(p.first.get_const());
+ h2.update_const(-p.first.get_const());
+ h2.update_const(-p.first.get_coef(p.second)-1);
+ }
+ enforced.simplify();
+
+ CG_outputRepr *stRepr = NULL;
+ if (step != 1)
+ stRepr = ocg->CreateInt(abs(step));
+ CG_outputRepr *indexRepr = outputIdent(ocg, b, v, assigned_on_the_fly);
+ CG_outputRepr *ctrlRepr = ocg->CreateInductive(indexRepr, lbRepr, ubRepr, stRepr);
+
+ return std::make_pair(ctrlRepr, true);
+ }
+}
+
+
+Relation project_onto_levels(Relation R, int last_level, bool wildcards) {
+ assert(last_level >= 0 && R.is_set() && last_level <= R.n_set());
+ if (last_level == R.n_set()) return R;
+
+ int orig_vars = R.n_set();
+ int num_projected = orig_vars - last_level;
+ R = Extend_Set(R,num_projected
+ ); // Project out vars numbered > last_level
+ Mapping m1 = Mapping::Identity(R.n_set()); // now orig_vars+num_proj
+
+ for(int i=last_level+1; i <= orig_vars; i++) {
+ m1.set_map(Set_Var, i, Exists_Var, i);
+ m1.set_map(Set_Var, i+num_projected, Set_Var, i);
+ }
+
+ MapRel1(R, m1, Comb_Id);
+ R.finalize();
+ R.simplify();
+ if (!wildcards)
+ R = Approximate(R,1);
+ assert(R.is_set());
+ return R;
+}
+
+
+// Check if the lower bound already enforces the stride by
+// (Where m is coef of v in g and L is the bound on m*v):
+// Check if m divides L evenly and Check if this l.bound on v implies strideEQ
+bool boundHitsStride(const GEQ_Handle &g, Variable_ID v,
+ const EQ_Handle &strideEQ,
+ coef_t /*stride*/, // currently unused
+ Relation known) {
+/* m = coef of v in g;
+ L = bound on v part of g;
+*/
+ // Check if m divides L evenly
+ coef_t m = g.get_coef(v);
+ Relation test(known.n_set());
+ F_Exists *e = test.add_exists(); // g is "L >= mv"
+ Variable_ID alpha = e->declare(); // want: "l = m alpha"
+ F_And *a = e->add_and();
+ EQ_Handle h = a->add_EQ();
+ for(Constr_Vars_Iter I(g,false); I; I++)
+ if((*I).var != v) {
+ if((*I).var->kind() != Global_Var)
+ h.update_coef((*I).var, (*I).coef);
+ else
+ h.update_coef(test.get_local((*I).var->get_global_var()), (*I).coef);
+ }
+
+ h.update_const(g.get_const());
+ h.update_coef(alpha,m); // set alpha's coef to m
+ if (!(Gist(test,copy(known)).is_obvious_tautology()))
+ return false;
+ // Check if this lower bound on v implies the strideEQ
+ Relation boundRel = known; // want: "known and l = m v"
+ boundRel.and_with_EQ(g); // add in l = mv
+ Relation strideRel(known.n_set());
+ strideRel.and_with_EQ(strideEQ);
+ return Gist(strideRel, boundRel).is_obvious_tautology();
+}
+
+
+// // Return true if there are no variables in g except wildcards & v
+bool isSimpleStride(const EQ_Handle &g, Variable_ID v) {
+ EQ_Handle gg = g; // should not be necessary, but iterators are
+ // a bit brain-dammaged
+ bool is_simple=true;
+ for(Constr_Vars_Iter cvi(gg, false); cvi && is_simple; cvi++)
+ is_simple = ((*cvi).coef == 0 || (*cvi).var == v
+ || (*cvi).var->kind() == Wildcard_Var);
+ return is_simple;
+}
+
+
+int countStrides(Conjunct *c, Variable_ID v, EQ_Handle &strideEQ,
+ bool &simple) {
+ int strides=0;
+ for(EQ_Iterator G(c); G; G++)
+ for(Constr_Vars_Iter I(*G, true); I; I++)
+ if (((*I).coef != 0) && (*G).get_coef(v) != 0) {
+ strides++;
+ simple = isSimpleStride(*G,v);
+ strideEQ = *G;
+ break;
+ }
+ return strides;
+}
+
+namespace {
+
+bool hasEQ(Relation r, int level) {
+ r.simplify();
+ Variable_ID v = set_var(level);
+ Conjunct *s_conj = r.single_conjunct();
+ for(EQ_Iterator G(s_conj); G; G++)
+ if ((*G).get_coef(v))
+ return true;
+ return false;
+}
+
+
+
+static Relation pickEQ(Relation r, int level) {
+ r.simplify();
+ Variable_ID v = set_var(level);
+ Conjunct *s_conj = r.single_conjunct();
+ for(EQ_Iterator E(s_conj); E; E++)
+ if ((*E).get_coef(v)) {
+ Relation test_rel(r.n_set());
+ test_rel.and_with_EQ(*E);
+ return test_rel;
+ }
+ assert(0);
+ return r;
+}
+
+/* pickBound will return an EQ as a GEQ if it finds one */
+Relation pickBound(Relation r, int level, int UB) {
+ r.simplify();
+ Variable_ID v = set_var(level);
+ Conjunct *s_conj = r.single_conjunct();
+ for(GEQ_Iterator G(s_conj); G; G++) {
+ if ((UB && (*G).get_coef(v) < 0)
+ || (!UB && (*G).get_coef(v) > 0) ) {
+ Relation test_rel(r.n_set());
+ test_rel.and_with_GEQ(*G);
+ return test_rel;
+ }
+ }
+ for(EQ_Iterator E(s_conj); E; E++) {
+ if ((*E).get_coef(v)) {
+ Relation test_rel(r.n_set());
+ test_rel.and_with_GEQ(*E);
+ if ((UB && (*E).get_coef(v) > 0)
+ || (!UB && (*E).get_coef(v) < 0) )
+ test_rel = Complement(test_rel);
+ return test_rel;
+ }
+ }
+ assert(0);
+ return r;
+}
+
+}
+
+Relation pickOverhead(Relation r, int liftTo) {
+ r.simplify();
+ Conjunct *s_conj = r.single_conjunct();
+ for(GEQ_Iterator G(s_conj); G; G++) {
+ Relation test_rel(r.n_set());
+ test_rel.and_with_GEQ(*G);
+ Variable_ID v;
+ coef_t pos = -1;
+ coef_t c= 0;
+ for(Constr_Vars_Iter cvi(*G, false); cvi; cvi++)
+ if ((*cvi).coef && (*cvi).var->kind() == Input_Var
+ && (*cvi).var->get_position() > pos) {
+ v = (*cvi).var;
+ pos = (*cvi).var->get_position();
+ c = (*cvi).coef;
+ }
+#if 0
+ fprintf(DebugFile,"Coef = %d, constraint = %s\n",
+ c,(const char *)test_rel.print_formula_to_string());
+#endif
+ return test_rel;
+ }
+ for(EQ_Iterator E(s_conj); E; E++) {
+ assert(liftTo >= 1);
+ int pos = max((*E).max_tuple_pos(),max_fs_arity(*E)+1);
+
+/* Pick stride constraints only when the variables with stride are outer
+ loop variables */
+ if ((*E).has_wildcards() && pos < liftTo) {
+ Relation test_rel(r.n_set());
+ test_rel.and_with_EQ(*E);
+ return test_rel;
+ }
+ else if (!(*E).has_wildcards() && pos <= liftTo) {
+ Relation test_rel(r.n_set());
+ test_rel.and_with_EQ(*E);
+ test_rel.simplify();
+ test_rel = EQs_to_GEQs(test_rel,true);
+ return pickOverhead(test_rel,liftTo);
+ }
+ }
+ if (code_gen_debug>1) {
+ fprintf(DebugFile,"Could not find overhead:\n");
+ r.prefix_print(DebugFile);
+ }
+ return Relation::True(r.n_set());
+}
+
+
+
+bool hasBound(Relation r, int level, int UB) {
+ r.simplify();
+ Variable_ID v = set_var(level);
+ Conjunct *s_conj = r.single_conjunct();
+ for(GEQ_Iterator G(s_conj); G; G++) {
+ if (UB && (*G).get_coef(v) < 0) return true;
+ if (!UB && (*G).get_coef(v) > 0) return true;
+ }
+ for(EQ_Iterator E(s_conj); E; E++) {
+ if ((*E).get_coef(v)) return true;
+ }
+ return false;
+}
+
+bool find_any_constraint(int s, int level, Relation &kr, int direction,
+ Relation &S, bool approx) {
+ /* If we don't intersect I with restrictions, the combination
+ of S and restrictions can be unsatisfiable, which means that
+ the new split node gets pruned away and we still don't have
+ finite bounds -> infinite recursion. */
+
+ Relation I = projected_nIS[level][s];
+ I = Gist(I,copy(kr));
+ if(approx) I = Approximate(I);
+ if (hasBound(I,level,direction)) {
+ Relation pickfrom;
+ if(has_nonstride_EQ(I,level))
+ pickfrom = pickEQ(I,level);
+ else
+ pickfrom = pickBound(I,level,direction);
+ S = pickOverhead(pickfrom,level);
+ if(S.is_obvious_tautology()) S = Relation::Null();
+ return !S.is_null();
+ }
+ return false;
+}
+
+
+bool has_nonstride_EQ(Relation r, int level) {
+ r.simplify();
+ Variable_ID v = set_var(level);
+ Conjunct *s_conj = r.single_conjunct();
+ for(EQ_Iterator G(s_conj); G; G++)
+ if ((*G).get_coef(v) && !(*G).has_wildcards())
+ return true;
+ return false;
+}
+
+
+Relation minMaxOverhead(Relation r, int level) {
+ r.finalize();
+ r.simplify();
+ Conjunct *s_conj = r.single_conjunct();
+ GEQ_Handle LBs[50],UBs[50];
+ int numLBs = 0;
+ int numUBs = 0;
+ Variable_ID v = set_var(level);
+ for(GEQ_Iterator G(s_conj); G; G++) if ((*G).get_coef(v)) {
+ GEQ_Handle g = *G;
+ if (g.get_coef(v) > 0) LBs[numLBs++] = g;
+ else UBs[numUBs++] = g;
+ }
+ if (numLBs <= 1 && numUBs <= 1) {
+ return Relation::True(r.n_set());
+ }
+ Relation r1(r.n_set());
+ Relation r2(r.n_set());
+ if (numLBs > 1) {
+ // remove a max in lower bound
+ r1.and_with_GEQ(LBs[0]);
+ r2.and_with_GEQ(LBs[1]);
+ r1 = project_onto_levels(Difference(r1,r2),level-1,0);
+ }
+ else {
+ // remove a min in upper bound
+ r1.and_with_GEQ(UBs[0]);
+ r2.and_with_GEQ(UBs[1]);
+ r1 = project_onto_levels(Difference(r1,r2),level-1,0);
+ }
+#if 0
+ fprintf(DebugFile,"Testing %s\n",(const char *)r1.print_formula_to_string());
+ fprintf(DebugFile,"will removed overhead on bounds of t%d: %s\n",level,
+ (const char *)r.print_formula_to_string());
+#endif
+
+ return pickOverhead(r1, -1);
+}
+
+std::pair<EQ_Handle, int> find_simplest_assignment(const Relation &R_, Variable_ID v, const std::vector<CG_outputRepr *> &assigned_on_the_fly) {
+ Relation &R = const_cast<Relation &>(R_);
+ Conjunct *c = R.single_conjunct();
+
+ int min_cost = INT_MAX;
+ EQ_Handle eq;
+ for (EQ_Iterator ei(c->EQs()); ei; ei++)
+ if (!(*ei).has_wildcards() && (*ei).get_coef(v) != 0) {
+ int cost = 0;
+
+ if (abs((*ei).get_coef(v)) != 1)
+ cost += 4; // divide cost
+
+ int num_var = 0;
+ for (Constr_Vars_Iter cvi(*ei); cvi; cvi++)
+ if ((*cvi).var != v) {
+ num_var++;
+ if ((*cvi).var->kind() == Global_Var && (*cvi).var->get_global_var()->arity() > 0) {
+ cost += 10; // function cost
+ }
+ if (abs((*cvi).coef) != 1)
+ cost += 2; // multiply cost
+ if ((*cvi).var->kind() == Input_Var && assigned_on_the_fly[(*cvi).var->get_position()-1] != NULL) {
+ cost += 5; // substituted variable cost
+ }
+ }
+ if ((*ei).get_const() != 0)
+ num_var++;
+ if (num_var > 1)
+ cost += num_var - 1; // addition cost
+
+ if (cost < min_cost) {
+ min_cost = cost;
+ eq = *ei;
+ }
+ }
+
+ return std::make_pair(eq, min_cost);
+}
+
+int max_fs_arity(const Constraint_Handle &c) {
+ int max_arity=0;
+ for(Constr_Vars_Iter cv(c); cv; cv++)
+ if((*cv).var->kind() == Global_Var)
+ max_arity = max(max_arity,(*cv).var->get_global_var()->arity());
+ return max_arity;
+}
+
+}
diff --git a/omega/code_gen/src/rose_attributes.cc b/omega/code_gen/src/rose_attributes.cc
new file mode 100644
index 0000000..bb9681c
--- /dev/null
+++ b/omega/code_gen/src/rose_attributes.cc
@@ -0,0 +1,183 @@
+#include <code_gen/rose_attributes.h>
+
+namespace omega {
+
+CodeInsertionAttribute* getOrCreateCodeInsertionAttribute(SgNode* node) {
+ CodeInsertionAttribute* attr;
+ if(node->attributeExists("code_insertion"))
+ return static_cast<CodeInsertionAttribute*>(node->getAttribute("code_insertion"));
+ attr = new CodeInsertionAttribute();
+ node->setAttribute("code_insertion", attr);
+ return attr;
+}
+
+void postProcessRoseCodeInsertion(SgProject* proj) {
+ //generatePDF(*proj);
+ CodeInsertionVisitor visitor = CodeInsertionVisitor();
+ visitor.initialize();
+ visitor.traverseInputFiles(proj);
+ visitor.insertCode();
+}
+
+// Swap a code insertion from one node (sn) to another (dn)
+// -- note that this function does not currently remove the insertion from the sn node
+void moveCodeInsertion(SgNode* sn, CodeInsertion* ci, SgNode* dn) {
+ CodeInsertionAttribute* new_attr;
+ // TODO in the near future: replace the above statement with 'new_attr = getOrCreateCodeInsertionAttribute(...)'
+ CodeInsertionAttribute* old_attr = static_cast<CodeInsertionAttribute*>(sn->getAttribute("code_insertion"));
+ if(dn->attributeExists("code_insertion")) {
+ new_attr = static_cast<CodeInsertionAttribute*>(dn->getAttribute("code_insertion"));
+ }
+ else {
+ new_attr = new CodeInsertionAttribute();
+ dn->setAttribute("code_insertion", new_attr);
+ }
+ new_attr->add(ci);
+}
+
+// A function that copies a specific attribute from one node to another
+// this function exists to get around a ROSE limitation that does not
+// copy attributes
+void copyAttribute(std::string attr_name, SgNode* s, SgNode* d) {
+ if(s->attributeExists(attr_name)) {
+ d->setAttribute(attr_name,s->getAttribute(attr_name));
+ }
+}
+
+// TODO: find all existng attributes and iterate over them instead of doing them
+// individually
+void copyAttributes(SgNode* s, SgNode* d) {
+ copyAttribute("code_insertion", s, d);
+ //...any other attributes...
+}
+
+void CodeInsertionVisitor::initialize() {
+ this->loop_level = 0;
+ this->ci_marks = std::vector<CodeInsertionMark*>();
+}
+
+void CodeInsertionVisitor::markStmt(SgStatement* stmt, CodeInsertion* ci) {
+ // this check prevents multiple copies of stmts
+ // -- may be changed in the future
+ if(!ci->marked) {
+ CodeInsertionMark* pos = new CodeInsertionMark();
+ pos->stmt = stmt;
+ pos->ci = ci;
+ this->ci_marks.push_back(pos);
+ ci->marked = true;
+ }
+}
+
+// increase loop_level as the visitor descends
+void CodeInsertionVisitor::preOrderVisit(SgNode* n) {
+ if (isSgForStatement(n)) {
+ this->loop_level++;
+ }
+}
+
+void CodeInsertionVisitor::postOrderVisit(SgNode* n) {
+ if(isSgForStatement(n)) {
+ this->loop_level--;
+ }
+ if(isSgStatement(n)) {
+ if(n->attributeExists("code_insertion")) {
+ CodeInsertionAttribute *attr = static_cast<CodeInsertionAttribute*>(n->getAttribute("code_insertion"));
+ for(CodeInsertionPtrListItr itr = attr->begin(); itr != attr->end(); ++itr) {
+ CodeInsertion *insertion = *itr;
+ // check loop level -- if it is equivelent, mark statement for insertion
+ // -- else, move attribute up to parent
+ if(insertion->loop_level != this->loop_level) {
+ moveCodeInsertion(n, insertion, n->get_parent());
+ }
+ else {
+ this->markStmt(isSgStatement(n), insertion);
+ }
+ }
+ }
+ }
+}
+
+// final stage of algorithm that inserts marked statements
+void CodeInsertionVisitor::insertCode() {
+ for(std::vector<CodeInsertionMark*>::iterator itr = this->ci_marks.begin(); itr != this->ci_marks.end(); ++itr) {
+ CodeInsertionMark* mark = *itr;
+ SgScopeStatement* scope = static_cast<SgScopeStatement*>(mark->stmt->get_parent());
+ SageInterface::insertStatementBefore(mark->stmt, mark->ci->getStatement(scope));
+ }
+}
+
+SgStatement* PragmaInsertion::getStatement(SgScopeStatement* scopeStmt) {
+ SgStatement* stmt = SageBuilder::buildPragmaDeclaration(this->name);
+ return stmt;
+}
+
+//SgStatement* MMPrefetchInsertion::getStatement(SgScopeStatement* scopeStmt) {
+// const SgName& name = SgName("_mm_prefetch");
+// SgType* rtype = SageBuilder::buildVoidType();
+// SgExpression* arr_arg = SageBuilder::buildVarRefExp(this->arrName);
+// SgExpression* hint_arg = SageBuilder::buildShortVal(this->cacheHint);
+// SgExprListExp* args = SageBuilder::buildExprListExp(arr_arg,hint_arg);
+// SgStatement* stmt = SageBuilder::buildFunctionCallStmt(name, rtype, args, scopeStmt);
+// return stmt;
+//}
+
+SgStatement* MMPrefetchInsertion::getStatement(SgScopeStatement* scopeStmt) {
+ const SgName fname = SgName("_mm_prefetch");
+ SgType* rtype = SageBuilder::buildVoidType();
+ SgExpression* arr_arg = this->buildArrArg(scopeStmt);
+ SgExpression* hint_arg = SageBuilder::buildShortVal(this->cacheHint);
+ SgExprListExp* args = SageBuilder::buildExprListExp(arr_arg, hint_arg);
+ return SageBuilder::buildFunctionCallStmt(fname, rtype, args, scopeStmt);
+}
+
+SgExpression* MMPrefetchInsertion::buildArrArg(SgScopeStatement* scopeStmt) {
+ // if there are no index arguments given, just return a variable reference
+ if(this->indexCount == 0) {
+ const SgName aname = SgName(this->arrName);
+ return SageBuilder::buildVarRefExp(aname, scopeStmt);
+ }
+ std::vector<SgExpression*> argList = std::vector<SgExpression*>();
+ // foreach dimension
+ for(int i = 0; i < this->indexCount; i++) {
+ argList.push_back(this->makeIndexExp(i, scopeStmt));
+ }
+ return SageBuilder::buildExprListExp(argList);
+}
+
+SgExpression* MMPrefetchInsertion::makeIndexExp(int dim, SgScopeStatement* scopeStmt) {
+ //(i + offset) or (offset) or (i)
+ std::string* indexer = this->indecies.at(dim);
+ int offset = this->offsets.at(dim);
+ if(indexer == NULL) {
+ return SageBuilder::buildIntVal(offset);
+ }
+ else {
+ const SgName name = SgName(*indexer);
+ SgVarRefExp* iref = SageBuilder::buildVarRefExp(name, scopeStmt);
+ if(offset == 0) {
+ return iref;
+ }
+ else {
+ return SageBuilder::buildAddOp(iref, SageBuilder::buildIntVal(offset));
+ }
+ }
+}
+
+void MMPrefetchInsertion::initialize(const std::string& arrName, int hint) {
+ this->arrName = std::string(arrName);
+ this->cacheHint = hint;
+ this->indecies = std::vector<std::string*>();
+ this->offsets = std::vector<int>();
+ this->indexCount = 0;
+}
+void MMPrefetchInsertion::addDim(int offset) {
+ this->offsets.push_back(offset);
+ this->indecies.push_back(NULL);
+ this->indexCount++;
+}
+void MMPrefetchInsertion::addDim(int offset, const std::string& indexer) {
+ this->offsets.push_back(offset);
+ this->indecies.push_back(new std::string(indexer));
+ this->indexCount++;
+}
+}
diff --git a/omega/code_gen/src/tags b/omega/code_gen/src/tags
new file mode 100644
index 0000000..a69c38b
--- /dev/null
+++ b/omega/code_gen/src/tags
@@ -0,0 +1,158 @@
+!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/
+!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/
+!_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/
+!_TAG_PROGRAM_NAME Exuberant Ctags //
+!_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/
+!_TAG_PROGRAM_VERSION 5.8 //
+CG_split CG.cc /^CG_split::CG_split(IntTuple &active, int lvl, const Relation &cond_, CG_result *T, CG_result *F) { $/;" f class:omega::CG_split
+CG_stringRepr CG_stringRepr.cc /^CG_stringRepr::CG_stringRepr() {$/;" f class:omega::CG_stringRepr
+CG_stringRepr CG_stringRepr.cc /^CG_stringRepr::CG_stringRepr(const std::string& _s) : s(_s) {$/;" f class:omega::CG_stringRepr
+CG_suifRepr CG_suifRepr.cc /^CG_suifRepr::CG_suifRepr(): tnl_(NULL), op_() {$/;" f class:omega::CG_suifRepr
+CG_suifRepr CG_suifRepr.cc /^CG_suifRepr::CG_suifRepr(operand op): tnl_(NULL), op_(op) {$/;" f class:omega::CG_suifRepr
+CG_suifRepr CG_suifRepr.cc /^CG_suifRepr::CG_suifRepr(tree_node_list *tnl): tnl_(tnl),op_() {$/;" f class:omega::CG_suifRepr
+CreateAnd CG_stringBuilder.cc /^CG_outputRepr* CG_stringBuilder::CreateAnd(CG_outputRepr* lop, CG_outputRepr* rop) const {$/;" f class:omega::CG_stringBuilder
+CreateAnd CG_suifBuilder.cc /^CG_outputRepr* CG_suifBuilder::CreateAnd(CG_outputRepr *lop,$/;" f class:omega::CG_suifBuilder
+CreateAssignment CG_stringBuilder.cc /^CG_outputRepr* CG_stringBuilder::CreateAssignment(int indent, $/;" f class:omega::CG_stringBuilder
+CreateAssignment CG_suifBuilder.cc /^CG_outputRepr* CG_suifBuilder::CreateAssignment(int, CG_outputRepr *lhs,$/;" f class:omega::CG_suifBuilder
+CreateComment CG_stringBuilder.cc /^CG_outputRepr* CG_stringBuilder::CreateComment(int indent, const std::string &commentText) const {$/;" f class:omega::CG_stringBuilder
+CreateComment CG_suifBuilder.cc /^CG_outputRepr* CG_suifBuilder::CreateComment(int, const std::string &commentText) const {$/;" f class:omega::CG_suifBuilder
+CreateEQ CG_stringBuilder.cc /^CG_outputRepr* CG_stringBuilder::CreateEQ(CG_outputRepr* lop, CG_outputRepr* rop) const {$/;" f class:omega::CG_stringBuilder
+CreateEQ CG_suifBuilder.cc /^CG_outputRepr* CG_suifBuilder::CreateEQ(CG_outputRepr *lop,$/;" f class:omega::CG_suifBuilder
+CreateGE CG_stringBuilder.cc /^CG_outputRepr* CG_stringBuilder::CreateGE(CG_outputRepr* lop, CG_outputRepr* rop) const {$/;" f class:omega::CG_stringBuilder
+CreateGE CG_suifBuilder.cc /^CG_outputRepr* CG_suifBuilder::CreateGE(CG_outputRepr *lop,$/;" f class:omega::CG_suifBuilder
+CreateIdent CG_stringBuilder.cc /^CG_outputRepr* CG_stringBuilder::CreateIdent(const std::string &_s) const {$/;" f class:omega::CG_stringBuilder
+CreateIdent CG_suifBuilder.cc /^CG_outputRepr* CG_suifBuilder::CreateIdent(const std::string &_s) const {$/;" f class:omega::CG_suifBuilder
+CreateIf CG_stringBuilder.cc /^CG_outputRepr* CG_stringBuilder::CreateIf(int indent, CG_outputRepr* guardList,$/;" f class:omega::CG_stringBuilder
+CreateIf CG_suifBuilder.cc /^CG_outputRepr* CG_suifBuilder::CreateIf(int, CG_outputRepr *guardList,$/;" f class:omega::CG_suifBuilder
+CreateInductive CG_stringBuilder.cc /^CG_outputRepr* CG_stringBuilder::CreateInductive(CG_outputRepr* index,$/;" f class:omega::CG_stringBuilder
+CreateInductive CG_suifBuilder.cc /^CG_outputRepr* CG_suifBuilder::CreateInductive(CG_outputRepr *index,$/;" f class:omega::CG_suifBuilder
+CreateInt CG_stringBuilder.cc /^CG_outputRepr* CG_stringBuilder::CreateInt(int _i) const {$/;" f class:omega::CG_stringBuilder
+CreateInt CG_suifBuilder.cc /^CG_outputRepr* CG_suifBuilder::CreateInt(int _i) const {$/;" f class:omega::CG_suifBuilder
+CreateIntegerCeil CG_stringBuilder.cc /^CG_outputRepr* CG_stringBuilder::CreateIntegerCeil(CG_outputRepr* lop, CG_outputRepr* rop) const {$/;" f class:omega::CG_stringBuilder
+CreateIntegerDivide CG_stringBuilder.cc /^CG_outputRepr* CG_stringBuilder::CreateIntegerDivide(CG_outputRepr* lop, CG_outputRepr* rop) const {$/;" f class:omega::CG_stringBuilder
+CreateIntegerDivide CG_suifBuilder.cc /^CG_outputRepr* CG_suifBuilder::CreateIntegerDivide(CG_outputRepr *lop,$/;" f class:omega::CG_suifBuilder
+CreateIntegerMod CG_stringBuilder.cc /^CG_outputRepr* CG_stringBuilder::CreateIntegerMod(CG_outputRepr* lop, CG_outputRepr* rop) const {$/;" f class:omega::CG_stringBuilder
+CreateIntegerMod CG_suifBuilder.cc /^CG_outputRepr* CG_suifBuilder::CreateIntegerMod(CG_outputRepr *lop,$/;" f class:omega::CG_suifBuilder
+CreateInvoke CG_stringBuilder.cc /^CG_outputRepr* CG_stringBuilder::CreateInvoke(const std::string &fname,$/;" f class:omega::CG_stringBuilder
+CreateInvoke CG_suifBuilder.cc /^CG_outputRepr* CG_suifBuilder::CreateInvoke(const std::string &fname,$/;" f class:omega::CG_suifBuilder
+CreateLE CG_stringBuilder.cc /^CG_outputRepr* CG_stringBuilder::CreateLE(CG_outputRepr* lop, CG_outputRepr* rop) const {$/;" f class:omega::CG_stringBuilder
+CreateLE CG_suifBuilder.cc /^CG_outputRepr* CG_suifBuilder::CreateLE(CG_outputRepr *lop,$/;" f class:omega::CG_suifBuilder
+CreateLoop CG_stringBuilder.cc /^CG_outputRepr* CG_stringBuilder::CreateLoop(int indent, CG_outputRepr* control,$/;" f class:omega::CG_stringBuilder
+CreateLoop CG_suifBuilder.cc /^CG_outputRepr* CG_suifBuilder::CreateLoop(int, CG_outputRepr *control,$/;" f class:omega::CG_suifBuilder
+CreateMinus CG_stringBuilder.cc /^CG_outputRepr* CG_stringBuilder::CreateMinus(CG_outputRepr* lop, CG_outputRepr* rop) const {$/;" f class:omega::CG_stringBuilder
+CreateMinus CG_suifBuilder.cc /^CG_outputRepr* CG_suifBuilder::CreateMinus(CG_outputRepr *lop,$/;" f class:omega::CG_suifBuilder
+CreatePlaceHolder CG_stringBuilder.cc /^CG_outputRepr* CG_stringBuilder::CreatePlaceHolder(int indent, CG_outputRepr *stmt,$/;" f class:omega::CG_stringBuilder
+CreatePlaceHolder CG_suifBuilder.cc /^CG_outputRepr* CG_suifBuilder::CreatePlaceHolder (int, CG_outputRepr *stmt,$/;" f class:omega::CG_suifBuilder
+CreatePlus CG_stringBuilder.cc /^CG_outputRepr* CG_stringBuilder::CreatePlus(CG_outputRepr* lop, CG_outputRepr* rop) const {$/;" f class:omega::CG_stringBuilder
+CreatePlus CG_suifBuilder.cc /^CG_outputRepr* CG_suifBuilder::CreatePlus(CG_outputRepr *lop,$/;" f class:omega::CG_suifBuilder
+CreateTimes CG_stringBuilder.cc /^CG_outputRepr* CG_stringBuilder::CreateTimes(CG_outputRepr* lop, CG_outputRepr* rop) const {$/;" f class:omega::CG_stringBuilder
+CreateTimes CG_suifBuilder.cc /^CG_outputRepr* CG_suifBuilder::CreateTimes(CG_outputRepr *lop,$/;" f class:omega::CG_suifBuilder
+Dump CG_stringRepr.cc /^void CG_stringRepr::Dump() const {$/;" f class:omega::CG_stringRepr
+Dump CG_suifRepr.cc /^void CG_suifRepr::Dump() const {$/;" f class:omega::CG_suifRepr
+DumpToFile CG_stringRepr.cc /^void CG_stringRepr::DumpToFile(FILE *fp) const {$/;" f class:omega::CG_stringRepr
+DumpToFile CG_suifRepr.cc /^void CG_suifRepr::DumpToFile(FILE *fp) const {$/;" f class:omega::CG_suifRepr
+GetCode CG_suifRepr.cc /^tree_node_list* CG_suifRepr::GetCode() const {$/;" f class:omega::CG_suifRepr
+GetExpression CG_suifRepr.cc /^operand CG_suifRepr::GetExpression() const {$/;" f class:omega::CG_suifRepr
+GetIndentSpaces CG_stringBuilder.cc /^std::string GetIndentSpaces(int indent) {$/;" f namespace:omega
+GetString CG_stringBuilder.cc /^std::string GetString(CG_outputRepr* repr) {$/;" f namespace:omega
+GetString CG_stringRepr.cc /^std::string CG_stringRepr::GetString() const { $/;" f class:omega::CG_stringRepr
+JunkStaticInit code_gen.cc /^class JunkStaticInit{ public: JunkStaticInit(){ checkLoopLevel=0; fillInBounds=false;} };$/;" c namespace:omega file:
+JunkStaticInit code_gen.cc /^class JunkStaticInit{ public: JunkStaticInit(){ checkLoopLevel=0; fillInBounds=false;} };$/;" f class:omega::JunkStaticInit
+MMGenerateCode code_gen.cc /^CG_outputRepr* MMGenerateCode(CG_outputBuilder* ocg, RelTuple &T, SetTuple &old_IS, $/;" f namespace:omega
+MMGenerateCode code_gen.cc /^CG_outputRepr* MMGenerateCode(CG_outputBuilder* ocg, RelTuple &T, SetTuple &old_IS, const Tuple<CG_outputRepr *> &stmt_content, Relation &known, int effort) {$/;" f namespace:omega
+MMGenerateCode code_gen.cc /^std::string MMGenerateCode(RelTuple &T, SetTuple &old_IS, Relation &known, int effort) {$/;" f namespace:omega
+SafeguardString CG_stringBuilder.cc /^static std::string SafeguardString(const std::string &s, char op) {$/;" f namespace:omega
+StmtListAppend CG_stringBuilder.cc /^CG_outputRepr* CG_stringBuilder::StmtListAppend(CG_outputRepr* list1, CG_outputRepr* list2) const {$/;" f class:omega::CG_stringBuilder
+StmtListAppend CG_suifBuilder.cc /^CG_outputRepr* CG_suifBuilder::StmtListAppend(CG_outputRepr *list1, $/;" f class:omega::CG_suifBuilder
+boundHitsStride output_repr.cc /^bool boundHitsStride(const GEQ_Handle &g, Variable_ID v,$/;" f namespace:omega
+checkLoopLevel code_gen.cc /^int checkLoopLevel;$/;" m namespace:omega file:
+clear CG_suifRepr.cc /^void CG_suifRepr::clear() {$/;" f class:omega::CG_suifRepr
+clone CG_stringRepr.cc /^CG_outputRepr* CG_stringRepr::clone() {$/;" f class:omega::CG_stringRepr
+clone CG_suifRepr.cc /^CG_outputRepr* CG_suifRepr::clone() {$/;" f class:omega::CG_suifRepr
+code_gen_debug code_gen.cc /^int code_gen_debug=0;$/;" m namespace:omega file:
+countStrides output_repr.cc /^int countStrides(Conjunct *c, Variable_ID v, EQ_Handle &strideEQ, $/;" f namespace:omega
+create_stride_on_bound output_repr.cc /^Relation create_stride_on_bound(int n, const std::map<Variable_ID, coef_t> &lb, coef_t stride) {$/;" f namespace:omega::__anon2
+exit_code_gen CG_suifBuilder.cc /^void exit_code_gen(void) {$/;" f namespace:omega
+extract_function_symbols code_gen.cc /^RelTuple extract_function_symbols(SetTuple &sets) {$/;" f namespace:omega
+fillInBounds code_gen.cc /^bool fillInBounds;$/;" m namespace:omega file:
+filter_function_symbols code_gen.cc /^SetTuple filter_function_symbols(SetTuple &sets, bool keep_fs){$/;" f namespace:omega
+findFloorInequality output_repr.cc /^bool findFloorInequality(Relation &r, Variable_ID v, GEQ_Handle &h, Variable_ID excluded) {$/;" f namespace:omega
+findOverhead CG.cc /^Relation CG_leaf::findOverhead(int liftTo) {$/;" f class:omega::CG_leaf
+findOverhead CG.cc /^Relation CG_loop::findOverhead(int liftTo) {$/;" f class:omega::CG_loop
+findOverhead CG.cc /^Relation CG_split::findOverhead(int liftTo) {$/;" f class:omega::CG_split
+find_any_constraint output_repr.cc /^bool find_any_constraint(int s, int level, Relation &kr, int direction,$/;" f namespace:omega
+find_simplest_assignment output_repr.cc /^std::pair<EQ_Handle, int> find_simplest_assignment(const Relation &R_, Variable_ID v, const std::vector<CG_outputRepr *> &assigned_on_the_fly) {$/;" f namespace:omega
+force_finite_bounds CG.cc /^CG_result * CG_loop::force_finite_bounds() {$/;" f class:omega::CG_loop
+force_finite_bounds CG.cc /^CG_result * CG_split::force_finite_bounds() {$/;" f class:omega::CG_split
+gen_recursive code_gen.cc /^CG_result *gen_recursive(int level, IntTuple &isActive) {$/;" f namespace:omega
+get_stride output_repr.cc /^void get_stride(const Constraint_Handle &h, Variable_ID &wc, coef_t &step){$/;" f namespace:omega::__anon1
+greatest_common_step output_repr.cc /^Relation greatest_common_step(const Tuple<Relation> &I, const Tuple<int> &active, int level, const Relation &known) {$/;" f namespace:omega
+hasBound output_repr.cc /^bool hasBound(Relation r, int level, int UB) {$/;" f namespace:omega
+hasEQ output_repr.cc /^bool hasEQ(Relation r, int level) {$/;" f namespace:omega::__anon3
+has_nonstride_EQ output_repr.cc /^bool has_nonstride_EQ(Relation r, int level) {$/;" f namespace:omega
+hoistGuard CG.cc /^Relation CG_leaf::hoistGuard() {$/;" f class:omega::CG_leaf
+hoistGuard CG.cc /^Relation CG_loop::hoistGuard() {$/;" f class:omega::CG_loop
+hoistGuard CG.cc /^Relation CG_split::hoistGuard() {$/;" f class:omega::CG_split
+init_code_gen CG_suifBuilder.cc /^void init_code_gen(int&, char* []) {$/;" f namespace:omega
+isSimpleStride output_repr.cc /^bool isSimpleStride(const EQ_Handle &g, Variable_ID v) {$/;" f namespace:omega
+junkInitInstance__ code_gen.cc /^static JunkStaticInit junkInitInstance__;$/;" m namespace:omega file:
+k_ocg_comment CG_suifBuilder.cc /^char *k_ocg_comment;$/;" m namespace:omega file:
+last_level code_gen.cc /^int last_level;\/\/ Should not be global, but it is.$/;" m namespace:omega file:
+libcode_gen_suif_string CG_suifBuilder.cc /^const char *libcode_gen_suif_string = "";$/;" m namespace:omega file:
+libcode_gen_ver_string CG_suifBuilder.cc /^const char *libcode_gen_ver_string = "";$/;" m namespace:omega file:
+libcode_gen_who_string CG_suifBuilder.cc /^const char *libcode_gen_who_string = "";$/;" m namespace:omega file:
+liftOverhead CG.cc /^CG_result * CG_loop::liftOverhead(int depth) {$/;" f class:omega::CG_loop
+liftOverhead CG.cc /^CG_result * CG_split::liftOverhead(int depth) {$/;" f class:omega::CG_split
+loopIdxNames code_gen.cc /^Tuple< Tuple<std::string> > loopIdxNames;\/\/per stmt$/;" m namespace:omega file:
+lowerBoundForLevel code_gen.cc /^int lowerBoundForLevel;$/;" m namespace:omega file:
+max_fs_arity output_repr.cc /^int max_fs_arity(const Constraint_Handle &c) {$/;" f namespace:omega
+minMaxOverhead output_repr.cc /^Relation minMaxOverhead(Relation r, int level) {$/;" f namespace:omega
+new_IS code_gen.cc /^SetTuple new_IS;$/;" m namespace:omega file:
+omega CG.cc /^namespace omega {$/;" n file:
+omega CG_stringBuilder.cc /^namespace omega {$/;" n file:
+omega CG_stringRepr.cc /^namespace omega {$/;" n file:
+omega CG_suifBuilder.cc /^namespace omega {$/;" n file:
+omega CG_suifRepr.cc /^namespace omega {$/;" n file:
+omega code_gen.cc /^namespace omega {$/;" n file:
+omega output_repr.cc /^namespace omega {$/;" n file:
+outputAssignment output_repr.cc /^std::pair<CG_outputRepr *, bool> outputAssignment(CG_outputBuilder *ocg, const Relation &R_, Variable_ID v, Relation &enforced, CG_outputRepr *&if_repr, const std::vector<CG_outputRepr *> &assigned_on_the_fly) {$/;" f namespace:omega
+outputBounds output_repr.cc /^std::pair<CG_outputRepr *, bool> outputBounds(CG_outputBuilder* ocg, const Relation &bounds, Variable_ID v, int indent, Relation &enforced, const std::vector<CG_outputRepr *> &assigned_on_the_fly) {$/;" f namespace:omega
+outputEasyBoundAsRepr output_repr.cc /^CG_outputRepr* outputEasyBoundAsRepr(CG_outputBuilder* ocg, Relation &bounds,$/;" f namespace:omega
+outputGuard output_repr.cc /^CG_outputRepr *outputGuard(CG_outputBuilder* ocg, const Relation &guards_in, const std::vector<CG_outputRepr *> &assigned_on_the_fly) {$/;" f namespace:omega
+outputIdent output_repr.cc /^CG_outputRepr* outputIdent(CG_outputBuilder* ocg, const Relation &R_, Variable_ID v, const std::vector<CG_outputRepr *> &assigned_on_the_fly) {$/;" f namespace:omega
+outputLBasRepr output_repr.cc /^CG_outputRepr *outputLBasRepr(CG_outputBuilder* ocg, const GEQ_Handle &g, $/;" f namespace:omega
+outputStatement output_repr.cc /^CG_outputRepr* outputStatement(CG_outputBuilder *ocg, CG_outputRepr *stmt, int indent, const Relation &mapping_, const Relation &known_, const std::vector<CG_outputRepr *> &assigned_on_the_fly) {$/;" f namespace:omega
+outputSubstitution output_repr.cc /^Tuple<CG_outputRepr*> outputSubstitution(CG_outputBuilder* ocg, const Relation &R_, const std::vector<CG_outputRepr *> &assigned_on_the_fly) {$/;" f namespace:omega
+outputUBasRepr output_repr.cc /^CG_outputRepr *outputUBasRepr(CG_outputBuilder* ocg, const GEQ_Handle &g, $/;" f namespace:omega
+output_EQ_strides output_repr.cc /^CG_outputRepr *output_EQ_strides(CG_outputBuilder* ocg, const Relation &guards_in, const std::vector<CG_outputRepr *> &assigned_on_the_fly) {$/;" f namespace:omega
+output_GEQ_strides output_repr.cc /^CG_outputRepr *output_GEQ_strides(CG_outputBuilder* ocg, const Relation &guards_in, const std::vector<CG_outputRepr *> &assigned_on_the_fly) {$/;" f namespace:omega
+output_as_guard output_repr.cc /^CG_outputRepr* output_as_guard(CG_outputBuilder* ocg, const Relation &guards_in, Constraint_Handle e, bool is_equality, const std::vector<CG_outputRepr *> &assigned_on_the_fly) {$/;" f namespace:omega
+pickBound output_repr.cc /^Relation pickBound(Relation r, int level, int UB) {$/;" f namespace:omega::__anon3
+pickEQ output_repr.cc /^static Relation pickEQ(Relation r, int level) {$/;" f namespace:omega::__anon3
+pickOverhead output_repr.cc /^Relation pickOverhead(Relation r, int liftTo) {$/;" f namespace:omega
+print CG.cc /^std::string CG_result::print(int indent) {$/;" f class:omega::CG_result
+printRepr CG.cc /^CG_outputRepr* CG_leaf::printRepr(CG_outputBuilder* ocg, int indent, const std::vector<CG_outputRepr *> &assigned_on_the_fly) {$/;" f class:omega::CG_leaf
+printRepr CG.cc /^CG_outputRepr* CG_loop::printRepr(CG_outputBuilder* ocg, int indent, const std::vector<CG_outputRepr *> &assigned_on_the_fly) {$/;" f class:omega::CG_loop
+printRepr CG.cc /^CG_outputRepr* CG_split::printRepr(CG_outputBuilder* ocg, int indent, const std::vector<CG_outputRepr *> &assigned_on_the_fly) {$/;" f class:omega::CG_split
+printStructure CG.cc /^std::string CG_leaf::printStructure(int) {$/;" f class:omega::CG_leaf
+printStructure CG.cc /^std::string CG_loop::printStructure(int indent) {$/;" f class:omega::CG_loop
+printStructure CG.cc /^std::string CG_split::printStructure(int indent) {$/;" f class:omega::CG_split
+project_onto_levels output_repr.cc /^Relation project_onto_levels(Relation R, int last_level, bool wildcards) {$/;" f namespace:omega
+projected_nIS code_gen.cc /^SetTupleTuple projected_nIS;$/;" m namespace:omega file:
+recompute CG.cc /^CG_result * CG_loop::recompute(const Relation &k, const Relation &r) {$/;" f class:omega::CG_loop
+recompute CG.cc /^CG_result * CG_split::recompute(const Relation &k, const Relation &r) {$/;" f class:omega::CG_split
+recompute CG.cc /^CG_result* CG_leaf::recompute(const Relation &k, const Relation &r) {$/;" f class:omega::CG_leaf
+removeGuard CG.cc /^void CG_leaf::removeGuard() {$/;" f class:omega::CG_leaf
+smtNonSplitLevels code_gen.cc /^Tuple< IntTuple > smtNonSplitLevels;$/;" m namespace:omega file:
+statementInfo code_gen.cc /^Tuple<CG_outputRepr *> statementInfo;$/;" m namespace:omega file:
+stmtForLoopCheck code_gen.cc /^int stmtForLoopCheck;$/;" m namespace:omega file:
+strip_function_symbols code_gen.cc /^RelTuple strip_function_symbols(SetTuple &sets) {$/;" f namespace:omega
+substitute CG_suifBuilder.cc /^bool substitute(instruction *in, var_sym *sym, operand expr, base_symtab *st) {$/;" f namespace:omega
+substitute CG_suifBuilder.cc /^bool substitute(tree_node *tn, var_sym *sym, operand expr, base_symtab *st) {$/;" f namespace:omega
+substitute CG_suifBuilder.cc /^bool substitute(tree_node_list *tnl, var_sym *sym, operand expr,$/;" f namespace:omega
+syncs code_gen.cc /^std::vector< std::pair<int, std::string> > syncs;$/;" m namespace:omega file:
+transformations code_gen.cc /^RelTuple transformations;$/;" m namespace:omega file:
+upperBoundForLevel code_gen.cc /^int upperBoundForLevel;$/;" m namespace:omega file:
+var_substitution_threshold output_repr.cc /^int var_substitution_threshold = 4;$/;" m namespace:omega file:
+~CG_stringRepr CG_stringRepr.cc /^CG_stringRepr::~CG_stringRepr() {$/;" f class:omega::CG_stringRepr
+~CG_suifRepr CG_suifRepr.cc /^CG_suifRepr::~CG_suifRepr() {$/;" f class:omega::CG_suifRepr