@@ -2023,8 +2023,9 @@ c-family/stub-objc.o : c-family/stub-obj
coretypes.h $(TREE_H) $(C_COMMON_H) c-family/c-objc.h
c-family/c-ubsan.o : c-family/c-ubsan.c $(CONFIG_H) $(SYSTEM_H) \
- coretypes.h $(TREE_H) $(C_COMMON_H) c-family/c-ubsan.h
-
+ coretypes.h $(TREE_H) $(C_COMMON_H) c-family/c-ubsan.h \
+ alloc-pool.h $(CGRAPH_H) $(GIMPLE_H) $(HASH_TABLE_H) output.h \
+ toplev.h ubsan.h
default-c.o: config/default-c.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(C_TARGET_H) $(C_TARGET_DEF_H)
$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) \
@@ -2261,11 +2262,11 @@ tsan.o : $(CONFIG_H) $(SYSTEM_H) $(TREE_
$(TM_H) coretypes.h $(TREE_DUMP_H) $(TREE_PASS_H) $(CGRAPH_H) $(GGC_H) \
$(BASIC_BLOCK_H) $(FLAGS_H) $(FUNCTION_H) \
$(TM_P_H) $(TREE_FLOW_H) $(DIAGNOSTIC_CORE_H) $(GIMPLE_H) tree-iterator.h \
- intl.h cfghooks.h output.h options.h c-family/c-common.h tsan.h asan.h \
+ intl.h cfghooks.h output.h options.h $(C_COMMON_H) tsan.h asan.h \
tree-ssa-propagate.h
ubsan.o : ubsan.c ubsan.h $(CONFIG_H) $(SYSTEM_H) $(GIMPLE_H) \
output.h coretypes.h $(TREE_H) alloc-pool.h $(CGRAPH_H) $(HASH_TABLE_H) \
- toplev.h c-family/c-common.h c-family/c-ubsan.h
+ toplev.h $(C_COMMON_H)
tree-ssa-tail-merge.o: tree-ssa-tail-merge.c \
$(SYSTEM_H) $(CONFIG_H) coretypes.h $(TM_H) $(BITMAP_H) \
$(FLAGS_H) $(TM_P_H) $(BASIC_BLOCK_H) $(CFGLOOP_H) \
@@ -2823,7 +2824,7 @@ builtins.o : builtins.c builtins.h $(CON
hard-reg-set.h $(DIAGNOSTIC_CORE_H) hard-reg-set.h $(EXCEPT_H) \
$(TM_P_H) $(PREDICT_H) $(LIBFUNCS_H) langhooks.h $(BASIC_BLOCK_H) \
tree-mudflap.h realmpfr.h $(BUILTINS_DEF) $(MACHMODE_H) \
- $(DIAGNOSTIC_CORE_H) $(TREE_FLOW_H) value-prof.h
+ $(DIAGNOSTIC_CORE_H) $(TREE_FLOW_H) value-prof.h ubsan.h
calls.o : calls.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(TREE_H) $(FLAGS_H) $(EXPR_H) $(OPTABS_H) langhooks.h $(TARGET_H) \
$(LIBFUNCS_H) $(REGS_H) $(DIAGNOSTIC_CORE_H) output.h \
> > #ifndef PAD_VARARGS_DOWN
> > @@ -10281,6 +10282,11 @@ fold_builtin_0 (location_t loc, tree fnd
> > case BUILT_IN_CLASSIFY_TYPE:
> > return fold_builtin_classify_type (NULL_TREE);
> >
> > + case BUILT_IN_UNREACHABLE:
> > + if (flag_sanitize & SANITIZE_UNDEFINED)
> > + return ubsan_instrument_unreachable (loc);
> > + break;
>
> If you have committed your fsanitize= option handling patch,
> I'd expect the above to be actually SANITIZE_UNREACHABLE or
> whatever the option is plus changes to add SANITIZE_UNREACHABLE
> to SANITIZE_UNDEFINED, and parsing unrechable string in *opts.c.
Right, done with following patch. Sorry for that.
2013-07-14 Marek Polacek <polacek@redhat.com>
* opts.c (common_handle_option): Add -fsanitize=unreachable option.
* builtins.c (fold_builtin_0): Use SANITIZE_UNREACHABLE instead of
SANITIZE_UNDEFINED.
* flag-types.h (enum sanitize_code): Add SANITIZE_UNREACHABLE.
@@ -1423,6 +1423,8 @@ common_handle_option (struct gcc_options
{ "integer-divide-by-zero", SANITIZE_DIVIDE,
sizeof "integer-divide-by-zero" - 1 },
{ "undefined", SANITIZE_UNDEFINED, sizeof "undefined" - 1 },
+ { "unreachable", SANITIZE_UNREACHABLE,
+ sizeof "unreachable" - 1 },
{ NULL, 0, 0 }
};
const char *comma;
@@ -10283,7 +10283,7 @@ fold_builtin_0 (location_t loc, tree fnd
return fold_builtin_classify_type (NULL_TREE);
case BUILT_IN_UNREACHABLE:
- if (flag_sanitize & SANITIZE_UNDEFINED)
+ if (flag_sanitize & SANITIZE_UNREACHABLE)
return ubsan_instrument_unreachable (loc);
break;
@@ -200,7 +200,8 @@ enum sanitize_code {
/* UndefinedBehaviorSanitizer. */
SANITIZE_SHIFT = 1 << 2,
SANITIZE_DIVIDE = 1 << 3,
- SANITIZE_UNDEFINED = SANITIZE_SHIFT | SANITIZE_DIVIDE
+ SANITIZE_UNREACHABLE = 1 << 4,
+ SANITIZE_UNDEFINED = SANITIZE_SHIFT | SANITIZE_DIVIDE | SANITIZE_UNREACHABLE
};
#endif /* ! GCC_FLAG_TYPES_H */