Skip to content

cleversonledur/clang_examples

Repository files navigation

Clang Lib Source to Source Transformation Example

This is a simple example of source-to-source transformation.

The objective here was to use an auxiliar struct to pass variables to a function. Then, this tries to perform the following transformation:

Original Code:

void func(int &a, char &c){
        a=10;
        c='C';
}
int main(){
        int a;
        char c;
        func(a,c);
        std::cout << "a Value: " << a << c << std::endl;
}

Transformed Code:

typedef struct{
        int a;
        char c;
}data_t;

void func(int &a, char &c){
        a=10;
        c='C';
}

int main(){
        int a;
        char c;
        if(a=0)
                c='f';
        else
                c='t';
        
        data_t *d = new data_t[1];
        d->a=a;
        d->c=c;
        func(d->a, d->c);
        std::cout << "a Value: " << d->a << d->c << std::endl;
}

About

This is a POC of a simple source-to-source transformation using Clang Lib.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published