Thread overview
Why is ^^= not part of type definition of integers?
May 04

Currently it relies on a function call of phobos math function instead of code generation for backend optimization. If that were the case, why does it not rewrite it as this g() = std.math.pow(g(),2) for functions?

This is a road block for me when implementing binary operators for properties.

-Alex

May 04

On Tuesday, 4 May 2021 at 15:20:53 UTC, 12345swordy wrote:

>

Currently it relies on a function call of phobos math function instead of code generation for backend optimization. If that were the case, why does it not rewrite it as this g() = std.math.pow(g(),2) for functions?

This is a road block for me when implementing binary operators for properties.

-Alex

pow can be inlined, there is no optimization problem here.

As for why the rewriting doesn't happen in general I assume it's because there wasn't demand for it.

Why is this a roadblock, can't you just lower to the form similar to the one you suggest?

May 04

On Tuesday, 4 May 2021 at 15:27:13 UTC, Max Haughton wrote:

>

On Tuesday, 4 May 2021 at 15:20:53 UTC, 12345swordy wrote:

>

Currently it relies on a function call of phobos math function instead of code generation for backend optimization. If that were the case, why does it not rewrite it as this g() = std.math.pow(g(),2) for functions?

This is a road block for me when implementing binary operators for properties.

-Alex

pow can be inlined, there is no optimization problem here.

As for why the rewriting doesn't happen in general I assume it's because there wasn't demand for it.

Why is this a roadblock, can't you just lower to the form similar to the one you suggest?

The rewrite currently only works if you mark your get and set functions as property. I am not sure if the rewrite should be allowed for functions that are not mark property when it comes to ^^= operator for integers.

-Alex

May 04

On Tuesday, 4 May 2021 at 15:57:33 UTC, 12345swordy wrote:

>

On Tuesday, 4 May 2021 at 15:27:13 UTC, Max Haughton wrote:

>

On Tuesday, 4 May 2021 at 15:20:53 UTC, 12345swordy wrote:

>

[...]

pow can be inlined, there is no optimization problem here.

As for why the rewriting doesn't happen in general I assume it's because there wasn't demand for it.

Why is this a roadblock, can't you just lower to the form similar to the one you suggest?

The rewrite currently only works if you mark your get and set functions as property. I am not sure if the rewrite should be allowed for functions that are not mark property when it comes to ^^= operator for integers.

-Alex

You've lost me.

May 04

On Tuesday, 4 May 2021 at 16:08:28 UTC, Max Haughton wrote:

>

On Tuesday, 4 May 2021 at 15:57:33 UTC, 12345swordy wrote:

>

On Tuesday, 4 May 2021 at 15:27:13 UTC, Max Haughton wrote:

>

On Tuesday, 4 May 2021 at 15:20:53 UTC, 12345swordy wrote:

>

[...]

pow can be inlined, there is no optimization problem here.

As for why the rewriting doesn't happen in general I assume it's because there wasn't demand for it.

Why is this a roadblock, can't you just lower to the form similar to the one you suggest?

The rewrite currently only works if you mark your get and set functions as property. I am not sure if the rewrite should be allowed for functions that are not mark property when it comes to ^^= operator for integers.

-Alex

You've lost me.

Should g ^^= 2 be allowed for non-@property functions? Where g() is a function call where function definitions void g(int value) and int g() exist.

-Alex

-Alex

May 04

On Tuesday, 4 May 2021 at 16:49:00 UTC, 12345swordy wrote:

>

On Tuesday, 4 May 2021 at 16:08:28 UTC, Max Haughton wrote:

>

On Tuesday, 4 May 2021 at 15:57:33 UTC, 12345swordy wrote:

>

On Tuesday, 4 May 2021 at 15:27:13 UTC, Max Haughton wrote:

>

[...]

The rewrite currently only works if you mark your get and set functions as property. I am not sure if the rewrite should be allowed for functions that are not mark property when it comes to ^^= operator for integers.

-Alex

You've lost me.

Should g ^^= 2 be allowed for non-@property functions? Where g() is a function call where function definitions void g(int value) and int g() exist.

-Alex

-Alex

@property exists, so I think no.