mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-13 14:11:18 +08:00
rs6000-protos.h (altivec_resolve_overloaded_builtin): Change first argument type to location_t.
* config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin): Change first argument type to location_t. * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same. Do not set input_location. Use loc instead of input_location throughout. objcp/ * objcp-decl.h (start_struct): Add location argument. (finish_struct): Same. (finish_decl): New. From-SVN: r148461
This commit is contained in:
parent
cd19075ff9
commit
4b29c5e543
gcc
@ -1,3 +1,11 @@
|
||||
2009-06-13 Aldy Hernandez <aldyh@redhat.com>
|
||||
|
||||
* config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
|
||||
Change first argument type to location_t.
|
||||
* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
|
||||
Do not set input_location.
|
||||
Use loc instead of input_location throughout.
|
||||
|
||||
2009-06-13 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/40389
|
||||
|
@ -3001,10 +3001,9 @@ altivec_build_resolved_builtin (tree *args, int n,
|
||||
support Altivec's overloaded builtins. */
|
||||
|
||||
tree
|
||||
altivec_resolve_overloaded_builtin (unsigned int loc, tree fndecl,
|
||||
altivec_resolve_overloaded_builtin (location_t loc, tree fndecl,
|
||||
void *passed_arglist)
|
||||
{
|
||||
location_t input_location = (location_t) loc;
|
||||
VEC(tree,gc) *arglist = (VEC(tree,gc) *) passed_arglist;
|
||||
unsigned int nargs = VEC_length (tree, arglist);
|
||||
unsigned int fcode = DECL_FUNCTION_CODE (fndecl);
|
||||
@ -3115,11 +3114,11 @@ altivec_resolve_overloaded_builtin (unsigned int loc, tree fndecl,
|
||||
goto bad;
|
||||
/* Build *(((arg1_inner_type*)&(vector type){arg1})+arg2). */
|
||||
arg1_inner_type = TREE_TYPE (arg1_type);
|
||||
arg2 = build_binary_op (input_location, BIT_AND_EXPR, arg2,
|
||||
arg2 = build_binary_op (loc, BIT_AND_EXPR, arg2,
|
||||
build_int_cst (TREE_TYPE (arg2),
|
||||
TYPE_VECTOR_SUBPARTS (arg1_type)
|
||||
- 1), 0);
|
||||
decl = build_decl (input_location, VAR_DECL, NULL_TREE, arg1_type);
|
||||
decl = build_decl (loc, VAR_DECL, NULL_TREE, arg1_type);
|
||||
DECL_EXTERNAL (decl) = 0;
|
||||
TREE_PUBLIC (decl) = 0;
|
||||
DECL_CONTEXT (decl) = current_function_decl;
|
||||
@ -3129,15 +3128,15 @@ altivec_resolve_overloaded_builtin (unsigned int loc, tree fndecl,
|
||||
DECL_INITIAL (decl) = arg1;
|
||||
stmt = build1 (DECL_EXPR, arg1_type, decl);
|
||||
TREE_ADDRESSABLE (decl) = 1;
|
||||
SET_EXPR_LOCATION (stmt, input_location);
|
||||
SET_EXPR_LOCATION (stmt, loc);
|
||||
stmt = build1 (COMPOUND_LITERAL_EXPR, arg1_type, stmt);
|
||||
|
||||
innerptrtype = build_pointer_type (arg1_inner_type);
|
||||
|
||||
stmt = build_unary_op (input_location, ADDR_EXPR, stmt, 0);
|
||||
stmt = build_unary_op (loc, ADDR_EXPR, stmt, 0);
|
||||
stmt = convert (innerptrtype, stmt);
|
||||
stmt = build_binary_op (input_location, PLUS_EXPR, stmt, arg2, 1);
|
||||
stmt = build_indirect_ref (input_location, stmt, NULL);
|
||||
stmt = build_binary_op (loc, PLUS_EXPR, stmt, arg2, 1);
|
||||
stmt = build_indirect_ref (loc, stmt, NULL);
|
||||
|
||||
return stmt;
|
||||
}
|
||||
@ -3171,11 +3170,11 @@ altivec_resolve_overloaded_builtin (unsigned int loc, tree fndecl,
|
||||
goto bad;
|
||||
/* Build *(((arg1_inner_type*)&(vector type){arg1})+arg2) = arg0. */
|
||||
arg1_inner_type = TREE_TYPE (arg1_type);
|
||||
arg2 = build_binary_op (input_location, BIT_AND_EXPR, arg2,
|
||||
arg2 = build_binary_op (loc, BIT_AND_EXPR, arg2,
|
||||
build_int_cst (TREE_TYPE (arg2),
|
||||
TYPE_VECTOR_SUBPARTS (arg1_type)
|
||||
- 1), 0);
|
||||
decl = build_decl (input_location, VAR_DECL, NULL_TREE, arg1_type);
|
||||
decl = build_decl (loc, VAR_DECL, NULL_TREE, arg1_type);
|
||||
DECL_EXTERNAL (decl) = 0;
|
||||
TREE_PUBLIC (decl) = 0;
|
||||
DECL_CONTEXT (decl) = current_function_decl;
|
||||
@ -3185,15 +3184,15 @@ altivec_resolve_overloaded_builtin (unsigned int loc, tree fndecl,
|
||||
DECL_INITIAL (decl) = arg1;
|
||||
stmt = build1 (DECL_EXPR, arg1_type, decl);
|
||||
TREE_ADDRESSABLE (decl) = 1;
|
||||
SET_EXPR_LOCATION (stmt, input_location);
|
||||
SET_EXPR_LOCATION (stmt, loc);
|
||||
stmt = build1 (COMPOUND_LITERAL_EXPR, arg1_type, stmt);
|
||||
|
||||
innerptrtype = build_pointer_type (arg1_inner_type);
|
||||
|
||||
stmt = build_unary_op (input_location, ADDR_EXPR, stmt, 0);
|
||||
stmt = build_unary_op (loc, ADDR_EXPR, stmt, 0);
|
||||
stmt = convert (innerptrtype, stmt);
|
||||
stmt = build_binary_op (input_location, PLUS_EXPR, stmt, arg2, 1);
|
||||
stmt = build_indirect_ref (input_location, stmt, NULL);
|
||||
stmt = build_binary_op (loc, PLUS_EXPR, stmt, arg2, 1);
|
||||
stmt = build_indirect_ref (loc, stmt, NULL);
|
||||
stmt = build2 (MODIFY_EXPR, TREE_TYPE (stmt), stmt,
|
||||
convert (TREE_TYPE (stmt), arg0));
|
||||
stmt = build2 (COMPOUND_EXPR, arg1_type, stmt, decl);
|
||||
|
@ -132,7 +132,7 @@ extern void function_arg_advance (CUMULATIVE_ARGS *, enum machine_mode,
|
||||
tree, int, int);
|
||||
extern int function_arg_boundary (enum machine_mode, tree);
|
||||
extern rtx function_arg (CUMULATIVE_ARGS *, enum machine_mode, tree, int);
|
||||
extern tree altivec_resolve_overloaded_builtin (unsigned int, tree, void *);
|
||||
extern tree altivec_resolve_overloaded_builtin (location_t, tree, void *);
|
||||
extern rtx rs6000_function_value (const_tree, const_tree);
|
||||
extern rtx rs6000_libcall_value (enum machine_mode);
|
||||
extern rtx rs6000_va_arg (tree, tree);
|
||||
|
@ -1,3 +1,9 @@
|
||||
2009-06-13 Aldy Hernandez <aldyh@redhat.com>
|
||||
|
||||
* objcp-decl.h (start_struct): Add location argument.
|
||||
(finish_struct): Same.
|
||||
(finish_decl): New.
|
||||
|
||||
2009-06-12 Aldy Hernandez <aldyh@redhat.com>
|
||||
|
||||
* objcp-decl.h (c_end_compound_stmt): New argument.
|
||||
|
@ -37,12 +37,14 @@ extern tree objcp_end_compound_stmt (tree, int);
|
||||
invoke the original C++ functions if needed). */
|
||||
#ifdef OBJCP_REMAP_FUNCTIONS
|
||||
|
||||
#define start_struct(code, name, in_struct, struct_types, loc) \
|
||||
objcp_start_struct (code, name)
|
||||
#define finish_struct(t, fieldlist, attributes, in_struct, struct_types) \
|
||||
objcp_finish_struct (t, fieldlist, attributes)
|
||||
#define start_struct(loc, code, name, in_struct, struct_types) \
|
||||
objcp_start_struct (loc, code, name)
|
||||
#define finish_struct(loc, t, fieldlist, attributes, in_struct, struct_types) \
|
||||
objcp_finish_struct (loc, t, fieldlist, attributes)
|
||||
#define finish_function() \
|
||||
objcp_finish_function ()
|
||||
#define finish_decl(decl, loc, init, origtype, asmspec) \
|
||||
cp_finish_decl (decl, init, false, asmspec, 0)
|
||||
#define xref_tag(code, name) \
|
||||
objcp_xref_tag (code, name)
|
||||
#define comptypes(type1, type2) \
|
||||
|
Loading…
x
Reference in New Issue
Block a user