[Issue 5798] Weakly pure function calls skipped inside a comma expression
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Tue Apr 19 13:01:26 PDT 2011
http://d.puremagic.com/issues/show_bug.cgi?id=5798
timon.gehr at gmx.ch changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |patch
Severity|normal |major
--- Comment #2 from timon.gehr at gmx.ch 2011-04-19 12:57:50 PDT ---
I changed importance to mayor, because this also affects some compiler
rewrites, and the fix is trivial.
Eg:
int weakly_pure_function(out param)pure{...}
1^^weakly_pure_function(param), will be optimized away to
(weakly_pure_function(param),1) and then only 1, without setting the param.
This bug exists because the compiler incorrectly assumes that a weakly pure
function has no side effects.
Suggested fix:
in expression.c, function CallExp::checkSideEffect, replace
(~line 7278)
- if (t->ty == Tfunction && ((TypeFunction *)t)->purity)
- return 0;
by
+ if (t->ty == Tfunction && ((TypeFunction *)t)->purity > PUREweak)
+ return 0;
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list