Sponsored Content
Full Discussion: restricted pointers
Top Forums Programming restricted pointers Post 302171876 by carl.alv on Friday 29th of February 2008 10:34:22 PM
Old 02-29-2008
restricted pointers

Hi all. I am trying to use restricted pointers to allow the gcc compiler optimize the code, but I have not been able to make it work so far. I am testing with this code:

Code:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <sys/time.h>

void vecmult(int n, int * restrict a, int * restrict b, int * restrict c)
{
  int i;
  for (i=0; i<n; ++i) {
    a[i] = b[i] * c[i];
  }
}

int main(){
  int Nsteps = 100000;
  int n = 1000;
  int* a=NULL; 
  int* b=NULL;
  int* c=NULL;

  //allocate memory
  a = malloc(n*sizeof(int));
  b = malloc(n*sizeof(int));
  c = malloc(n*sizeof(int));

  //initialize arrays
  for(int i = 0; i < n; ++i){
    a[i] = i;
    b[i] = 1;
    c[i] = 0;
  }

  //initialize time
  struct timeval tim;
  gettimeofday(&tim, NULL);
  long tcpu = clock();

  for(int i = 0; i < Nsteps; ++i){
    vecmult(n, a, b, c);
  }

  //time difference evaluation
  double t1 = tim.tv_sec + tim.tv_usec / 1000000.0;
  double start = (double)(tcpu);
  gettimeofday(&tim, NULL);
  double t2 = tim.tv_sec + tim.tv_usec / 1000000.0;
  tcpu = clock();
  double stop = (double)(tcpu);
  double t_elap = (t2 - t1);
  double t_cpu = (stop - start) / 1000000.0;
  //print
  printf("%f %f\n",t_elap, t_cpu);

  //deallocate memory
  free(a);
  free(b);
  free(c);

  //show that restrict does not work
  int l = 1;
  int* restrict p1=NULL;
  int* restrict p2=NULL;
  p1 = &l;
  p2 = p1;

  return 0;
}

The gcc-4.2 compiler does not even complaints for the last part with the -O3 and -std=c99 options. Dues someone knows how to make restricted pointers work? Thanks in advance.
 

10 More Discussions You Might Find Interesting

1. Programming

Pointers to Arrays

Below is the program i tried to execute...... main() { static int a = {0,1,2,3,4}; static int *p = {a, a+1, a+2, a+3, a+4}; printf (“\n %u %u %d”, p, *p, *(*p) ); } This works, but i wanted to know why both a and *p are declared as "static". If we dont declare a as static... (2 Replies)
Discussion started by: Jayathirtha
2 Replies

2. Cybersecurity

Restricted user

A few of the other employees here need to learn "vi" in order to use crontab to schedule / unschedule jobs on one of our production servers. I tried to set up a login on one of my Linux boxes for them to use "vimtutor", but scrapped it and decided to try for something more secure, since there are... (1 Reply)
Discussion started by: LivinFree
1 Replies

3. UNIX for Dummies Questions & Answers

Restricted Shells. . .

Hey, Could someone please help me distinguish between a captive account and a restricted shell? Many thanks, L. (0 Replies)
Discussion started by: crispy
0 Replies

4. Programming

pointers

is this a valid c declaration int (*ptr(int *b)); plz explain... (4 Replies)
Discussion started by: areef4u
4 Replies

5. UNIX for Advanced & Expert Users

HP-UX Restricted SAM

I am having trouble getting restricted SAM to work by allocating Privileges to a "group". I can make it work by allocaing to the userid's, but would preferre to use the "group" option. Running B.11.11 Tried the following.... 1) Created a user group in /etc/group first 2) Used the... (1 Reply)
Discussion started by: Andrek
1 Replies

6. Programming

pointers

Hi I mash with pointers in C. I solve this problem about 5 hours and I don't know how I should continue. void InsertFirst (tList *L, int val) { tElemPtr new; if((new = malloc(sizeof(tElemPtr))) == NULL) Error(); new->data = val; new->ptr = L->frst; L->frst = new;... (2 Replies)
Discussion started by: Milla
2 Replies

7. HP-UX

Restricted Login ID

I have a task to create a new id that going to used by vendor. The ID profiles are: 1)The ID to be created is MUST be restricted sharing. 2)create for their own user account 3)unable to read/navigate/view other directories 4)unable to write to other directories able to create their own... (3 Replies)
Discussion started by: yeazas
3 Replies

8. Programming

Need help with the Pointers in C

I have a special character called ô. When it is declared as a character variable its showing it can be printed. But when it is declared as a character pointer variable its showing it cannot be printed. I am just wondering why its happening like this.. c1 = '@'; c2 = 'ô'; char *fp; fp="XXô"; if... (1 Reply)
Discussion started by: sivakumar.rj
1 Replies

9. AIX

Restricted shell

Hello I have a user with a Restricted Shell on a Aix 5.3. My question is about if I can add one more path on the home directory. I mean the user have in his home directory. for example /test/my_application/logs but I need that this user can view another log that is on another path, if this... (1 Reply)
Discussion started by: lo-lp-kl
1 Replies

10. AIX

Restricted user

Hello everyone I need to create a restricted user or a special user. Here is what I need. I have this path next to profiles I have server1, server2, server3....... The user that I have to create I need that he can move between server1. server2, server3 because in every one have logs... (1 Reply)
Discussion started by: lo-lp-kl
1 Replies
FORT77(1)						     Linux Programmer's Manual							 FORT77(1)

NAME
fort77 - invoke f2c Fortran translator transparently, like a compiler SYNOPSIS
fort77 [-c] [-g] [-v] [-k] [-P] [-cpp] [f2c option ...] [-L directory ...] [gcc-option ...] [link option ...] [-O optlevel] [-o out- file] [-s] [-w] [-Wx,arg1[,arg2]...] file ... DESCRIPTION
The fort77 script invokes the f2c command transparently, so it can be used like a real Fortran compiler. It can be used to compile For- tran, C and assembler code, and to link it with the f2c libraries. File arguments ending with .f are compiled as Fortran source files. Files which end with .P are passed through to f2c, and files ending with .F are passed to the C preprocessor (invoked as "/lib/cpp -traditional") first. Any switches passed via -D will be passed to the pre- processor. If the translation is successful, the resulting C files will be passed to cc for translation into an object file. Files ending in .c, .C, .cc, .i, .s, .S, .m, .cc or .cxx are passed to the GNU C compiler directly; see gcc(1). All other files are passed to the linker. OPTIONS
-c Supress linking and produce an object ( .o ) file from each source file. -g Include debugging information. -v Be verbose; supplying this twice will also tell the C compilers etc to be verbose. -k Keep the C files generated by f2c around. -cpp Pass Fortran code through the C preprocessor, as if filenames ended in .F. -P Generate f2c .P files. -Ldirectory Include directory in the search for libraries in the final linking stage. -o outfile Send output to outfile. -trapuv Have f2c generate code to trap uninitialized values. -Wx,arg1[,arg2...] Pass the argument[s] argi through to the subprocess x, where x can assume one of the following values: f for the f2c step, p for the preprocessing step, c for the C compiler, a for the assembler (this is actually passed to the C compiler, too), and l for the linker. As an example, defining a preprocessor constant for the C compilation step would be done with -Wc,-DUNIX=1. Specifying the -f option to f2c would be done via -Wf,-f. f2c option fort77 passes through almost all f2c options: -C, -U, -u, -a, -E, -h, -P, -R, -r, -z, -I2, -I4, -onetrip, -!c, -!l, -!P, -!R, -ext, -!bs, -W[n], -trapuv, -w8, -r8 and -w66. gcc options The following options are passed through to gcc: -f*, -W*, -U*, -A*, -m*, -S, -E, -v, -x, -pipe, -o, -I, -V, -b*, -p, -pg. linker option The options passed to the linking stage are -static, -shared, -v, -V, and -symbolic. BUGS
To make debugging work, you need to set a breakpoint at MAIN__ before you start. f2c This script automatically supplies the -I. option to f2c. Older versions of f2c may not support this. This script is for the interaction of gcc and f2c; using it with another compiler will probably require modification. The fort77 script does not strictly conform to Posix.2, because it acceppts long options with one leading slash. This is done for gcc com- patibility. SEE ALSO
f2c(1), cc(1), as(1), ld(1) AUTHOR
Thomas Koenig, ig25@rz.uni-karlsruhe.de Linux Nov 1996 FORT77(1)
All times are GMT -4. The time now is 09:44 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy