This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [C++ Patch] PR 31671


Hi,

On 10/11/2013 05:55 AM, Jason Merrill wrote:
On 10/10/2013 03:31 PM, Paolo Carlini wrote:
On 10/10/2013 08:26 PM, Jason Merrill wrote:
On 10/10/2013 08:33 AM, Paolo Carlini wrote:
+          expr_type = TREE_TYPE (expr) = cp_build_qualified_type
+        (TREE_TYPE (expr), cp_type_quals (TREE_TYPE (probe_type)));

Won't that end up being the same as the contents of expr_type before
this statement?  Can we just remove this assignment?

Sorry. Having figured out where the problem was, I messed up very badly
when I prepared the actual patch for submission. The below makes much
more sense to me.

+          expr_type = TREE_TYPE (probe_type);

Again, won't that set expr_type to the value it already had? I'd prefer to just have a comment that we're leaving it alone.
Sorry forgot about that. No, that line isn't redundant.

The 6th time we get there when compiling the testcase, that is when we are converting to int&, at that line this is expr_type:

 <reference_type 0x7ffff68587e0
    type <integer_type 0x7ffff6858738 int readonly type_6 SI
   ...

whereas this is TREE_TYPE (probe_type):

 <integer_type 0x7ffff6858738 int readonly type_6 SI
size <integer_cst 0x7ffff6700440 type <integer_type 0x7ffff670a0a8 bitsizetype> constant 32>
   ...

Thus, if you think it makes the logic easier to follow we could likely do (only lightly tested):

    expr_type = TREE_TYPE (expr_type);

but we can't possibly leave expr_type alone.

Thanks,
Paolo.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]