From: pinskia Date: Tue, 3 Feb 2009 22:38:16 +0000 (+0000) Subject: 2009-02-03 Andrew Pinski X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4f4106ef11967af7e85fb8f2847d52a75e2ace06;p=thirdparty%2Fgcc.git 2009-02-03 Andrew Pinski PR C++/36607 * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE. 2009-02-03 Andrew Pinski PR C++/36607 * g++.dg/expr/cast10.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@143909 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index af8d0e919f68..c7d7b014294d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2009-02-03 Andrew Pinski + + PR C++/36607 + * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE. + 2009-02-03 Jakub Jelinek * gcc.c (process_command): Update copyright notice dates. diff --git a/gcc/convert.c b/gcc/convert.c index 1a462e7626f5..77907bafcb5e 100644 --- a/gcc/convert.c +++ b/gcc/convert.c @@ -493,6 +493,7 @@ convert_to_integer (tree type, tree expr) case INTEGER_TYPE: case ENUMERAL_TYPE: case BOOLEAN_TYPE: + case OFFSET_TYPE: /* If this is a logical operation, which just returns 0 or 1, we can change the type of the expression. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 20d0b4adf36f..9d50d7fc9893 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2009-02-03 Andrew Pinski + + PR C++/36607 + * g++.dg/expr/cast10.C: New test. + 2009-02-03 Joseph Myers PR c/35433 diff --git a/gcc/testsuite/g++.dg/expr/cast10.C b/gcc/testsuite/g++.dg/expr/cast10.C new file mode 100644 index 000000000000..cd3e0fc3c271 --- /dev/null +++ b/gcc/testsuite/g++.dg/expr/cast10.C @@ -0,0 +1,10 @@ +// { dg-do compile } +// This used to error out because we would try to convert m to a short. + + +struct a {}; +void b() { + int a::*m; + a *c; + short p = reinterpret_cast(&(c->*m)) - reinterpret_cast(c); +}