+2013-03-28 Paolo Carlini <paolo.carlini@oracle.com>
+ Manuel Lopez-Ibanez <manu@gcc.gnu.org>
+
+ PR c++/56725
+ * call.c (convert_like_real): Change series of two permerrors
+ to permerror + inform (and likewise for two errors).
+ (build_new_method_call_1): Likewise.
+ * typeck.c (convert_for_initialization): Change additional
+ warning or error to inform.
+
2013-03-28 Gabriel Dos Reis <gdr@integrable-solutions.net>
* cp-tree.h (next_aggr_init_expr_arg): Remove static specifier.
break;
}
- permerror (loc, "invalid conversion from %qT to %qT",
- TREE_TYPE (expr), totype);
- if (fn)
- permerror (DECL_SOURCE_LOCATION (fn),
- " initializing argument %P of %qD", argnum, fn);
+ if (permerror (loc, "invalid conversion from %qT to %qT",
+ TREE_TYPE (expr), totype)
+ && fn)
+ inform (DECL_SOURCE_LOCATION (fn),
+ "initializing argument %P of %qD", argnum, fn);
return cp_convert (totype, expr, complain);
}
build_user_type_conversion (totype, convs->u.expr, LOOKUP_NORMAL,
complain);
if (fn)
- error (" initializing argument %P of %q+D", argnum, fn);
+ inform (input_location, "initializing argument %P of %q+D",
+ argnum, fn);
}
return error_mark_node;
error_at (loc, "cannot bind %qT lvalue to %qT",
TREE_TYPE (expr), totype);
if (fn)
- error (" initializing argument %P of %q+D", argnum, fn);
+ inform (input_location,
+ "initializing argument %P of %q+D", argnum, fn);
return error_mark_node;
}
if (! (complain & tf_error))
return error_mark_node;
- permerror (input_location,
- "cannot call constructor %<%T::%D%> directly",
- basetype, name);
- permerror (input_location, " for a function-style cast, remove the "
- "redundant %<::%D%>", name);
+ if (permerror (input_location,
+ "cannot call constructor %<%T::%D%> directly",
+ basetype, name))
+ inform (input_location, "for a function-style cast, remove the "
+ "redundant %<::%D%>", name);
call = build_functional_cast (basetype, build_tree_list_vec (user_args),
complain);
return call;
if (fndecl)
savew = warningcount + werrorcount, savee = errorcount;
rhs = initialize_reference (type, rhs, flags, complain);
- if (fndecl)
- {
- if (warningcount + werrorcount > savew)
- warning (0, "in passing argument %P of %q+D", parmnum, fndecl);
- else if (errorcount > savee)
- error ("in passing argument %P of %q+D", parmnum, fndecl);
- }
+
+ if (fndecl
+ && (warningcount + werrorcount > savew || errorcount > savee))
+ inform (input_location,
+ "in passing argument %P of %q+D", parmnum, fndecl);
+
return rhs;
}
+2013-03-28 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/56725
+ * g++.dg/conversion/op4.C: Adjust.
+ * g++.dg/cpp0x/rv1n.C: Likewise.
+ * g++.dg/cpp0x/rv2n.C: Likewise.
+ * g++.dg/cpp0x/template_deduction.C: Likewise.
+ * g++.dg/expr/cond8.C: Likewise.
+ * g++.dg/other/error4.C: Likewise.
+ * g++.old-deja/g++.bugs/900514_03.C: Likewise.
+ * g++.old-deja/g++.bugs/900519_02.C: Likewise.
+ * g++.old-deja/g++.bugs/900519_03.C: Likewise.
+ * g++.old-deja/g++.bugs/900520_02.C: Likewise.
+ * g++.old-deja/g++.jason/conversion2.C: Likewise.
+ * g++.old-deja/g++.law/cvt20.C: Likewise.
+ * g++.old-deja/g++.law/cvt8.C: Likewise.
+ * g++.old-deja/g++.law/init8.C: Likewise.
+ * g++.old-deja/g++.mike/net12.C: Likewise.
+ * g++.old-deja/g++.mike/net8.C: Likewise.
+ * g++.old-deja/g++.mike/p2793.C: Likewise.
+ * g++.old-deja/g++.mike/p3836.C: Likewise.
+ * g++.old-deja/g++.mike/p418.C: Likewise.
+ * g++.old-deja/g++.mike/p701.C: Likewise.
+ * g++.old-deja/g++.mike/p807.C: Likewise.
+
2013-03-28 Tejas Belagod <tejas.belagod@arm.com>
PR middle-end/56694
- * g++.dg/torture/pr56694.C: Fix test case to build on bare-metal
+ * g++.dg/torture/pr56694.C: Fix test case to build on bare-metal
targets.
2013-03-28 Marek Polacek <polacek@redhat.com>
}
};
-void add_one (X & ref) { /* { dg-error "in passing argument" } */
+void add_one (X & ref) { /* { dg-message "in passing argument" } */
++ ref.x;
}
// 1 at a time
-one sink_1_1( A&); // { dg-error "" }
+one sink_1_1( A&); // { dg-message "" }
int test1_1()
{
return 0;
}
-two sink_1_2(const A&); // { dg-error "" }
+two sink_1_2(const A&); // { dg-message "" }
int test1_2()
{
return 0;
}
-three sink_1_3(volatile A&); // { dg-error "" }
+three sink_1_3(volatile A&); // { dg-message "" }
int test1_3()
{
return 0;
}
-four sink_1_4(const volatile A&); // { dg-error "" }
+four sink_1_4(const volatile A&); // { dg-message "" }
int test1_4()
{
return 0;
}
-five sink_1_5( A&&); // { dg-error "" }
+five sink_1_5( A&&); // { dg-message "" }
int test1_5()
{
return 0;
}
-six sink_1_6(const A&&); // { dg-error "" }
+six sink_1_6(const A&&); // { dg-message "" }
int test1_6()
{
return 0;
}
-seven sink_1_7(volatile A&&); // { dg-error "" }
+seven sink_1_7(volatile A&&); // { dg-message "" }
int test1_7()
{
return 0;
}
-eight sink_1_8(const volatile A&&); // { dg-error "" }
+eight sink_1_8(const volatile A&&); // { dg-message "" }
int test1_8()
{
}
one sink_2_18( A&);
-eight sink_2_18(const volatile A&&); // { dg-error "argument" }
+eight sink_2_18(const volatile A&&); // { dg-message "argument" }
int test2_18()
{
}
two sink_2_28(const A&);
-eight sink_2_28(const volatile A&&); // { dg-error "argument" }
+eight sink_2_28(const volatile A&&); // { dg-message "argument" }
int test2_28()
{
}
three sink_2_38(volatile A&);
-eight sink_2_38(const volatile A&&); // { dg-error "argument" }
+eight sink_2_38(const volatile A&&); // { dg-message "argument" }
int test2_38()
{
return 0;
}
-five sink_2_58( A&&); // { dg-error "argument" }
-eight sink_2_58(const volatile A&&); // { dg-error "argument" }
+five sink_2_58( A&&); // { dg-message "argument" }
+eight sink_2_58(const volatile A&&); // { dg-message "argument" }
int test2_58()
{
return 0;
}
-six sink_2_68(const A&&); // { dg-error "argument" }
-eight sink_2_68(const volatile A&&); // { dg-error "argument" }
+six sink_2_68(const A&&); // { dg-message "argument" }
+eight sink_2_68(const volatile A&&); // { dg-message "argument" }
int test2_68()
{
sink_2_68(cva); // { dg-error "lvalue" }
}
-seven sink_2_78(volatile A&&); // { dg-error "argument" }
-eight sink_2_78(const volatile A&&); // { dg-error "argument" }
+seven sink_2_78(volatile A&&); // { dg-message "argument" }
+eight sink_2_78(const volatile A&&); // { dg-message "argument" }
int test2_78()
{
template <bool is_lvalue_ref, bool is_rvalue_ref, class T>
void
-test2(const T&&) // { dg-error "argument" }
+test2(const T&&) // { dg-message "argument" }
{
sa<is_lvalue_reference<const T&&>::value == is_lvalue_ref> t1;
sa<is_rvalue_reference<const T&&>::value == is_rvalue_ref> t2;
struct A
{
- A(void*); // { dg-error "initializing" }
+ A(void*); // { dg-message "initializing" }
~A();
};
struct Wrapper {};
-void Foo(int const &); // { dg-error "in passing" "" }
+void Foo(int const &); // { dg-message "in passing" "" }
void Baz ()
{
struct t_0_st_0;
-struct t_0_st_1 { // { dg-error "initializing" }
+struct t_0_st_1 { // { dg-message "initializing" }
int member;
t_0_st_1 (t_0_st_0&);// { dg-message "note" }
struct t_2_st_0;
-struct t_2_st_1 { // { dg-error "initializing" }
+struct t_2_st_1 { // { dg-message "initializing" }
int member;
t_2_st_1 (t_2_st_0); // { dg-message "note" }
extern const int cint_obj = 9;
volatile int vint_obj = 9;
-void take_int_ref (int& arg) { } // { dg-error "" } referenced by errors below
+void take_int_ref (int& arg) { } // { dg-message "" } referenced by errors below
int& global_int_ref0 = cint_obj; // { dg-error "" }
int& global_int_ref1 = vint_obj; // { dg-error "" }
extern const int cint_obj;
extern volatile int vint_obj;
-void take_cint_ref (const int& arg) { } // { dg-error "" }
-void take_vint_ref (volatile int& arg) { } // { dg-error "" }
+void take_cint_ref (const int& arg) { } // { dg-message "" }
+void take_vint_ref (volatile int& arg) { } // { dg-message "" }
const int& global_cint_ref2 = vint_obj; // { dg-error "" }
typedef b_array &b_array_ref;
typedef u_array &u_array_ref;
-void take_b_array_ref (b_array_ref arg) { } // { dg-error "" } passed to here
+void take_b_array_ref (b_array_ref arg) { } // { dg-message "" } passed to here
extern u_array u_array_gbl_obj;
// { dg-do assemble }
// PRMS Id: 3069
-void f(int&); // { dg-error "" } referenced by error below
+void f(int&); // { dg-message "" } referenced by error below
void g(const int& i) {
f(i); // { dg-error "" } discarding const
}
// Compiles fine with Sun CC 2.1
-void f(char *& x) // { dg-error "passing argument" }
+void f(char *& x) // { dg-message "passing argument" }
{
x++;
}
return a;
}
-void f(A &a) { // { dg-error "" } in passing argument
+void f(A &a) { // { dg-message "" } in passing argument
printf("A at %x is %d\n", &a, a.i);
}
const int ic = 1;
-void f(int& arg) // { dg-error "passing argument 1" }
+void f(int& arg) // { dg-message "passing argument 1" }
{
if (arg) ;
}
void m() const;
};
-void other(char &x); // { dg-error "" } reference below
+void other(char &x); // { dg-message "" } reference below
void
Foo::m() const
int bar;
};
-void func(Base&); // { dg-error "passing argument 1" }
+void func(Base&); // { dg-message "passing argument 1" }
void func2(const Derived& d) {
func(d); // { dg-error "invalid initialization" }
}
void
-foo (int& a) // { dg-error "in passing argument 1" }
+foo (int& a) // { dg-message "in passing argument 1" }
{
}
// { dg-do assemble }
// prms-id: 2793
-void f(char&) { // { dg-error "" } referenced by error below
+void f(char&) { // { dg-message "" } referenced by error below
f('c'); // { dg-error "" }
}
// { dg-do assemble }
// prms-id: 3836
-void f(int &i) { // { dg-error "" } ref line
+void f(int &i) { // { dg-message "" } ref line
i = 10;
}
int bar;
};
-void func(Base&); // { dg-error "" } referenced by error below
+void func(Base&); // { dg-message "" } referenced by error below
void func2(const Derived& d) {
func(d); // { dg-error "" } should be error because of const
}
-void Munge(int& x) // { dg-error "passing argument 1" }
+void Munge(int& x) // { dg-message "passing argument 1" }
{
x = 2;
}
};
-int foo(B& b); // { dg-error "" } referenced below
+int foo(B& b); // { dg-message "" } referenced below
int main()