--- /dev/null
+; Induction variable pass is doing bad things with pointer induction vars,
+; trying to do arithmetic on them directly.
+;
+; RUN: as < %s | opt -indvars
+;
+void %test(int %A, uint %S, sbyte* %S) {
+
+ br label %Loop
+Loop:
+ %PIV = phi sbyte* [%S, %0], [%PIVNext, %Loop]
+
+ %PIV = cast sbyte* %PIV to ulong
+ %PIVNext = add ulong %PIV, 8
+ %PIVNext = cast ulong %PIVNext to sbyte*
+ br label %Loop
+}
--- /dev/null
+
+LEVEL = ../../../..
+include $(LEVEL)/test/Makefile.tests
+
+TESTS := $(wildcard *.ll)
+
+all:: $(addprefix Output/, $(TESTS:%.ll=%.ll.out))
+
+Output/%.ll.out: %.ll Output/.dir $(LOPT)
+ -$(TESTRUNR) $<