[PATCH] D48832: [ARM] ARMCodeGenPrepare backend pass
Sjoerd Meijer via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 16 07:26:13 PDT 2018
SjoerdMeijer added a comment.
We are down to 3 errors, compared to 14 before. Before we had 2 issues: the backend compile error was responsible for 12 errors, the miscompilation for 2. The build error disappeared, so we have only the miscompilations remaining. The first miscompilation is also resolved, but we have some new ones (the tests progress further now). The first one I looked at is very similar to the one I reported earlier:
assert((short1 = ~short2) == short3);
but now the operator is different (of course the variables have different values):
(short *= short2) == short3
This test file is doing similar checks, testing operators += and -= and /= and %= and &= and |= and ^=. Perhaps you can see if you can explain these failures. Otherwise, let me know if you need full reproducers. Looks like these patterns are responsible for 2 test failures.
The 3rd failure is an assertion failure:
lib/IR/Instructions.cpp:2463: static llvm::CastInst* llvm::CastInst::Create(llvm::Instruction::CastOps, llvm::Value*, llvm::Type*, const llvm::Twine&, llvm::Instruction*): Assertion `castIsValid(op, S, Ty) && "Invalid cast!"' failed
This is conversion issue from small ints to long long. I think this should be enough to trigger it:
unsigned char uc = 42;
void foo() {
x = uc;
assert(x == 42ll);
}
https://reviews.llvm.org/D48832
More information about the llvm-commits
mailing list