Jakub Jelinek [Thu, 9 Oct 2008 20:04:10 +0000 (22:04 +0200)]
rtl.h (locator_eq): New decl.
* rtl.h (locator_eq): New decl.
* cfglayout.c (locator_scope): New function.
(insn_scope): Use it.
(locator_eq): New function.
(fixup_reorder_chain): Search for last insn in src bb
that has locator set or first insn in dest bb. Use
locator_eq instead of == to compare locators.
* cfgrtl.c (cfg_layout_merge_blocks): Likewise.
* cfgcleanup.c (try_forward_edges): Use locator_eq instead of
== to compare locators.
Thomas Koenig [Thu, 9 Oct 2008 19:28:58 +0000 (19:28 +0000)]
re PR libfortran/37753 (Convert="BIG_ENDIAN" reverses character)
2008-10-09 Thomas Koenig <tkoenig@gcc.gnu.org>
PR libfortran/37753
* io/transfer.c (unformatted_read): CONVERT_NATIVE
is the usual case. Check for kind==1 for non-byte-reversing
operation.
(unformatted_write): Likewise.
2008-10-09 Thomas Koenig <tkoenig@gcc.gnu.org>
PR libfortran/37753
* gfortran.dg/convert_2.f90: New test case.
Jakub Jelinek [Thu, 9 Oct 2008 08:14:45 +0000 (10:14 +0200)]
tree-ssa-live.c (remove_unused_locals): Mark all edge's goto_block as used.
* tree-ssa-live.c (remove_unused_locals): Mark all edge's goto_block
as used.
* gimple-low.c (lower_function_body, lower_gimple_return,
lower_builtin_setjmp): Set gimple_block on the newly created stmts.
* tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Only set
goto_block on edges if goto_locus is known.
Daniel Kraft [Thu, 9 Oct 2008 07:28:22 +0000 (09:28 +0200)]
re PR fortran/35723 (Can't use run-time array element in character declaration)
2008-10-09 Daniel Kraft <d@domob.eu>
PR fortran/35723
* gfortran.h (gfc_suppress_error): Removed from header.
(gfc_push_suppress_errors), (gfc_pop_suppress_errors): New methods.
* array.c (gfc_array_size): Use new gfc_push/pop_suppress_errors
instead of directly changing gfc_suppress_error.
* intrinsic.c (gfc_intrinsic_func_interface): Ditto.
(gfc_intrinsic_sub_interface): Ditto.
* error.c (suppress_errors): Made static from `gfc_suppress_error'.
(gfc_push_suppress_errors), (gfc_pop_suppress_errors): New methods.
(gfc_notify_std), (gfc_error): Use new static name of global.
* expr.c (check_arglist), (check_references): New methods.
(check_restricted): Check arglists and references of EXPR_FUNCTIONs
and EXPR_VARAIBALEs, respectively. Allow PARAMETER symbols.
2008-10-09 Daniel Kraft <d@domob.eu>
PR fortran/35723
* gfortran.dg/restricted_expression_1.f90: New test.
* gfortran.dg/restricted_expression_2.f90: New test.
* gfortran.dg/restricted_expression_3.f90: New test.
Jerry DeLisle [Thu, 9 Oct 2008 04:02:35 +0000 (04:02 +0000)]
re PR libfortran/37707 (Namelist read of array of derived type incorrect)
2008-10-08 Jerry DeLisle <jvdelisle@gcc.gnu.org
PR libfortran/37707
* io/list_read.c (nml_get_obj_data): If the first namelist object rank
is greater than zero, call nml_object_read with the first object rather
than the sub-object.
Adam Nemet [Wed, 8 Oct 2008 21:05:43 +0000 (21:05 +0000)]
octeon-exts-2.c: Compile it with -meb.
* gcc.target/mips/octeon-exts-2.c: Compile it with -meb.
* gcc.target/mips/octeon-exts-5.c: New test.
* gcc.target/mips/octeon-bbit-3.c: Compile with -meb. Add
comment why this is necessary.
PR rtl-optimization/37448
alloc_pool_desc (elt_size): New field.
alloc_pool_desc (created, allocated, current, peak): Make unsigned
long.
output_info (count): Renamed total_created and made unsigned long.
output_info (size): Renamed total_allocated and made unsigned long.
alloc-pool.c (create_alloc_pool, empty_alloc_pool, pool_alloc,
pool_free): Properly keep track of desc->size.
(print_statistics, dump_alloc_pool_statistics): Enhance the
printing of statistics to print the number of elements and to use
unsigned longs.
H.J. Lu [Tue, 7 Oct 2008 21:00:36 +0000 (21:00 +0000)]
i386-protos.h (ix86_schedule): New.
2008-10-07 H.J. Lu <hongjiu.lu@intel.com>
* config/i386/i386-protos.h (ix86_schedule): New.
* config/i386/i386.c (ix86_schedule): New.
(override_options): Add schedule to processor_alias_table. Set
ix86_schedule from the schedule field in processor_alias_table.
(ix86_function_specific_save): Save ix86_schedule.
(ix86_function_specific_restore): Restore ix86_schedule.
* config/i386/i386.md (cpu): Map to ix86_schedule instead of
ix86_tune. Add none and remove i386, i486, pentium4, nocona
and generic32.
Jakub Jelinek [Tue, 7 Oct 2008 18:48:40 +0000 (20:48 +0200)]
re PR middle-end/29609 (Even with -O0 -g gcc optimizes a goto away and I cannot debug)
PR debug/29609
PR debug/36690
PR debug/37616
* basic-block.h (struct edge_def): Add goto_block field.
* cfglayout.c (fixup_reorder_chain): Ensure that there is at least
one insn with locus corresponding to edge's goto_locus if !optimize.
* profile.c (branch_prob): Copy edge's goto_block.
* cfgrtl.c (force_nonfallthru_and_redirect): Use goto_locus for
emitted jumps.
(cfg_layout_merge_blocks): Emit a nop with edge's goto_locus
locator in between the merged basic blocks if !optimize and needed.
* cfgexpand.c (expand_gimple_cond): Convert goto_block and
goto_locus into RTL locator. For unconditional jump use that
locator for the jump insn.
(expand_gimple_cond): Convert goto_block and goto_locus into
RTL locator for all remaining edges. For unconditional jump
use that locator for the jump insn.
* cfgcleanup.c (try_forward_edges): Avoid the optimization if
there is more than one edge or insn locator along the forwarding
edges and !optimize. If there is just one, set e->goto_locus.
* tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Set also
edge's goto_block.
(move_block_to_fn): Adjust edge's goto_block.
* gcc.dg/debug/pr29609-1.c: New test.
* gcc.dg/debug/pr29609-2.c: New test.
* gcc.dg/debug/pr36690-1.c: New test.
* gcc.dg/debug/pr36690-2.c: New test.
* gcc.dg/debug/pr36690-3.c: New test.
* gcc.dg/debug/pr37616.c: New test.
* gcc.dg/debug/dwarf2/pr29609-1.c: New test.
* gcc.dg/debug/dwarf2/pr29609-2.c: New test.
* gcc.dg/debug/dwarf2/pr36690-1.c: New test.
* gcc.dg/debug/dwarf2/pr36690-2.c: New test.
* gcc.dg/debug/dwarf2/pr36690-3.c: New test.
* gcc.dg/debug/dwarf2/pr37616.c: New test.
Jakub Jelinek [Tue, 7 Oct 2008 18:15:32 +0000 (20:15 +0200)]
f95-lang.c (poplevel): Don't clear BLOCK_VARS if functionbody.
* f95-lang.c (poplevel): Don't clear BLOCK_VARS if functionbody.
* trans-decl.c (gfc_build_qualified_array): Build accurate debug type
even if nest.
(build_entry_thunks, gfc_generate_function_code,
gfc_generate_constructors): Ensure DECL_SAVED_TREE is a BIND_EXPR
with DECL_INITIAL as its BLOCK.
Jakub Jelinek [Tue, 7 Oct 2008 18:14:16 +0000 (20:14 +0200)]
re PR debug/37738 (Fortran DW_TAG_common_block has incorrect placement/scope)
PR debug/37738
* dwarf2out.c (common_block_die_table): New variable.
(common_block_die_table_hash, common_block_die_table_eq): New
functions.
(gen_variable_die): Look up a DW_TAG_common_block die for a particular
COMMON block in the current scope rather than globally. Optimize
DW_OP_addr SYMBOL_REF DW_OP_plus_uconst off into
DW_OP_addr SYMBOL_REF+off.
Bob Wilson [Tue, 7 Oct 2008 16:19:38 +0000 (16:19 +0000)]
struct-layout-1_generate.c (dg_options): New.
* gcc.dg/compat/struct-layout-1_generate.c (dg_options): New. Moved
dg-options lines to this array, and added options for xtensa*-*-*.
(NDG_OPTIONS): Define.
(switchfiles): Print dg-options lines from new dg_options array.
* g++.dg/compat/struct-layout-1_generate.c (dg_options): Add options
for xtensa*-*-* targets.
Paolo Carlini [Tue, 7 Oct 2008 14:49:20 +0000 (14:49 +0000)]
stl_iterator.h (operator-(const reverse_iterator<>&, const reverse_iterator<>&), [...]): Use the auto -> return type syntax, implement DR 685.
2008-10-07 Paolo Carlini <paolo.carlini@oracle.com>
* include/bits/stl_iterator.h (operator-(const reverse_iterator<>&,
const reverse_iterator<>&), operator-(const __normal_iterator<>&,
const __normal_iterator<>&), operator-(const move_iterator<>&,
const move_iterator<>&)): Use the auto -> return type syntax,
implement DR 685.
Adam Nemet [Tue, 7 Oct 2008 00:30:00 +0000 (00:30 +0000)]
mips.md (mulsi3_mul3, [...]): Merge these ...
* config/mips/mips.md (mulsi3_mul3, muldi3_mul3): Merge these ...
(mul<mode>3_mul3): ... into this new template.
testsuite/
* gcc.target/mips/mips.exp (dg-mips-options): Set mips_new_gp to
32 when -march=r3900 is passed.
* testsuite/gcc.target/mips/r3900-mult.c: New test.
Joshua Kinard [Mon, 6 Oct 2008 19:41:10 +0000 (19:41 +0000)]
invoke.texi: List r1x000 family under the -march MIPS option.
gcc/
2008-10-06 Joshua Kinard <kumba@gentoo.org>
* doc/invoke.texi: List r1x000 family under the -march MIPS option.
* config/mips/mips.h (PROCESSOR_R10000): New processor_type.
* config/mips/mips.c (mips_cpu_info_table): Add r10000, r12000,
r14000 and r16000.
(mips_rtx_cost_data): Add a PROCESSOR_R10000 entry.
(mips_issue_rate): Handle PROCESSOR_R10000.
* config/mips/mips.md (cpu): Add r10000.
Include r10000.md.
* config/mips/10000.md: New file.
gcc/
* config/darwin-protos.h (machopic_function_base_name): Delete.
(machopic_function_base_sym): Likewise.
(machopic_gen_offset): Declare.
* config/darwin.h (MACHOPIC_FUNCTION_BASE_NAME): New macro.
(ASM_OUTPUT_LABELREF): Use it instead of a hard-coded string constant.
* config/darwin.c (machopic_function_base_name): Delete.
(machopic_function_base_sym): Likewise.
(gen_pic_offset): Rename to...
(machopic_gen_offset): ...this and remove the pic_base argument.
Instead use MACHO_DYNAMIC_NO_PIC_P to decide whether a PIC offset
is needed. Create an UNSPEC_MACHOPIC_OFFSET if so, and set
crtl->uses_pic_offset_table.
(machopic_indirect_data_reference): Use new machopic_gen_offset
interface.
(machopic_legitimize_pic_address): Likewise.
(machopic_operand_p): Check for UNSPEC_MACHOPIC_OFFSET.
* config/i386/darwin.h (GOT_SYMBOL_NAME): Use
MACHOPIC_FUNCTION_BASE_NAME instead of machopic_function_base_name.
* config/i386/i386.c (output_set_got): Likewise.
(darwin_local_data_pic): Check for an UNSPEC_MACHOPIC_OFFSET
instead of a MINUS.
(legitimate_pic_operand_p): Handle UNSPEC_MACHOPIC_OFFSET.
(legitimate_address_p): Likewise.
(output_pic_addr_const): Likewise.
(output_addr_const_extra): Likewise.
(ix86_delegitimize_address): Expect darwin_local_data_pic to
match an UNSPEC rather than a MINUS.
* config/i386/i386.md (UNSPEC_MACHOPIC_OFFSET): Define.
(builtin_setjmp_receiver): Use machopic_gen_offset.
* config/i386/predicates.md (pic_symbolic_operand): Handle
UNSPEC_MACHOPIC_OFFSET.
* config/rs6000/rs6000.c (rs6000_legitimize_reload_address):
Use machopic_gen_offset and machopic_operand_p.
(rs6000_output_addr_const_extra): Handle UNSPEC_MACHOPIC_OFFSET.
(rs6000_emit_prologue): Use MACHOPIC_FUNCTION_BASE_NAME.
* config/rs6000/rs6000.md (UNSPEC_MACHOPIC_OFFSET): Define.
(builtin_setjmp_receiver): Use MACHOPIC_FUNCTION_BASE_NAME.
Set crtl->uses_pic_offset_table.
gcc/
* config/rs6000/rs6000-protos.h (rs6000_output_addr_const_extra):
Declare.
* config/rs6000/rs6000.h (OUTPUT_ADDR_CONST_EXTRA): New macro.
* config/rs6000/rs6000.md (UNSPEC_TOCREL): New constant.
* config/rs6000/rs6000.c (constant_pool_expr_1): Delete.
(constant_pool_expr_p): Use split_const and check the base.
(toc_relative_expr_p): Likewise, checking for an UNSPEC_TOCREL
instead of a MINUS.
(legitimate_constant_pool_address_p): Check toc_relative_p
instead of constant_pool_expr_p.
(print_operand_address): Always use output_addr_const for
constant pool addresses.
(rs6000_output_addr_const_extra): New function.
(create_TOC_reference): Create an UNSPEC_TOCREL instead of
a MINUS.
re PR middle-end/37535 (gcc/libgcc2.c:404: internal compiler error: Floating point exception)
2008-10-06 Vladimir Makarov <vmakarov@redhat.com>
PR middle-end/37535
* ira-lives.c (mark_reg_live, mark_reg_dead): New functions.
(mark_ref_live, mark_ref_dead): Use them.
(def_conflicts_with_inputs_p): Remove.
(mark_early_clobbers): New function.
(process_bb_node_lives): Call preprocess_constraints and
mark_early_clobbers.
* doc/rtx.texi (clobber): Change how RA deals with clobbers.
Eric Botcazou [Mon, 6 Oct 2008 07:09:41 +0000 (07:09 +0000)]
utils.c (can_fold_for_view_convert_p): New predicate.
2008-10-06 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/utils.c (can_fold_for_view_convert_p): New predicate.
(unchecked_convert): Use it to disable problematic folding with
VIEW_CONVERT_EXPR in the general case. Always disable it for the
special VIEW_CONVERT_EXPR built for integral types and cope with
its addressability issues by preserving the first conversion.
PR c++/37410
* dwarf2out.c (dwarf2out_imported_module_or_decl): Split this
function in two, making it call a new and reusable
dwarf2out_imported_module_or_decl() that takes the containing
BLOCK of the declaration in argument.
(dwarf2out_imported_module_or_decl_real): New function.
(decls_for_scope, gen_decl_die, dwarf2out_decl): Take
IMPORTED_DECL in account.
* tree.def: Added IMPORTED_DECL node type.
* tree.h: Added accessors for IMPORTED_DECL nodes.
* tree.c (init_ttree): Initialise IMPORTED_DECL node type.
gcc/cp/ChangeLog:
PR c++/37410
* cp-gimplify.c (cp_gimplify_expr): For each USING_STMT
make sure an IMPORTED_DECL node is added to the BLOCK_VARS list
of the innermost containing BLOCK.
gcc/testsuite/ChangeLog:
PR c++/37410
* g++.dg/debug/dwarf2/imported-module.C: New test.
Paul Thomas [Sun, 5 Oct 2008 18:53:19 +0000 (18:53 +0000)]
re PR fortran/35680 (ICE on invalid transfer in variable declaration)
2008-10-05 Paul Thomas <pault@gcc.gnu.org>
PR fortran/35680
* gfortran.h : Add 'error' bit field to gfc_expr structure.
* expr.c (check_inquiry): When checking a restricted expression
check that arguments are either variables or restricted.
(check_restricted): Do not emit error if the expression has
'error' set. Clean up detection of host-associated variable.
2008-10-05 Paul Thomas <pault@gcc.gnu.org>
PR fortran/35680
* gfortran.dg/transfer_array_intrinsic_5.f90: New test.
Daniel Kraft [Sun, 5 Oct 2008 06:39:37 +0000 (08:39 +0200)]
re PR fortran/37638 (ICE in update_arglist_pass)
2008-10-05 Daniel Kraft <d@domob.eu>
PR fortran/37638
* gfortran.h (struct gfc_typebound_proc): New flag `error'.
* resolve.c (update_arglist_pass): Added assertion.
(update_compcall_arglist): Fail early for erraneous procedures to avoid
confusion later.
(resolve_typebound_generic_call): Ignore erraneous specific targets
and added assertions.
(resolve_typebound_procedure): Set new `error' flag.
2008-10-05 Daniel Kraft <d@domob.eu>
PR fortran/37638
* gfortran.dg/typebound_call_9.f03: New test.
Danny Smith [Fri, 3 Oct 2008 20:50:54 +0000 (20:50 +0000)]
Add this missing ChangeLog entry:
* config/i386/winnt.c (i386_pe_strip_name_encoding_full):
Add a null terminator to the stripped name.
and revert it:
* config/i386/winnt.c (i386_pe_strip_name_encoding_full):
Revert previous change.
Jakub Jelinek [Fri, 3 Oct 2008 19:28:09 +0000 (21:28 +0200)]
gimplify.c (gimplify_function_tree): For -finstrument-functions use gimple_bind_{,set_}block instead of...
* gimplify.c (gimplify_function_tree): For -finstrument-functions
use gimple_bind_{,set_}block instead of gimple_{,set_}block.
* gimple.h (gimple_bind_set_block): Allow second argument to be NULL.
Pascal Obry [Fri, 3 Oct 2008 12:49:38 +0000 (12:49 +0000)]
gcov.c (create_file_names): Properly handle UNIX and DOS directory separators.
* gcov.c (create_file_names): Properly handle UNIX and DOS
directory separators.
(make_gcov_file_name): Likewise + convert the ':' DOS drive
separator to '~' to ensure clean filenames on Windows.
re PR middle-end/37713 (ice for legal code with -O3 on 20080926)
2008-10-02 Richard Guenther <rguenther@suse.de>
PR middle-end/37713
* tree-ssa.c (useless_type_conversion_p_1): For COMPLEX_TYPE
and VECTOR_TYPE recurse with useless_type_conversion_p which
properly handles void pointer conversion.
2008-10-01 Andrew Pinski <andrew_pinski@playstation.sony.com>
* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
Handle ALTIVEC_BUILTIN_VEC_SPLATS, ALTIVEC_BUILTIN_VEC_PROMOTE,
ALTIVEC_BUILTIN_VEC_EXTRACT, and ALTIVEC_BUILTIN_VEC_INSERT specially,
they translate to non builtins.
* config/rs6000/rs6000.c (altivec_init_builtins): Add new variable
opaque_ftype_opaque. Define builtins __builtin_vec_splats,
__builtin_vec_promote, __builtin_vec_extract, and
__builtin_vec_insert.
* config/rs6000/rs6000.h (enum rs6000_builtins): Add
ALTIVEC_BUILTIN_VEC_EXTRACT, ALTIVEC_BUILTIN_VEC_PROMOTE,
ALTIVEC_BUILTIN_VEC_INSERT, and ALTIVEC_BUILTIN_VEC_SPLATS.
* config/rs6000/altivec.h (vec_extract): Define
(vec_insert): Define.
(vec_splats): Define.
(vec_promote): Define.
2008-10-01 Andrew Pinski <andrew_pinski@playstation.sony.com>
* gcc.target/powerpc/altivec-cell-1.c: New test.
* gcc.target/powerpc/altivec-cell-2.c: New test.
* gcc.target/powerpc/altivec-cell-3.c: New test.
* gcc.target/powerpc/altivec-cell-4.c: New test.
* gcc.target/powerpc/altivec-cell-5.c: New test.
* g++.dg/ext/altivec-cell-1.C: New test.
* g++.dg/ext/altivec-cell-2.C: New test.
* g++.dg/ext/altivec-cell-3.C: New test.
* g++.dg/ext/altivec-cell-4.C: New test.
* g++.dg/ext/altivec-cell-5.C: New test.
2008-10-01 Andrew Pinski <andrew_pinski@playstation.sony.com>
* tree.c (lvalue_p_1): COMPOUND_LITERAL_EXPR is also an lvalue.
2008-10-01 Andrew Pinski <andrew_pinski@playstation.sony.com>
Yukishige Shibata <shibata@rd.scei.sony.co.jp>
Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
* config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add Cell
Altivec intrinsics.
* config/rs6000/rs6000.c (altivec_expand_lv_builtin): Delete
prototype. Add new parameter, blk.
Use BLKmode for the MEM if blk is true.
(altivec_expand_builtin): Handle ALTIVEC_BUILTIN_STVLX,
ALTIVEC_BUILTIN_STVLXL, ALTIVEC_BUILTIN_STVRX, and
ALTIVEC_BUILTIN_STVRXL.
Update usage of altivec_expand_lv_builtin.
Handle ALTIVEC_BUILTIN_LVLX, ALTIVEC_BUILTIN_LVLXL,
ALTIVEC_BUILTIN_LVRX, and ALTIVEC_BUILTIN_LVRXL.
(altivec_init_builtins): If compiling for the Cell, also define the
cell VMX builtins.
* config/rs6000/rs6000.h (rs6000_builtins): Define
ALTIVEC_BUILTIN_LVLX, ALTIVEC_BUILTIN_LVLXL, ALTIVEC_BUILTIN_LVRX,
ALTIVEC_BUILTIN_LVRXL, ALTIVEC_BUILTIN_STVLX, ALTIVEC_BUILTIN_STVLXL,
ALTIVEC_BUILTIN_STVRX, ALTIVEC_BUILTIN_STVRXL,
ALTIVEC_BUILTIN_VEC_LVLX, ALTIVEC_BUILTIN_VEC_LVLXL,
ALTIVEC_BUILTIN_VEC_LVRX, ALTIVEC_BUILTIN_VEC_LVRXL,
ALTIVEC_BUILTIN_VEC_STVLX, ALTIVEC_BUILTIN_VEC_STVLXL,
ALTIVEC_BUILTIN_VEC_STVRX, and ALTIVEC_BUILTIN_VEC_STVRXL.
* config/rs6000/altivec.md (define_constants): Define UNSPEC_LVLX,
UNSPEC_LVLXL, UNSPEC_LVRX, UNSPEC_LVRXL, UNSPEC_STVLX, UNSPEC_STVLXL,
UNSPEC_STVRX, and UNSPEC_STVRXL.
(altivec_lvlx): New pattern.
(altivec_lvlxl): New pattern.
(altivec_lvrx): New pattern.
(altivec_lvrxl): New pattern.
(altivec_stvlx): New pattern.
(altivec_stvlxl): New pattern.
(altivec_stvrx): New pattern.
(altivec_stvrxl): New pattern.
* config/rs6000/altivec.h (vec_lvlx): Define if PPU is defined.
(vec_lvlxl): Likewise.
(vec_lvrx): Define if PPU is defined.
(vec_lvrxl): Likewise.
(vec_stvlx): Define if PPU is defined.
(vec_stvlxl): Likewise.
(vec_stvrx): Define if PPU is defined.
(vec_stvrxl): Likewise.
2008-10-01 Andrew Pinski <andrew_pinski@playstation.sony.com>
* gcc.target/powerpc/altivec_check.h (altivec_cell_check): New function.
* gcc.target/powerpc/altivec-cell-6.c: New test.
* gcc.target/powerpc/altivec-cell-7.c: New test.
* gcc.target/powerpc/altivec-cell-8.c: New test.
re PR middle-end/37285 (ICE while building binutils on ppc)
2008-10-01 Richard Guenther <rguenther@suse.de>
PR middle-end/37285
* tree-vrp.c (execute_vrp): If we optimized away the default
case make sure to promote the label that got in place of it
to a default case label.
Paolo Bonzini [Wed, 1 Oct 2008 12:22:17 +0000 (12:22 +0000)]
re PR tree-optimization/37662 (ice: tree check: expected ssa_name, have integer_cst in get_value_range, at tree-vrp.c:612)
2008-09-30 Paolo Bonzini <bonzini@gnu.org>
PR tree-optimization/37662
* tree-ssa-ccp.c (fold_gimple_assign): Invert the operands of a
commutative binary operation if they are in the wrong order and
fold_build2 produces non-GIMPLE.