www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Why is ^^= not part of type definition of integers?

reply 12345swordy <alexanderheistermann gmail.com> writes:
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 2021
parent reply Max Haughton <maxhaton gmail.com> writes:
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 2021
parent reply 12345swordy <alexanderheistermann gmail.com> writes:
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 2021
parent reply Max Haughton <maxhaton gmail.com> writes:
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 2021
parent reply 12345swordy <alexanderheistermann gmail.com> writes:
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 2021
parent Max Haughton <maxhaton gmail.com> writes:
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.
May 04 2021