Following C++ code fragment generates incorrect ARM machine code.static unsigned long long Foo(unsigned long long a0){ return (15849689698036411425ULL * a0 << 28) + 7806753552930010092LL;}static unsigned long long Bar(unsigned long long a0, unsigned long long a1){ return 13321957801405570171ULL * a0 + 3349182078252791521LL * a1 + 4322231949668103995LL;}static void FooBar(unsigned long long a0, unsigned long long& a1){ volatile unsigned long long temp1 = 8157439093432398537; unsigned long long temp2 = Foo(temp1); a1 = Bar(a0, temp2);}void bug1(){ volatile unsigned long long a0 = 8624364270469118943; unsigned long long a1; FooBar(a0, a1); printf("%I64u", a1);}
Visual Studio/Team Foundation Server/.NET Framework Tooling Version
Steps to reproduce
Product Language
Operating System
Operating System Language
Actual results
Expected results