diff options
Diffstat (limited to 'gcc')
| -rw-r--r-- | gcc/cp/call.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/gcc/cp/call.c b/gcc/cp/call.c index 185c037..ecace2d 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -4326,20 +4326,18 @@ convert_like_real (conversion *convs, tree expr, tree fn, int argnum, } /* Build a call to __builtin_trap which can be used as an expression of - type TYPE. This looks like *(__builtin_trap(), (TYPE*)NULL). */ + type TYPE. */ static tree call_builtin_trap (tree type) { tree fn = implicit_built_in_decls[BUILT_IN_TRAP]; - tree t; my_friendly_assert (fn != NULL, 20030927); fn = build_call (fn, NULL_TREE); - t = convert (build_pointer_type (type), null_node); - t = build (COMPOUND_EXPR, TREE_TYPE (t), fn, t); - t = build_indirect_ref (t, NULL); - return t; + fn = build (COMPOUND_EXPR, type, fn, error_mark_node); + fn = force_target_expr (type, fn); + return fn; } /* ARG is being passed to a varargs function. Perform any conversions |
