[llvm] r289321 - [AVR] Support stores to undefined pointers
Dylan McKay via llvm-commits
llvm-commits at lists.llvm.org
Sat Dec 10 02:16:14 PST 2016
Author: dylanmckay
Date: Sat Dec 10 04:16:13 2016
New Revision: 289321
URL: http://llvm.org/viewvc/llvm-project?rev=289321&view=rev
Log:
[AVR] Support stores to undefined pointers
This would previously trigger an assertion error in AVRISelDAGToDAG.
Added:
llvm/trunk/test/CodeGen/AVR/store-undef.ll
Modified:
llvm/trunk/lib/Target/AVR/AVRISelDAGToDAG.cpp
Modified: llvm/trunk/lib/Target/AVR/AVRISelDAGToDAG.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AVR/AVRISelDAGToDAG.cpp?rev=289321&r1=289320&r2=289321&view=diff
==============================================================================
--- llvm/trunk/lib/Target/AVR/AVRISelDAGToDAG.cpp (original)
+++ llvm/trunk/lib/Target/AVR/AVRISelDAGToDAG.cpp Sat Dec 10 04:16:13 2016
@@ -328,7 +328,8 @@ template <> bool AVRDAGToDAGISel::select
SDValue BasePtr = ST->getBasePtr();
// Early exit when the base pointer is a frame index node or a constant.
- if (isa<FrameIndexSDNode>(BasePtr) || isa<ConstantSDNode>(BasePtr)) {
+ if (isa<FrameIndexSDNode>(BasePtr) || isa<ConstantSDNode>(BasePtr) ||
+ BasePtr.isUndef()) {
return false;
}
Added: llvm/trunk/test/CodeGen/AVR/store-undef.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AVR/store-undef.ll?rev=289321&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/AVR/store-undef.ll (added)
+++ llvm/trunk/test/CodeGen/AVR/store-undef.ll Sat Dec 10 04:16:13 2016
@@ -0,0 +1,13 @@
+; RUN: llc < %s -mattr=avr6 | FileCheck %s
+
+; This test checks that we can successfully lower a store
+; to an undefined pointer.
+
+; CHECK-LABEL: foo
+define void @foo() {
+
+ ; CHECK: ldi [[SRC:r[0-9]+]], 0
+ ; CHECK-NEXT: st [[PTRREG:X|Y|Z]], [[SRC]]
+ store i8 0, i8* undef, align 4
+ ret void
+}
More information about the llvm-commits
mailing list