summaryrefslogtreecommitdiff
path: root/gcc/cp/call.c
diff options
context:
space:
mode:
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>1998-08-27 19:03:59 +0000
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>1998-08-27 19:03:59 +0000
commit5eaed30bf13a149c95ee056653bd0e4747e415fd (patch)
treebeb01d2bd7dc8678a3be6eaec1429f01a860c37b /gcc/cp/call.c
parenta1793580aa34712d15c1db8bc67ed608b8162521 (diff)
downloadgcc-5eaed30bf13a149c95ee056653bd0e4747e415fd.tar.gz
* lex.c (handle_cp_pragma): Remove #pragma vtable.
* lang-options.h: Remove +e options. * decl2.c (lang_decode_option): Likewise. (import_export_vtable): Don't check write_virtuals. (finish_vtable_vardecl, finish_file): Likewise. * search.c (dfs_debug_mark): Likewise. * semantics.c (begin_class_definition): Likewise. * class.c (build_vtable, finish_vtbls, finish_struct_1): Likewise. * call.c (build_over_call): Check flag_elide_constructors. * decl2.c: flag_elide_constructors defaults to 1. * typeck.c (convert_arguments): Remove return_loc parm. (build_function_call_real): Adjust. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22027 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cp/call.c')
-rw-r--r--gcc/cp/call.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/cp/call.c b/gcc/cp/call.c
index 5564fa3a535..bb0b71a4097 100644
--- a/gcc/cp/call.c
+++ b/gcc/cp/call.c
@@ -3409,8 +3409,11 @@ build_over_call (cand, args, flags)
/* Avoid actually calling copy constructors and copy assignment operators,
if possible. */
- if (DECL_CONSTRUCTOR_P (fn)
- && TREE_VEC_LENGTH (convs) == 1
+
+ if (! flag_elide_constructors)
+ /* Do things the hard way. */;
+ else if (DECL_CONSTRUCTOR_P (fn)
+ && TREE_VEC_LENGTH (convs) == 1
&& copy_args_p (fn))
{
tree targ;