// identical if they are pointer equals of each other. This allows us to have
// two opaque types that end up resolving to different concrete types later.
//
-// Opaque types are also kinda wierd and scary and different because they have
+// Opaque types are also kinda weird and scary and different because they have
// to keep a list of uses of the type. When, through linking, parsing, or
// bytecode reading, they become resolved, they need to find and update all
// users of the unknown type, causing them to reference a new, more concrete
return static_cast<SimpleType>(Val->get());
}
};
+
template<> struct simplify_type<const User::op_iterator>
: public simplify_type<User::op_iterator> {};
return static_cast<SimpleType>(Val->get());
}
};
+
template<> struct simplify_type<const User::const_op_iterator>
: public simplify_type<User::const_op_iterator> {};
#if 0
if (CS.getNumPtrArgs() && CS.getCalleeNode() == CS.getPtrArg(0).getNode() &&
CS.getCalleeNode() && CS.getCalleeNode()->getGlobals().empty())
- std::cerr << "WARNING: WIERD CALL SITE FOUND!\n";
+ std::cerr << "WARNING: WEIRD CALL SITE FOUND!\n";
#endif
}
AssertNodeInGraph(CS.getRetVal().getNode());