Lambda testcase fails when optimization enabled in gcc and llvm
Hi Devs,
consider below reduced testcase from boost lamda.
$cat result_of_tests.cpp
#include
________________________________________ From: Boost [boost-bounces@lists.boost.org] on behalf of navya deepika garakapati via Boost [boost@lists.boost.org]
Sent: 19 July 2019 10:49 To: boost@lists.boost.org Cc: navya deepika garakapati Subject: [boost] Lambda testcase fails when optimization enabled in gcc and llvm
Hi Devs, consider below reduced testcase from boost lamda.
The above testcases is demonstrated with g++ compiler but behavior is same on clang as well. so we thought that this may be boost testcase issue. When we replace , int d= (apply1<int>(_1 ,one) == 1); with int d= (apply1
(_1 ,one) == 1);
testcase gives correct result with or without optimization.
Wanted to confirm here,is it valid testcase or we have to modify testcase as per above?
Thanks, Navya
Navya It would be helpful to know what versions of g++ and clang you are using, and also what version of C++. Boost lambda is old code which was written for C++03 so the example may run fine on older C++ compilers. I hope this helps. John
Hi John, we tried with below compilers and version where it is failing g++ 8.1 and above. in clang++ 3.8.1 and 8. while it is passing on g++ 5.4. Thanks On Fri, Jul 19, 2019 at 3:51 PM Fletcher, John P via Boost < boost@lists.boost.org> wrote:
________________________________________ From: Boost [boost-bounces@lists.boost.org] on behalf of navya deepika garakapati via Boost [boost@lists.boost.org]
Sent: 19 July 2019 10:49 To: boost@lists.boost.org Cc: navya deepika garakapati Subject: [boost] Lambda testcase fails when optimization enabled in gcc and llvm
Hi Devs, consider below reduced testcase from boost lamda.
The above testcases is demonstrated with g++ compiler but behavior is same on clang as well. so we thought that this may be boost testcase issue. When we replace , int d= (apply1<int>(_1 ,one) == 1); with int d= (apply1
(_1 ,one) == 1); testcase gives correct result with or without optimization.
Wanted to confirm here,is it valid testcase or we have to modify testcase as per above?
Thanks, Navya
Navya
It would be helpful to know what versions of g++ and clang you are using, and also what version of C++.
Boost lambda is old code which was written for C++03 so the example may run fine on older C++ compilers.
I hope this helps.
John
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
________________________________ From: navya deepika garakapati [navyadeepika.9@gmail.com] Sent: 19 July 2019 11:28 To: boost@lists.boost.org Cc: Fletcher, John P Subject: Re: [boost] Lambda testcase fails when optimization enabled in gcc and llvm
Hi John, we tried with below compilers and version where it is failing g++ 8.1 and above. in clang++ 3.8.1 and 8.
while it is passing on g++ 5.4.
Thanks
An observation int d= (apply1<int>(_1 ,one) == 1);
Sorry the last post was sent incomplete by mistake. John ________________________________________ From: Boost [boost-bounces@lists.boost.org] on behalf of Fletcher, John P via Boost [boost@lists.boost.org] Sent: 19 July 2019 23:49 To: navya deepika garakapati; boost@lists.boost.org Cc: Fletcher, John P Subject: Re: [boost] Lambda testcase fails when optimization enabled in gcc and llvm ________________________________ From: navya deepika garakapati [navyadeepika.9@gmail.com] Sent: 19 July 2019 11:28 To: boost@lists.boost.org Cc: Fletcher, John P Subject: Re: [boost] Lambda testcase fails when optimization enabled in gcc and llvm
Hi John, we tried with below compilers and version where it is failing g++ 8.1 and above. in clang++ 3.8.1 and 8.
while it is passing on g++ 5.4.
Thanks
An observation: When I replace int d= (apply1<int>(_1 ,one) == 1); with this int d= (apply1<int>(_1 + 0 ,one) == 1); it works even when optimized. I have tried this with clang 4.0 John _______________________________________________ Unsubscribe & other changes: https://eur02.safelinks.protection.outlook.com/?url=http%3A%2F%2Flists.boost...
navya deepika garakapati wrote:
Hi Devs, consider below reduced testcase from boost lamda.
$cat result_of_tests.cpp
#include
#include template typename boost::result_of ::type apply1(F f, A b) { return f(b); } using namespace boost::lambda; int main(int, char *[]) { int one = 1; int d= (apply1<int>(_1 ,one) == 1); printf("\n%d\n",d); return 0; }
f(b) returns a reference to b, which goes out of scope at the closing brace; the example has undefined behavior. You should report this as an issue at https://github.com/boostorg/lambda/issues.
participants (3)
-
Fletcher, John P
-
navya deepika garakapati
-
Peter Dimov