]> granicus.if.org Git - clang/commitdiff
Revert r238200: "[MIPS] fix extension of integer types (function calls)"
authorHans Wennborg <hans@hanshq.net>
Tue, 26 May 2015 19:39:54 +0000 (19:39 +0000)
committerHans Wennborg <hans@hanshq.net>
Tue, 26 May 2015 19:39:54 +0000 (19:39 +0000)
mips-unsigned-ext-var.c and mips-unsigned-extend.c fail in some builds.

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

lib/CodeGen/ABIInfo.h
lib/CodeGen/CGCall.cpp
lib/CodeGen/TargetInfo.cpp
test/CodeGen/atomics-inlining.c
test/CodeGen/mips-unsigned-ext-var.c [deleted file]
test/CodeGen/mips-unsigned-extend.c [deleted file]
test/CodeGenCXX/mips-size_t-ptrdiff_t.cpp

index cc8652e169d887fc2bcc819550878710719f95be..7e7f7fa2067927e2ed3b3de749f8f58f2ab5c699 100644 (file)
@@ -87,8 +87,6 @@ namespace clang {
     virtual bool isHomogeneousAggregateSmallEnough(const Type *Base,
                                                    uint64_t Members) const;
 
-    virtual bool shouldSignExtUnsignedType(QualType Ty) const;
-
     bool isHomogeneousAggregate(QualType Ty, const Type *&Base,
                                 uint64_t &Members) const;
 
index f2340530d66db7b5e2a7e15976f02409a7bebb31..b73ad9e4fb52ab5759efe6d81ef3c1c6d709ba57 100644 (file)
@@ -1588,12 +1588,8 @@ void CodeGenModule::ConstructAttributeList(const CGFunctionInfo &FI,
     case ABIArgInfo::Extend:
       if (ParamType->isSignedIntegerOrEnumerationType())
         Attrs.addAttribute(llvm::Attribute::SExt);
-      else if (ParamType->isUnsignedIntegerOrEnumerationType()) {
-        if (getTypes().getABIInfo().shouldSignExtUnsignedType(ParamType))
-          Attrs.addAttribute(llvm::Attribute::SExt);
-        else
-          Attrs.addAttribute(llvm::Attribute::ZExt);
-      }
+      else if (ParamType->isUnsignedIntegerOrEnumerationType())
+        Attrs.addAttribute(llvm::Attribute::ZExt);
       // FALL THROUGH
     case ABIArgInfo::Direct:
       if (ArgNo == 0 && FI.isChainCall())
index 53154b513eb703d51e7871cc316ad2027a0a8c15..3b09d4b93f44caee4d2ca9cda652fdf26e568008 100644 (file)
@@ -108,10 +108,6 @@ bool ABIInfo::isHomogeneousAggregateSmallEnough(const Type *Base,
   return false;
 }
 
-bool ABIInfo::shouldSignExtUnsignedType(QualType Ty) const {
-  return false;
-}
-
 void ABIArgInfo::dump() const {
   raw_ostream &OS = llvm::errs();
   OS << "(ABIArgInfo Kind=";
@@ -5551,7 +5547,6 @@ public:
   void computeInfo(CGFunctionInfo &FI) const override;
   llvm::Value *EmitVAArg(llvm::Value *VAListAddr, QualType Ty,
                          CodeGenFunction &CGF) const override;
-  bool shouldSignExtUnsignedType(QualType Ty) const override;
 };
 
 class MIPSTargetCodeGenInfo : public TargetCodeGenInfo {
@@ -5854,16 +5849,6 @@ llvm::Value* MipsABIInfo::EmitVAArg(llvm::Value *VAListAddr, QualType Ty,
   return AddrTyped;
 }
 
-bool MipsABIInfo::shouldSignExtUnsignedType(QualType Ty) const {
-  int TySize = getContext().getTypeSize(Ty);
-  
-  // MIPS64 ABI requires unsigned 32 bit integers to be sign extended.
-  if (Ty->isUnsignedIntegerOrEnumerationType() && TySize == 32)
-    return true;
-  
-  return false;
-}
-
 bool
 MIPSTargetCodeGenInfo::initDwarfEHRegSizeTable(CodeGen::CodeGenFunction &CGF,
                                                llvm::Value *Address) const {
index 23a79a2d28f9e41d2684a6685a26e8df86cd212a..9fdad4f51f1d7fcda6d45df111a9b3842b484d57 100644 (file)
@@ -76,8 +76,8 @@ void test1(void) {
 // MIPS32: store atomic i32 {{.*}}, i32* @i1 seq_cst
 // MIPS32: call i64 @__atomic_load_8(i8* bitcast (i64* @ll1 to i8*)
 // MIPS32: call void @__atomic_store_8(i8* bitcast (i64* @ll1 to i8*), i64
-// MIPS32: call void @__atomic_load(i32 signext 100, i8* getelementptr inbounds ([100 x i8], [100 x i8]* @a1, i32 0, i32 0), i8* getelementptr inbounds ([100 x i8], [100 x i8]* @a2, i32 0, i32 0)
-// MIPS32: call void @__atomic_store(i32 signext 100, i8* getelementptr inbounds ([100 x i8], [100 x i8]* @a1, i32 0, i32 0), i8* getelementptr inbounds ([100 x i8], [100 x i8]* @a2, i32 0, i32 0)
+// MIPS32: call void @__atomic_load(i32 zeroext 100, i8* getelementptr inbounds ([100 x i8], [100 x i8]* @a1, i32 0, i32 0), i8* getelementptr inbounds ([100 x i8], [100 x i8]* @a2, i32 0, i32 0)
+// MIPS32: call void @__atomic_store(i32 zeroext 100, i8* getelementptr inbounds ([100 x i8], [100 x i8]* @a1, i32 0, i32 0), i8* getelementptr inbounds ([100 x i8], [100 x i8]* @a2, i32 0, i32 0)
 
 // MIPS64-LABEL: define void @test1
 // MIPS64: = load atomic i8, i8* @c1 seq_cst
diff --git a/test/CodeGen/mips-unsigned-ext-var.c b/test/CodeGen/mips-unsigned-ext-var.c
deleted file mode 100644 (file)
index f6f6f0e..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-// RUN: %clang -target mips64-unknown-linux -O2 -mabi=n64 -S -emit-llvm %s -o - | FileCheck %s -check-prefix=N64
-// RUN: %clang -target mips64-unknown-linux -O2 -mabi=n32 -S -emit-llvm %s -o - | FileCheck %s -check-prefix=N32
-// RUN: %clang -target mips-unknown-linux -O2 -mabi=o32 -S -emit-llvm %s -o - | FileCheck %s -check-prefix=O32 
-
-#include <stdarg.h>
-
-unsigned foo(int x, ...) {
-  va_list valist;
-  va_start(valist, x);
-  unsigned a;
-  a = va_arg(valist, unsigned);
-  return a;
-}
-
-void foo1() {
-  unsigned f = 0xffffffe0;
-  foo(1,f);
-}
-
-//N64: call i32 (i32, ...) @foo(i32 signext undef, i32 signext -32)
-//N32: call i32 (i32, ...) @foo(i32 signext undef, i32 signext -32)
-//O32: call i32 (i32, ...) @foo(i32 signext undef, i32 signext -32)
\ No newline at end of file
diff --git a/test/CodeGen/mips-unsigned-extend.c b/test/CodeGen/mips-unsigned-extend.c
deleted file mode 100644 (file)
index 2074967..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-// RUN: %clang -target mips64-unknown-linux -O0 -mabi=n64 -S -emit-llvm %s -o - | FileCheck %s -check-prefix=N64
-// RUN: %clang -target mips64-unknown-linux -O0 -mabi=n32 -S -emit-llvm %s -o - | FileCheck %s -check-prefix=N32
-// RUN: %clang -target mips-unknown-linux -O0 -mabi=o32 -S -emit-llvm %s -o - | FileCheck %s -check-prefix=O32 
-
-void foo(unsigned a) {
-}
-
-void foo1() {
-  unsigned f = 0xffffffe0;
-  foo(f);
-}
-
-// N64: call void @foo(i32 signext %0)
-// N32: call void @foo(i32 signext %0)
-// O32: call void @foo(i32 signext %0)
\ No newline at end of file
index 1ff01820bb1b3219dcf7173050bada7268745cfd..869fdedf8679d7322db32da22a334e1f5a603bed 100644 (file)
@@ -10,10 +10,10 @@ long *alloc_long() {
   return rv;
 }
 // O32-LABEL: define i32* @_Z10alloc_longv()
-// O32: call noalias i8* @_Znwj(i32 signext 4)
+// O32: call noalias i8* @_Znwj(i32 zeroext 4)
 
 // N32-LABEL: define i32* @_Z10alloc_longv()
-// N32: call noalias i8* @_Znwj(i32 signext 4)
+// N32: call noalias i8* @_Znwj(i32 zeroext 4)
 
 // N64-LABEL: define i64* @_Z10alloc_longv()
 // N64: call noalias i8* @_Znwm(i64 zeroext 8)
@@ -24,10 +24,10 @@ long *alloc_long_array() {
 }
 
 // O32-LABEL: define i32* @_Z16alloc_long_arrayv()
-// O32: call noalias i8* @_Znaj(i32 signext 8)
+// O32: call noalias i8* @_Znaj(i32 zeroext 8)
 
 // N32-LABEL: define i32* @_Z16alloc_long_arrayv()
-// N32: call noalias i8* @_Znaj(i32 signext 8)
+// N32: call noalias i8* @_Znaj(i32 zeroext 8)
 
 // N64-LABEL: define i64* @_Z16alloc_long_arrayv()
 // N64: call noalias i8* @_Znam(i64 zeroext 16)