mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-12 13:30:51 +00:00
Stop accepting and ignoring attributes in function types. Attributes are applied
to functions and call/invokes, not to types. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133266 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a6591969ff
commit
a16546a70b
@ -1559,22 +1559,16 @@ bool LLParser::ParseFunctionType(PATypeHolder &Result) {
|
|||||||
|
|
||||||
std::vector<ArgInfo> ArgList;
|
std::vector<ArgInfo> ArgList;
|
||||||
bool isVarArg;
|
bool isVarArg;
|
||||||
unsigned Attrs;
|
if (ParseArgumentList(ArgList, isVarArg, true))
|
||||||
if (ParseArgumentList(ArgList, isVarArg, true) ||
|
|
||||||
// FIXME: Allow, but ignore attributes on function types!
|
|
||||||
// FIXME: Remove in LLVM 3.0
|
|
||||||
ParseOptionalAttrs(Attrs, 2))
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
// Reject names on the arguments lists.
|
// Reject names on the arguments lists.
|
||||||
for (unsigned i = 0, e = ArgList.size(); i != e; ++i) {
|
for (unsigned i = 0, e = ArgList.size(); i != e; ++i) {
|
||||||
if (!ArgList[i].Name.empty())
|
if (!ArgList[i].Name.empty())
|
||||||
return Error(ArgList[i].Loc, "argument name invalid in function type");
|
return Error(ArgList[i].Loc, "argument name invalid in function type");
|
||||||
if (!ArgList[i].Attrs != 0) {
|
if (ArgList[i].Attrs != 0)
|
||||||
// Allow but ignore attributes on function types; this permits
|
return Error(ArgList[i].Loc,
|
||||||
// auto-upgrade.
|
"argument attributes invalid in function type");
|
||||||
// FIXME: REJECT ATTRIBUTES ON FUNCTION TYPES in LLVM 3.0
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<const Type*> ArgListTy;
|
std::vector<const Type*> ArgListTy;
|
||||||
|
@ -362,7 +362,7 @@ bb1159: ; preds = %cond_next1150
|
|||||||
|
|
||||||
cond_true1169: ; preds = %bb1159
|
cond_true1169: ; preds = %bb1159
|
||||||
%tmp11741175 = trunc i64 %lsum.11225.0 to i32 ; <i32> [#uses=1]
|
%tmp11741175 = trunc i64 %lsum.11225.0 to i32 ; <i32> [#uses=1]
|
||||||
%tmp1178 = tail call i32 (%struct._IO_FILE* noalias , i8* noalias , ...)* @fprintf( %struct._IO_FILE* noalias %file , i8* getelementptr ([49 x i8]* @.str32, i32 0, i64 0) , i32 %tmp11741175, i32 0 ) ; <i32> [#uses=0]
|
%tmp1178 = tail call i32 (%struct._IO_FILE* , i8* , ...)* @fprintf( %struct._IO_FILE* noalias %file , i8* getelementptr ([49 x i8]* @.str32, i32 0, i64 0) , i32 %tmp11741175, i32 0 ) ; <i32> [#uses=0]
|
||||||
ret void
|
ret void
|
||||||
|
|
||||||
UnifiedReturnBlock: ; preds = %bb1159
|
UnifiedReturnBlock: ; preds = %bb1159
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
|
; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
|
||||||
; RUN: diff %t1.ll %t2.ll
|
; RUN: diff %t1.ll %t2.ll
|
||||||
|
|
||||||
%ZFunTy = type i32(i8 zeroext)
|
%ZFunTy = type i32(i8)
|
||||||
%SFunTy = type i32(i8 signext)
|
%SFunTy = type i32(i8)
|
||||||
|
|
||||||
declare signext i16 @"test"(i16 signext %arg)
|
declare signext i16 @"test"(i16 signext %arg)
|
||||||
declare zeroext i8 @"test2" (i16 zeroext %a2)
|
declare zeroext i8 @"test2" (i16 zeroext %a2)
|
||||||
@ -14,7 +14,7 @@ declare void @exit(i32) noreturn nounwind
|
|||||||
|
|
||||||
define i32 @main(i32 inreg %argc, i8 ** inreg %argv) nounwind {
|
define i32 @main(i32 inreg %argc, i8 ** inreg %argv) nounwind {
|
||||||
%val = trunc i32 %argc to i16
|
%val = trunc i32 %argc to i16
|
||||||
%res1 = call signext i16 (i16 signext) *@test(i16 signext %val)
|
%res1 = call signext i16 (i16 ) *@test(i16 signext %val)
|
||||||
%two = add i16 %res1, %res1
|
%two = add i16 %res1, %res1
|
||||||
%res2 = call zeroext i8 @test2(i16 zeroext %two )
|
%res2 = call zeroext i8 @test2(i16 zeroext %two )
|
||||||
%retVal = sext i16 %two to i32
|
%retVal = sext i16 %two to i32
|
||||||
|
@ -1,19 +0,0 @@
|
|||||||
; RUN: llvm-as < %s | llvm-dis > %t1.ll
|
|
||||||
; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
|
|
||||||
; RUN: diff %t1.ll %t2.ll
|
|
||||||
|
|
||||||
%ZFunTy = type i33(i8 zeroext)
|
|
||||||
%SFunTy = type i33(i8 signext)
|
|
||||||
|
|
||||||
declare signext i16 @"test"(i16 signext %arg)
|
|
||||||
declare zeroext i8 @"test2" (i16 zeroext %a2)
|
|
||||||
|
|
||||||
|
|
||||||
define i33 @main(i33 %argc, i8 **%argv) {
|
|
||||||
%val = trunc i33 %argc to i16
|
|
||||||
%res = call signext i16 (i16 signext) *@test(i16 signext %val)
|
|
||||||
%two = add i16 %res, %res
|
|
||||||
%res2 = call zeroext i8 @test2(i16 zeroext %two )
|
|
||||||
%retVal = sext i16 %two to i33
|
|
||||||
ret i33 %retVal
|
|
||||||
}
|
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
define void @blah(i16* %tmp10) {
|
define void @blah(i16* %tmp10) {
|
||||||
entry:
|
entry:
|
||||||
call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend_stret to void (i16* sret )*)( i16* sret %tmp10 )
|
call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend_stret to void (i16*)*)( i16* sret %tmp10 )
|
||||||
ret void
|
ret void
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ entry:
|
|||||||
%tmp3 = getelementptr %struct.FRAME.nest* %FRAME.0, i32 0, i32 0 ; <i32*> [#uses=1]
|
%tmp3 = getelementptr %struct.FRAME.nest* %FRAME.0, i32 0, i32 0 ; <i32*> [#uses=1]
|
||||||
store i32 %n, i32* %tmp3, align 8
|
store i32 %n, i32* %tmp3, align 8
|
||||||
%FRAME.06 = bitcast %struct.FRAME.nest* %FRAME.0 to i8* ; <i8*> [#uses=1]
|
%FRAME.06 = bitcast %struct.FRAME.nest* %FRAME.0 to i8* ; <i8*> [#uses=1]
|
||||||
%tramp = call i8* @llvm.init.trampoline( i8* %TRAMP.216.sub, i8* bitcast (i32 (%struct.FRAME.nest* nest , i32)* @f to i8*), i8* %FRAME.06 ) ; <i8*> [#uses=1]
|
%tramp = call i8* @llvm.init.trampoline( i8* %TRAMP.216.sub, i8* bitcast (i32 (%struct.FRAME.nest* , i32)* @f to i8*), i8* %FRAME.06 ) ; <i8*> [#uses=1]
|
||||||
%tmp7 = getelementptr %struct.FRAME.nest* %FRAME.0, i32 0, i32 1 ; <i32 (i32)**> [#uses=1]
|
%tmp7 = getelementptr %struct.FRAME.nest* %FRAME.0, i32 0, i32 1 ; <i32 (i32)**> [#uses=1]
|
||||||
%tmp89 = bitcast i8* %tramp to i32 (i32)* ; <i32 (i32)*> [#uses=2]
|
%tmp89 = bitcast i8* %tramp to i32 (i32)* ; <i32 (i32)*> [#uses=2]
|
||||||
store i32 (i32)* %tmp89, i32 (i32)** %tmp7, align 8
|
store i32 (i32)* %tmp89, i32 (i32)** %tmp7, align 8
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
define i32 @main(i32 %argc, i8** %argv) {
|
define i32 @main(i32 %argc, i8** %argv) {
|
||||||
entry:
|
entry:
|
||||||
%tmp32 = tail call i32 (i8* noalias , ...) * bitcast (i32 (i8*, ...) nounwind * @printf to i32 (i8* noalias , ...) nounwind *)( i8* getelementptr ([4 x i8]* @.str, i32 0, i32 0) , i32 0 ) nounwind ; <i32> [#uses=0]
|
%tmp32 = tail call i32 (i8* , ...) * bitcast (i32 (i8*, ...) * @printf to i32 (i8* , ...) *)( i8* getelementptr ([4 x i8]* @.str, i32 0, i32 0) , i32 0 ) nounwind ; <i32> [#uses=0]
|
||||||
ret i32 undef
|
ret i32 undef
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user