It's not necessary to do rounding for alloca operations when the requested
alignment is equal to the stack alignment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40004 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/Feature/calltest.ll b/test/Feature/calltest.ll
new file mode 100644
index 0000000..f015223
--- /dev/null
+++ b/test/Feature/calltest.ll
@@ -0,0 +1,34 @@
+; RUN: llvm-upgrade < %s | llvm-as | llvm-dis > %t1.ll
+; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
+; RUN: diff %t1.ll %t2.ll
+
+%FunTy = type int(int)
+
+declare int "test"(int)   ; Test forward declaration merging
+
+implementation
+
+void "invoke"(%FunTy *%x) {
+	%foo = call %FunTy* %x(int 123)
+	%foo2 = tail call %FunTy* %x(int 123)
+	ret void
+}
+
+int "main"(int %argc)   ; TODO: , sbyte **argv, sbyte **envp)
+begin
+        %retval = call int (int) *%test(int %argc)
+        %two    = add int %retval, %retval
+	%retval2 = invoke int %test(int %argc)
+		   to label %Next except label %Error
+Next:
+	%two2 = add int %two, %retval2
+	call void %invoke (%FunTy* %test)
+        ret int %two2
+Error:
+	ret int -1
+end
+
+int "test"(int %i0)
+begin
+    ret int %i0
+end