Mercurial > projects > ldc
comparison dmd/attrib.c @ 73:b706170e24a9 trunk
[svn r77] Fixed foreach on slice.
Fixed some nested function problems when accessing outer function parameters.
Major changes to handling of structs.
Initial support for unions.
Probably more...
author | lindquist |
---|---|
date | Wed, 31 Oct 2007 03:11:32 +0100 |
parents | 0ccfae271c45 |
children | eb379601d445 |
comparison
equal
deleted
inserted
replaced
72:d7e764e62462 | 73:b706170e24a9 |
---|---|
885 } | 885 } |
886 else if (strcmp(str,"va_intrinsic")==0) { | 886 else if (strcmp(str,"va_intrinsic")==0) { |
887 llvm_internal = LLVMva_intrinsic; | 887 llvm_internal = LLVMva_intrinsic; |
888 assert(args->dim == 2); | 888 assert(args->dim == 2); |
889 } | 889 } |
890 else if (strcmp(str,"notypeinfo")==0) { | |
891 llvm_internal = LLVMnotypeinfo; | |
892 assert(args->dim == 1); | |
893 } | |
890 else { | 894 else { |
891 error("unknown pragma command: %s", str); | 895 error("unknown pragma command: %s", str); |
892 } | 896 } |
893 } | 897 } |
894 else | 898 else |
895 error("1st argument must be a string"); | 899 error("1st argument must be a string"); |
896 | 900 |
897 if (llvm_internal) | 901 if (llvm_internal) |
898 switch (llvm_internal) | 902 switch (llvm_internal) |
899 { | 903 { |
900 case LLVMintrinsic: | 904 case LLVMintrinsic: |
901 case LLVMmangle: | 905 case LLVMmangle: |
908 llvm_str1 = (char*)s->string; | 912 llvm_str1 = (char*)s->string; |
909 } | 913 } |
910 else | 914 else |
911 error("2nd argument must be a string"); | 915 error("2nd argument must be a string"); |
912 break; | 916 break; |
913 | 917 |
914 case LLVMnull: | 918 case LLVMnull: |
915 case LLVMva_arg: | 919 case LLVMva_arg: |
916 case LLVMva_start: | 920 case LLVMva_start: |
921 case LLVMnotypeinfo: | |
917 break; | 922 break; |
918 | 923 |
919 default: | 924 default: |
920 assert(0); | 925 assert(0); |
921 } | 926 } |
922 } | 927 } |
923 } | 928 } |
986 error("can only be used on templates"); | 991 error("can only be used on templates"); |
987 assert(0); | 992 assert(0); |
988 } | 993 } |
989 break; | 994 break; |
990 | 995 |
996 case LLVMnotypeinfo: | |
997 s->llvmInternal = llvm_internal; | |
998 break; | |
999 | |
991 default: | 1000 default: |
992 assert(0 && "invalid LLVM_internal pragma got through :/"); | 1001 assert(0 && "invalid LLVM_internal pragma got through :/"); |
993 } | 1002 } |
994 } | 1003 } |
995 | 1004 |