Another case that shouldn't have sign extends: functions returning short
authorChris Lattner <sabre@nondot.org>
Thu, 1 Sep 2005 23:43:58 +0000 (23:43 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 1 Sep 2005 23:43:58 +0000 (23:43 +0000)
are known to return properly sign extended values, no need for an explicit
extension.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23197 91177308-0d34-0410-b5e6-96231b3b80d8

test/CodeGen/PowerPC/small-arguments.ll

index 9195d0f2677341709abd15275ba2288d4b8fac12..65a692814868d28cd0f239cfb25c094813837a47 100644 (file)
@@ -10,3 +10,17 @@ int %test2(ushort %X) {
        %Z = and int %Y, 65535      ;; dead
        ret int %Z
 }
+
+void %test3() {
+       %tmp.0 = call short %foo()            ;; no extsh!
+       %tmp.1 = setlt short %tmp.0, 1234
+       br bool %tmp.1, label %then, label %UnifiedReturnBlock
+
+then:  
+       call int %test1(short 0)
+       ret void
+UnifiedReturnBlock:
+       ret void
+}
+
+declare short %foo()