ObjFW runtime: Add objc_msg_lookup(_super)_{fp,st}ret

Jonathan Schleifer js at webkeks.org
Wed Jul 17 02:06:03 PDT 2013


Ok, now this is interesting:

> avalon:CodeGenObjC$ ../../../../build/Release+Asserts/bin/llvm-lit -sv stret_lookup.m
> llvm-lit: lit.cfg:184: note: using clang: '/Users/js/Devel/LLVM/build/Release+Asserts/bin/clang'
> FAIL: Clang :: CodeGenObjC/stret_lookup.m (1 of 1)
> ******************** TEST 'Clang :: CodeGenObjC/stret_lookup.m' FAILED ********************
> Script:
> --
> /Users/js/Devel/LLVM/build/Release+Asserts/bin/clang -cc1 -internal-isystem /Users/js/Devel/LLVM/build/Release+Asserts/bin/../lib/clang/3.4/include -DSTRET -triple x86_64-pc-linux-gnu -fobjc-runtime=objfw -emit-llvm -o - /Users/js/Devel/LLVM/tools/clang/test/CodeGenObjC/stret_lookup.m | FileCheck -check-prefix=STRET /Users/js/Devel/LLVM/tools/clang/test/CodeGenObjC/stret_lookup.m
> /Users/js/Devel/LLVM/build/Release+Asserts/bin/clang -cc1 -internal-isystem /Users/js/Devel/LLVM/build/Release+Asserts/bin/../lib/clang/3.4/include -triple x86_64-pc-linux-gnu -fobjc-runtime=gcc -emit-llvm -o - /Users/js/Devel/LLVM/tools/clang/test/CodeGenObjC/stret_lookup.m | FileCheck -check-prefix=NOSTRET /Users/js/Devel/LLVM/tools/clang/test/CodeGenObjC/stret_lookup.m
> --
> Exit Code: 1
> Command Output (stderr):
> --
> /Users/js/Devel/LLVM/tools/clang/test/CodeGenObjC/stret_lookup.m:26:13: error: expected string not found in input
> // NOSTRET: define void @test0()
>             ^
> <stdin>:34:86: note: scanning from here
>  call void %1(%struct.test* sret %tmp, i8* bitcast (i64* @_OBJC_CLASS_Test0 to i8*), i8* bitcast ([2 x { i8*, i8* }]* @.objc_selector_list to i8*)), !GNUObjCMessageSend !0
>                                                                                      ^
> <stdin>:48:1: note: possible intended match here
> declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i32, i1) #1
> ^
> --
> 
> ********************
> Testing Time: 0.04s
> ********************
> Failing Tests (1):
>     Clang :: CodeGenObjC/stret_lookup.m
> 
>   Unexpected Failures: 1

You see, it's not even finding @test0(). That seemed like a bug to me, so I tried manually executing the command line it printed:

> /Users/js/Devel/LLVM/build/Release+Asserts/bin/clang -cc1 -internal-isystem /Users/js/Devel/LLVM/build/Release+Asserts/bin/../lib/clang/3.4/include -triple x86_64-pc-linux-gnu -fobjc-runtime=gcc -emit-llvm -o - /Users/js/Devel/LLVM/tools/clang/test/CodeGenObjC/stret_lookup.m | FileCheck -check-prefix=NOSTRET /Users/js/Devel/LLVM/tools/clang/test/CodeGenObjC/stret_lookup.m


Ok, so let's fix the path for FileCheck:

> avalon:CodeGenObjC$ /Users/js/Devel/LLVM/build/Release+Asserts/bin/clang -cc1 -internal-isystem /Users/js/Devel/LLVM/build/Release+Asserts/bin/../lib/clang/3.4/include -triple x86_64-pc-linux-gnu -fobjc-runtime=gcc -emit-llvm -o - /Users/js/Devel/LLVM/tools/clang/test/CodeGenObjC/stret_lookup.m | ../../../../build/Release+Asserts/bin/FileCheck -check-prefix=NOSTRET /Users/js/Devel/LLVM/tools/clang/test/CodeGenObjC/stret_lookup.m
> avalon:CodeGenObjC$ echo $?
> 0

And it suddenly works. Is it possible that llvm-lit is buggy and calls another FileCheck or changes something in the environment like add DYLD_INSERT_LIBRARIES that screw things up? Where does it look for FileCheck? I can only find build/Release+Asserts/bin/FileCheck. Does FileCheck come with Xcode and maybe it tries to use that instead?

Anyway, I guess this means my tests are correct, right? So, can this get in once I add the documentation?

--
Jonathan



More information about the cfe-commits mailing list