I'd like to work on using MPFR to handle builtin lgamma. The lgamma function requires setting the global int variable "signgam" in addition to calculating the return value of lgamma. I think I see how to do grab a handle on signgam like so:
sg = maybe_get_identifier("signgam"); if (sg) { sg = identifier_global_value(sg); /* Question 1 */ if (sg) { if (TREE_TYPE (sg) == TYPE_DECL && DECL_ORIGINAL_TYPE (sg) == integer_type_node) return sg; /* Use this to set signgam. */ else /* Question 2 */ ; } else { /* Question 3 */ ; } else { /* Question 4 */ } I've marked above where I have questions about how to proceed. 1. Only the C-family functions have identifier_global_value. I need to access this from the middle-end. Should I use a langhook? What should the non-C languages default to returning? NULL? Should I punt in non-C or just set the return value of lgamma without setting signgam? I could also declare signgam myself. 2. I assume that if signgam is defined at global scope with something other than int type then I punt, or should I proceed without setting signgam? 3. If signgam is declared somehow but not at global scope, then should I declare it myself with type int and proceed to set it? Or should I ignore signgam but still generate the lgamma value? Or do nothing? 4. Likewise, if signgam is not declared at all, which of the three choices from #3 should I do? My guesses are: 1. Do nothing for non-C. 2. Punt. 3. Declare signgam and proceed. 4. Ditto. Thanks, --Kaveh -- Kaveh R. Ghazi [EMAIL PROTECTED]