diff options
author | Marc Glisse <marc.glisse@inria.fr> | 2013-05-20 09:50:54 +0200 |
---|---|---|
committer | Marc Glisse <glisse@gcc.gnu.org> | 2013-05-20 07:50:54 +0000 |
commit | 5657d9661696f32b6bab45f511e67fa31b7aebc3 (patch) | |
tree | 1c04dc3eecc35204ce353b4dba4f02e739696b09 | |
parent | e82a38701a8d27d2e2cf3c650acdb44cdaf6dce3 (diff) | |
download | gcc-5657d9661696f32b6bab45f511e67fa31b7aebc3.zip gcc-5657d9661696f32b6bab45f511e67fa31b7aebc3.tar.gz gcc-5657d9661696f32b6bab45f511e67fa31b7aebc3.tar.bz2 |
re PR c++/57175 (NRVO and alignment)
2013-05-20 Marc Glisse <marc.glisse@inria.fr>
PR c++/57175
gcc/cp/
* typeck.c (check_return_expr): Reverse the alignment comparison.
gcc/testsuite/
* g++.dg/pr57175.C: New testcase.
From-SVN: r199093
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/typeck.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/pr57175.C | 19 |
4 files changed, 30 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 14093eb..73b8deb 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2013-05-20 Marc Glisse <marc.glisse@inria.fr> + + PR c++/57175 + * typeck.c (check_return_expr): Reverse the alignment comparison. + 2013-05-17 Paolo Carlini <paolo.carlini@oracle.com> PR c++/18126 diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index fb75847..a531d030 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -8369,7 +8369,7 @@ check_return_expr (tree retval, bool *no_warning) && DECL_CONTEXT (retval) == current_function_decl && ! TREE_STATIC (retval) && ! DECL_ANON_UNION_VAR_P (retval) - && (DECL_ALIGN (retval) >= DECL_ALIGN (result)) + && (DECL_ALIGN (retval) <= DECL_ALIGN (result)) /* The cv-unqualified type of the returned value must be the same as the cv-unqualified return type of the function. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6fd1b2e..5a113d7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-05-20 Marc Glisse <marc.glisse@inria.fr> + + PR c++/57175 + * g++.dg/pr57175.C: New testcase. + 2013-05-17 Easwaran Raman <eraman@google.com> * gcc.dg/tree-ssa/reassoc-28.c: New testcase. diff --git a/gcc/testsuite/g++.dg/pr57175.C b/gcc/testsuite/g++.dg/pr57175.C new file mode 100644 index 0000000..f54162f --- /dev/null +++ b/gcc/testsuite/g++.dg/pr57175.C @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-std=c++11" } */ + +extern "C" void do_not_remove (); + +struct A +{ + A () { } + A (A const&) { do_not_remove (); } +}; + +A +f () +{ + alignas (2 * alignof (A)) A x; + return x; +} + +/* { dg-final { scan-assembler "do_not_remove" } } */ |