double-int.h (lshift): New overload without precision and arith argument.
authorRichard Biener <rguenther@suse.de>
Fri, 3 May 2013 11:09:59 +0000 (11:09 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Fri, 3 May 2013 11:09:59 +0000 (11:09 +0000)
commit07bfc9ece12554016cf8c39b17301ab94df6f176
tree7d533f06f94bafb5dd09f062d0ef17a1ab83a989
parent7769bb64f35fea465d47288bcc8dae542257162f
double-int.h (lshift): New overload without precision and arith argument.

2013-05-03  Richard Biener  <rguenther@suse.de>

* double-int.h (lshift): New overload without precision
and arith argument.
(operator *=, operator +=, operator -=): Move ...
* double-int.c (operator *=, operator +=, operator -=): ... here
and implement more efficiently.
(mul_double_with_sign): Remove.
(lshift_double): Adjust to take unsinged shift argument, push
dispatching code to callers.
(mul_double_wide_with_sign): Add early out for callers that
are not interested in high parts or overflow.
(lshift): New function.
(lshift, rshift, alshift, arshift, llshift, lrshift): Add
dispatch code here.
(lrotate, rrotate): Use logical shifts.
* expr.c (get_inner_reference): Use lshift.
* fixed-value.c (do_fixed_divide): Likewise.
* tree-dfa.c (get_ref_base_and_extent): Likewise.
* tree-ssa-alias.c (indirect_ref_may_alias_decl_p): Likewise.
(indirect_refs_may_alias_p): Likewise.
(stmt_kills_ref_p_1): Likewise.

From-SVN: r198576
gcc/ChangeLog
gcc/double-int.c
gcc/double-int.h
gcc/expr.c
gcc/fixed-value.c
gcc/tree-dfa.c
gcc/tree-ssa-alias.c