[LLVMdev] RFC: Tail call optimization X86

Arnold Schwaighofer arnold.schwaighofer at gmail.com
Thu Oct 4 14:31:07 PDT 2007


On 4 Oct 2007, at 00:22, Evan Cheng wrote:
>> ifeq ($(ARCH),x86)
>> LLCBETAOPTION := -regalloc=local -fast -tail-call-opt -tail-call-opt-
>> align-stack
> Please remove -regalloc=local -fast. We want to test this patch
> separately.

just did a test with
LLCBETAOPTION := -tail-call-opt -tail-call-opt-align-stack

this time only SPASS llc-beta fails (comparing with vanilla version)
also jit fails (exit 139) but in both versions  (vanilla/patched)  
which it did not do when i last tested

but looking very briefly at the results i am not sure llc-beta really  
fails since the programm (SPASS) runs through and only the diff fails

as you can see below the tail call optimized version needs more  
clauses to do the prove but eventually end up with the same result:

tail-call-opt:
	....
         Given clause: 29875[3:Res:23.2,29765.0] || member(U,singleton 
(universal_class))* -> .
SPASS V 2.1
SPASS beiseite: Proof found.
Problem: /Users/arnold/Desktop/testing/tc-test/llvm/projects/llvm- 
test/MultiSource/Applications/SPASS/problem.dfg
SPASS derived 39592 clauses, backtracked 10752 clauses and kept 23124  
clauses.
SPASS allocated 3905 KBytes.
SPASS spent      No Timing on this machine.  on the problem.
                  No Timing on this machine.  for the input.
                  No Timing on this machine.  for the FLOTTER CNF  
translation.
                  No Timing on this machine.  for inferences.
                  No Timing on this machine.  for the backtracking.
                  No Timing on this machine.  for the reduction.

--------------------------SPASS-STOP------------------------------
exit 0

vanilla:
	....
         Given clause: 29876[3:Res:23.2,29766.0] || member(U,singleton 
(universal_class))* -> .
SPASS V 2.1
SPASS beiseite: Proof found.
Problem: /Users/arnold/Desktop/testing/tc-test/llvm/projects/llvm- 
test/MultiSource/Applications/SPASS/problem.dfg
SPASS derived 39572 clauses, backtracked 10747 clauses and kept 23119  
clauses.
SPASS allocated 3885 KBytes.
SPASS spent      No Timing on this machine.  on the problem.
                  No Timing on this machine.  for the input.
                  No Timing on this machine.  for the FLOTTER CNF  
translation.
                  No Timing on this machine.  for inferences.
                  No Timing on this machine.  for the backtracking.
                  No Timing on this machine.  for the reduction.

--------------------------SPASS-STOP------------------------------
exit 0


an arbitrary example taken from
 > diff SPASS.out-llc SPASS.out-llc-beta
3870,3872c3870,3872
<       Given clause: 29104[0:Res:357.1,166.0] || equal 
(universal_class,singleton_relation) -> member(y,element_relation)*.
<       Given clause: 29115[0:Res:361.1,166.0] || equal 
(universal_class,singleton_relation) -> member 
(universal_class,element_relation)*.
<       Given clause: 29213[3:SpR:29211.0,5371.0] ||  -> subclass 
(universal_class,complement(intersection(singleton 
(universal_class),universal_class)))*.
---
 >       Given clause: 29103[0:Res:357.1,166.0] || equal 
(universal_class,singleton_relation) -> member(y,element_relation)*.
 >       Given clause: 29114[0:Res:361.1,166.0] || equal 
(universal_class,singleton_relation) -> member 
(universal_class,element_relation)*.
 >       Given clause: 29212[3:SpR:29210.0,5371.0] ||  -> subclass 
(universal_class,complement(intersection(singleton 
(universal_class),universal_class)))*.

very weird indeed ;)

regards arnold



More information about the llvm-dev mailing list