-void (set_entity_additional_property)(entity *ent, unsigned flag) {
- _set_entity_additional_property(ent, (irg_additional_property)flag);
+/* Sets one additional graph property. */
+void set_entity_additional_property(entity *ent, mtp_additional_property flag)
+{
+ ir_graph *irg;
+
+ assert(is_Method_type(get_entity_type(ent)));
+
+ /* first check, if the graph exists */
+ irg = get_entity_irg(ent);
+ if (irg)
+ set_irg_additional_property(irg, flag);
+ else {
+ unsigned mask = ent->irg_add_properties;
+
+ if (mask & mtp_property_inherited)
+ mask = get_method_additional_properties(get_entity_type(ent));
+
+ /* do not allow to set the mtp_property_inherited flag or
+ * the automatic inheritance of flags will not work */
+ ent->irg_add_properties = mask | (flag & ~mtp_property_inherited);
+ }