Hi all

I didn't find anything relevant in the archives about this so I wanted to

ask here.

I am generating a simple function for JIT using the API. The function

structure and code work fine with 2.8 but give me "Cannot select" with 2.9.

Assembly dump of the function:

define double @0(double %f0, double %f1, double %f2, double %f3, double %f4,

double %f5, double %f6, double %f7, double %f8, double %f9) {

%1 = add double %f0, %f1

%2 = add double %1, %f2

%3 = add double %2, %f3

%4 = add double %3, %f4

%5 = add double %4, %f5

%6 = add double %5, %f6

%7 = add double %6, %f7

%8 = add double %7, %f8

%9 = add double %8, %f9

ret double %9

}

LLVM error I get:

LLVM ERROR: Cannot select: 0xd1b720: f64 = add 0xd1b620, 0xd1ae20 [ORD=9]

[ID=32]

0xd1b620: f64 = add 0xd1b520, 0xd1ac20 [ORD=8] [ID=31]

0xd1b520: f64 = add 0xd1b420, 0xd1a920 [ORD=7] [ID=30]

0xd1b420: f64 = add 0xd1b320, 0xd1a610 [ORD=6] [ID=29]

0xd1b320: f64 = add 0xd1b220, 0xd1a410 [ORD=5] [ID=28]

0xd1b220: f64 = add 0xd1b120, 0xd1a210 [ORD=4] [ID=27]

0xd1b120: f64 = add 0xd1b020, 0xd1a010 [ORD=3] [ID=26]

0xd1b020: f64 = add 0xd1af20, 0xd19e10 [ORD=2] [ID=25]

0xd1af20: f64 = add 0xd19a10, 0xd19c10 [ORD=1] [ID=24]

0xd19a10: f64,ch = CopyFromReg 0xcee028, 0xd19910 [ORD=1]

[ID=14]

0xd19c10: f64,ch = CopyFromReg 0xcee028, 0xd19b10 [ORD=1]

[ID=15]

0xd19e10: f64,ch = CopyFromReg 0xcee028, 0xd19d10 [ORD=2]

[ID=16]

0xd19d10: f64 = Register %vreg2 [ORD=2] [ID=3]

0xd1a010: f64,ch = CopyFromReg 0xcee028, 0xd19f10 [ORD=3]

[ID=17]

0xd19f10: f64 = Register %vreg3 [ORD=3] [ID=4]

0xd1a210: f64,ch = CopyFromReg 0xcee028, 0xd1a110 [ORD=4]

[ID=18]

0xd1a110: f64 = Register %vreg4 [ORD=4] [ID=5]

0xd1a410: f64,ch = CopyFromReg 0xcee028, 0xd1a310 [ORD=5] [ID=19]

0xd1a310: f64 = Register %vreg5 [ORD=5] [ID=6]

0xd1a610: f64,ch = CopyFromReg 0xcee028, 0xd1a510 [ORD=6] [ID=20]

0xd1a510: f64 = Register %vreg6 [ORD=6] [ID=7]

0xd1a920: f64,ch = CopyFromReg 0xcee028, 0xd1a710 [ORD=7] [ID=21]

0xd1a710: f64 = Register %vreg7 [ORD=7] [ID=8]

0xd1ac20: f64,ch = load 0xcee028, 0xd1aa20,

0xd1ab20<LD8[FixedStack-1](align=16)> [ORD=8] [ID=22]

0xd1aa20: i64 = FrameIndex<-1> [ORD=8] [ID=9]

0xd1ab20: i64 = undef [ORD=8] [ID=10]

0xd1ae20: f64,ch = load 0xcee028, 0xd1ad20, 0xd1ab20<LD8[FixedStack-2]>

[ORD=9] [ID=23]

0xd1ad20: i64 = FrameIndex<-2> [ORD=9] [ID=11]

0xd1ab20: i64 = undef [ORD=8] [ID=10]

Is there something different I need to do in my function definition or

structure to get by this? Or is this a bug?

Thanks

Greg