For PR1553:
authorReid Spencer <rspencer@reidspencer.com>
Tue, 31 Jul 2007 02:57:37 +0000 (02:57 +0000)
committerReid Spencer <rspencer@reidspencer.com>
Tue, 31 Jul 2007 02:57:37 +0000 (02:57 +0000)
Make the AsmParser auto-upgrade the old zext and sext
keywords for parameter attributes and handle the
end-of-line ambiguity.

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

lib/AsmParser/Lexer.l
lib/AsmParser/llvmAsmParser.y
test/Assembler/2007-07-30-AutoUpgradeZextSext.ll [new file with mode: 0644]

index 6b8bba5d68d4dc97e1878feb51b397c9f7c67cee..19be3dc3b4961629a0986b95178ef21bb0596672 100644 (file)
@@ -177,6 +177,8 @@ HexFPConstant 0x[0-9A-Fa-f]+
  */
 HexIntConstant [us]0x[0-9A-Fa-f]+
 
+/* WSNL - shorthand for newline followed by whitespace */
+WSNL [ \r\t\n]*$
 %%
 
 {Comment}       { /* Ignore comments for now */ }
@@ -234,6 +236,10 @@ noreturn        { return NORETURN; }
 noalias         { return NOALIAS; }
 byval           { return BYVAL; }
 nest            { return NEST; }
+sext{WSNL}      { // For auto-upgrade only, drop in LLVM 3.0 
+                  return SIGNEXT; } 
+zext{WSNL}      { // For auto-upgrade only, drop in LLVM 3.0
+                  return ZEROEXT; } 
 
 void            { RET_TY(Type::VoidTy,  VOID);  }
 float           { RET_TY(Type::FloatTy, FLOAT); }
index 0cc7a9831a2da6e2765e8d59ec00a84480708e0d..fd2713f3071118fdec65b1be280ac45a96e0ce05 100644 (file)
@@ -1225,7 +1225,9 @@ OptCallingConv : /*empty*/          { $$ = CallingConv::C; } |
                  };
 
 ParamAttr     : ZEROEXT { $$ = ParamAttr::ZExt;      }
+              | ZEXT    { $$ = ParamAttr::ZExt;      }
               | SIGNEXT { $$ = ParamAttr::SExt;      }
+              | SEXT    { $$ = ParamAttr::SExt;      }
               | INREG   { $$ = ParamAttr::InReg;     }
               | SRET    { $$ = ParamAttr::StructRet; }
               | NOALIAS { $$ = ParamAttr::NoAlias;   }
diff --git a/test/Assembler/2007-07-30-AutoUpgradeZextSext.ll b/test/Assembler/2007-07-30-AutoUpgradeZextSext.ll
new file mode 100644 (file)
index 0000000..ea2db44
--- /dev/null
@@ -0,0 +1,12 @@
+; Test that upgrading zext/sext attributes to zeroext and signext
+; works correctly.
+; PR1553
+; RUN: llvm-as < %s > /dev/null
+
+define i32 @bar() {
+        %t = call i8 @foo( i8 10 sext ) zext
+        %x = zext i8 %t to i32
+        ret i32 %x
+}
+
+declare i8 @foo(i8 signext ) zeroext