# HG changeset patch # User Tomas Lindquist Olsen # Date 1236111620 -3600 # Node ID 0477f98d357e6a80a4309f7b7b82ce587c1299bb # Parent 21691e437c9506269062ca3d1fc0d0a51190e563 Fixed inreg attribute to no longer overwrite sign/zeroext. diff -r 21691e437c95 -r 0477f98d357e gen/abi.cpp --- a/gen/abi.cpp Tue Mar 03 19:47:39 2009 +0100 +++ b/gen/abi.cpp Tue Mar 03 21:20:20 2009 +0100 @@ -183,7 +183,7 @@ if (last->byref && !last->isByVal()) { - last->attrs = llvm::Attribute::InReg; + last->attrs |= llvm::Attribute::InReg; } else if (!lastTy->isfloating() && (sz == 1 || sz == 2 || sz == 4)) // right? { @@ -193,8 +193,10 @@ last->rewrite = &structToReg; last->ltype = structToReg.type(last->type, last->ltype); last->byref = false; + // erase previous attributes + last->attrs = 0; } - last->attrs = llvm::Attribute::InReg; + last->attrs |= llvm::Attribute::InReg; } }