~ubuntu-branches/ubuntu/maverick/clamav/maverick-backports

« back to all changes in this revision

Viewing changes to libclamav/c++/llvm/test/CodeGen/X86/lea-recursion.ll

  • Committer: Bazaar Package Importer
  • Author(s): Stephen Gran, Stephen Gran, Michael Tautschnig
  • Date: 2010-04-26 21:41:18 UTC
  • mfrom: (2.1.6 squeeze)
  • Revision ID: james.westby@ubuntu.com-20100426214118-i6lo606wnh7ywfj6
Tags: 0.96+dfsg-4
[ Stephen Gran ]
* Fixed typo in clamav-milter's postinst

[ Michael Tautschnig ]
* Fixed typo in clamav-freshclam's postinst (closes: #579271)
* Debconf translation updates
  - Portuguese (closes: #579068)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
; RUN: llc < %s -march=x86-64 | grep lea | count 12
 
2
 
 
3
; This testcase was written to demonstrate an instruction-selection problem,
 
4
; however it also happens to expose a limitation in the DAGCombiner's
 
5
; expression reassociation which causes it to miss opportunities for
 
6
; constant folding due to the intermediate adds having multiple uses.
 
7
; The Reassociate pass has similar limitations. If these limitations are
 
8
; fixed, the test commands above will need to be updated to expect fewer
 
9
; lea instructions.
 
10
 
 
11
@g0 = weak global [1000 x i32] zeroinitializer, align 32                ; <[1000 x i32]*> [#uses=8]
 
12
@g1 = weak global [1000 x i32] zeroinitializer, align 32                ; <[1000 x i32]*> [#uses=7]
 
13
 
 
14
define void @foo() {
 
15
entry:
 
16
        %tmp4 = load i32* getelementptr ([1000 x i32]* @g0, i32 0, i32 0)               ; <i32> [#uses=1]
 
17
        %tmp8 = load i32* getelementptr ([1000 x i32]* @g1, i32 0, i32 0)               ; <i32> [#uses=1]
 
18
        %tmp9 = add i32 %tmp4, 1                ; <i32> [#uses=1]
 
19
        %tmp10 = add i32 %tmp9, %tmp8           ; <i32> [#uses=2]
 
20
        store i32 %tmp10, i32* getelementptr ([1000 x i32]* @g0, i32 0, i32 1)
 
21
        %tmp8.1 = load i32* getelementptr ([1000 x i32]* @g1, i32 0, i32 1)             ; <i32> [#uses=1]
 
22
        %tmp9.1 = add i32 %tmp10, 1             ; <i32> [#uses=1]
 
23
        %tmp10.1 = add i32 %tmp9.1, %tmp8.1             ; <i32> [#uses=2]
 
24
        store i32 %tmp10.1, i32* getelementptr ([1000 x i32]* @g0, i32 0, i32 2)
 
25
        %tmp8.2 = load i32* getelementptr ([1000 x i32]* @g1, i32 0, i32 2)             ; <i32> [#uses=1]
 
26
        %tmp9.2 = add i32 %tmp10.1, 1           ; <i32> [#uses=1]
 
27
        %tmp10.2 = add i32 %tmp9.2, %tmp8.2             ; <i32> [#uses=2]
 
28
        store i32 %tmp10.2, i32* getelementptr ([1000 x i32]* @g0, i32 0, i32 3)
 
29
        %tmp8.3 = load i32* getelementptr ([1000 x i32]* @g1, i32 0, i32 3)             ; <i32> [#uses=1]
 
30
        %tmp9.3 = add i32 %tmp10.2, 1           ; <i32> [#uses=1]
 
31
        %tmp10.3 = add i32 %tmp9.3, %tmp8.3             ; <i32> [#uses=2]
 
32
        store i32 %tmp10.3, i32* getelementptr ([1000 x i32]* @g0, i32 0, i32 4)
 
33
        %tmp8.4 = load i32* getelementptr ([1000 x i32]* @g1, i32 0, i32 4)             ; <i32> [#uses=1]
 
34
        %tmp9.4 = add i32 %tmp10.3, 1           ; <i32> [#uses=1]
 
35
        %tmp10.4 = add i32 %tmp9.4, %tmp8.4             ; <i32> [#uses=2]
 
36
        store i32 %tmp10.4, i32* getelementptr ([1000 x i32]* @g0, i32 0, i32 5)
 
37
        %tmp8.5 = load i32* getelementptr ([1000 x i32]* @g1, i32 0, i32 5)             ; <i32> [#uses=1]
 
38
        %tmp9.5 = add i32 %tmp10.4, 1           ; <i32> [#uses=1]
 
39
        %tmp10.5 = add i32 %tmp9.5, %tmp8.5             ; <i32> [#uses=2]
 
40
        store i32 %tmp10.5, i32* getelementptr ([1000 x i32]* @g0, i32 0, i32 6)
 
41
        %tmp8.6 = load i32* getelementptr ([1000 x i32]* @g1, i32 0, i32 6)             ; <i32> [#uses=1]
 
42
        %tmp9.6 = add i32 %tmp10.5, 1           ; <i32> [#uses=1]
 
43
        %tmp10.6 = add i32 %tmp9.6, %tmp8.6             ; <i32> [#uses=1]
 
44
        store i32 %tmp10.6, i32* getelementptr ([1000 x i32]* @g0, i32 0, i32 7)
 
45
        ret void
 
46
}
 
47